From b9a44880c782782d63bd7f21288f0b1818872c3a Mon Sep 17 00:00:00 2001 From: Amy Wishnousky Date: Mon, 11 Dec 2023 15:19:29 -0800 Subject: [PATCH 0001/1212] 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 cbf822f6b8..7ddd07c512 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 0002/1212] 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 7ddd07c512..7439476cb1 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 0003/1212] 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 7439476cb1..162643f22b 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 0004/1212] 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 cffe2a236b..cab527dac6 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 7fd1ae018a..8e5eed54a3 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 0005/1212] 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 676f0a60ce..f4d86b4ba3 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 276cb8c9c9..e4696b1465 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 3bdb97c94b..a4996432c5 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 8d8e2533ee..b6b193531b 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 5fd8d8a5fd..38f4e44895 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 43dea219e0..7b05bf6697 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 0006/1212] 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 0fe737b017..fba6057d2f 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 0007/1212] 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 0000000000..46fe9f69ef --- /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 049d6ad622..86553eebfc 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 0008/1212] 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 46fe9f69ef..0e88b4e5e1 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 0009/1212] 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 0e88b4e5e1..ccb107559d 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 0010/1212] 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 ccb107559d..0000000000 --- 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 0011/1212] 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 0000000000..0e88b4e5e1 --- /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 86553eebfc..9e4a1a77df 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 0012/1212] 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 0e88b4e5e1..9aefdd4582 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 0013/1212] 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 0000000000..26a818076a --- /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 9e4a1a77df..1dbbec9e89 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 0014/1212] 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 26a818076a..27e990aa38 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 0015/1212] 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 27e990aa38..6795841048 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 0016/1212] 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 0000000000..7bb2b4edeb --- /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 7cd02983e0..563ac2869b 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 0017/1212] 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 7bb2b4edeb..69c746b75c 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 0018/1212] 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 4f1bd6c1d8..47155e3cdb 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 159c429e7f..de861c46d4 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 c9e47fc292..e3db26f763 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 0019/1212] 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 3e311500dc..dda90485e9 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 94dbf1ccde..3563f96d71 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 7d5c7b4db2..d4a4fe6668 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 477149438f..5d4e281390 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 9e419bf919..f8af826955 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 a24cc6cb36..ff5fced41b 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 0e5694dfc7..ecd6332e8e 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 c54f71c12d..ecc936307c 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 0020/1212] 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 dea101aead..5859bd08c4 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 d96f377b6d..a925d0b397 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 0e5694dfc7..6824c8bde6 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 fa5a88daa9..3acd81ed70 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 456d5c7133..4c92144c44 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 0021/1212] 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 bbd4c04054..96db147d01 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 0022/1212] 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 c46fd43833..0ae9f0de96 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 0023/1212] 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 0ae9f0de96..1e0b6c5738 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 0024/1212] 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 1e0b6c5738..d071aaddda 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 0025/1212] 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 33a73b92de..193a918f16 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 0026/1212] 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 193a918f16..62d606dfac 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 0027/1212] 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 62d606dfac..8197f0b67d 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 0028/1212] 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 9aefdd4582..6c671ea7dd 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 6795841048..afc2e7a9ce 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 0029/1212] 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 6c671ea7dd..af3a61375a 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 afc2e7a9ce..fcd81a5cde 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 0030/1212] 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 af3a61375a..652ec704cd 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 fcd81a5cde..99510307b9 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 1dbbec9e89..b22549c06f 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 0031/1212] 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 99510307b9..96d47c6df2 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 0032/1212] 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 910e02df03..d261390d68 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 0033/1212] 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 ccbfe48d71..a20e1a160e 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 0034/1212] 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 a20e1a160e..733713b6a7 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 0035/1212] 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 d3208941b4..679ffc1e04 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 0036/1212] 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 69c746b75c..7536de22db 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 0037/1212] 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 563ac2869b..a8a74ff2d7 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 0038/1212] 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 253de9e94d..99695ff790 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 0000000000..74dc357f83 --- /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 03a00af04c..35e1c6921a 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 0039/1212] 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 840af6a36c..0dc800208b 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 aece8877cf..36e7350dce 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 0040/1212] 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 74dc357f83..f3d03f7760 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 0041/1212] 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 f3d03f7760..789f5227c5 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 0042/1212] 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 78276252a8..edcce9976b 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 0043/1212] 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 789f5227c5..49dc470455 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 0044/1212] 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 df104d5976..e8b15f9005 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 634dc9f291..91a9fc7d79 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 512ae624ea..69bf660156 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 0045/1212] 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 edcce9976b..f9cefbc47f 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 0046/1212] 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 f9cefbc47f..9eb98b94a5 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 0047/1212] 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 7536de22db..a6a5ccec36 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 0048/1212] 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 a6a5ccec36..74de2c8177 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 0049/1212] 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 74de2c8177..561d155ecf 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 0050/1212] 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 54f6191224..3d97b74bea 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 0051/1212] 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 15c04e3b0f..3a463980ed 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 f8d402b838..9608a6c02c 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 2e6e126ead..9b3e694ede 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 2c6d5bb4fa..3ef99e9709 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 071fc9c192..a97330018c 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 c60d859b88..8b30d0111b 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 a2207a1ad8..6a5a36565b 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 01f55ec356..58e16a4db1 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 ad851c5bbb..ba1b06ea85 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 0052/1212] 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 58e16a4db1..7fe43b9559 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 0053/1212] 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 7fe43b9559..f44b3030ba 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 0054/1212] 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 ba1b06ea85..b07a1fa0ee 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 0055/1212] 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 d2fa1a11cd..2c73b2f8e7 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 0056/1212] 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 47a7d928d5..23e7c7abff 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 b07a1fa0ee..ab1f8ac040 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 0057/1212] 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 47a7d928d5..23e7c7abff 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 b07a1fa0ee..ab1f8ac040 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 0058/1212] 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 ab1f8ac040..7ca0ace65f 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 0059/1212] 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 9543859eee..7fa76df095 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 0060/1212] 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 47a7d928d5..23e7c7abff 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 b07a1fa0ee..7ca0ace65f 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 0061/1212] 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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�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 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 561d155ecf..ce37cee07e 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 0062/1212] 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 85a25f8016..720e33de0f 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 0063/1212] 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 a1a2874400..531f672d9b 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 0064/1212] 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 1c8cb52ddc..7343f0b3d9 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 991f464049..2260dd9645 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 87fadbc2ba..87cf212ca0 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 cfc0b250e2..047aba34af 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 e0d4242db2..da9fb11032 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 4ca437d019..2c9cdcfed2 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 df143e3c84..377aef7813 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 1dab0f2a63..0c9ee2d912 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 0850717e4c..155dcd7fff 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 7e1fab4903..01cb21c042 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 8a22a876fe..db31e6aef7 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 9cd3cc8bd8..f18b4ca87e 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 adb3a1e83e..6a7b5c8388 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 ca2f5e5b1f..c8616e44b4 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 7bcc74e888..4a7901ce9d 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 0df7cbc071..49e1184de8 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 0065/1212] 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 cbf822f6b8..73eddba934 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 0066/1212] 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 73eddba934..192fd05d58 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 0067/1212] 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 7d65ba7985..c1ba7cc30a 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 0068/1212] 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 2c73b2f8e7..9e70ed4a86 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 0069/1212] 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 9e70ed4a86..fb22bfeb6a 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 0070/1212] 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 fb22bfeb6a..93513ebafd 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 0071/1212] 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 fb22bfeb6a..2f7aab3823 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 0072/1212] 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 2f7aab3823..a6c233b0a1 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 0073/1212] 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 95d34bc4dd..91cedb7884 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 0074/1212] 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 91cedb7884..b239737a47 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 0075/1212] 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 b239737a47..51c32be220 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 0076/1212] 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 112a736a14..ecfc775e74 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 0077/1212] 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 51c32be220..c9eeb3f544 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 0078/1212] 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 840af6a36c..1aa940706b 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 0079/1212] 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 ce37cee07e..3daecca78f 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 0080/1212] 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 ecfc775e74..c374051f01 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 0081/1212] 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 3daecca78f..e66847313f 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 0082/1212] 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 c374051f01..b7faad6bd6 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 0083/1212] 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 e66847313f..12b325c5ac 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 0084/1212] 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 b7faad6bd6..86ad895775 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 0085/1212] 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 1aa940706b..300e26b7dd 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 0086/1212] 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 300e26b7dd..38c47b23de 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 0087/1212] 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 0088/1212] 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 893455edab..2090da157a 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 0089/1212] 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 43c1e29f5c..4cdacb5cc6 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 0090/1212] 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 eff111136b..fc33aed7db 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 f6bbfd9917..6d59a9e2d6 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 aeb9e58f33..8dd0d16314 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 3190212589..a7ffbaba5f 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 23e7c7abff..0bb402090b 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 dc47e09a5b..e8f3ea5bb0 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 4c6182230c..bc35a9c19a 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 9d44ce11f4..b373634b2c 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 3b351c5ffe..79059f69f5 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 9bb91a7e7c..0d79a66982 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 a4abebdc6d..49844105dc 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 9bec78ffec..cc67e3b727 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 e835858c67..98f2ab9a34 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 ce25161b6d..0df258c1f6 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 1d3dffd179..7b01650122 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 9bd380066b..7d152ae26f 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 25f1e7dde5..04e0b8c4ac 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 e4696b1465..176640a48b 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 a4996432c5..ce4026602a 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 9b946a5801..604fdbc580 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 7b05bf6697..6b91bd2aba 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 7ca0ace65f..55a5b4609b 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 5c934acfb5..497e291e5f 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 0091/1212] 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 0d79a66982..b637df086f 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 ce4026602a..a4996432c5 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 0092/1212] 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 3c0cfb0946..d5c15f69f2 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 c1926cd274..4fcdd08cfc 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 9785f9056e..d5bfe0f43a 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 d40541dd80..e7e5d3a056 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 4c4cd2cdc8..55d9691754 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 b7e7be166a..9961dd1c21 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 7d77830650..098179c4ef 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 7069b4797c..fff82c19fd 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 d325c77397..c6c3fd953c 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 47d1045b09..9527c8a653 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 b541ec3c64..8b8174252b 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 3582dbb7f9..e37df6dfc0 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 10ca342ab2..92e14a9af3 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 c8ad83bdfb..fe1959bf1a 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 59f7a9c34b..b81a4ff6fd 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 053820436c..964fe4e4dd 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 b9e1628b64..ccd132b239 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 f1aea9adb8..3f7841296b 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 e3db26f763..97ef6e0c74 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 9ede5be1d2..80dd506e52 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 3684631591..a001180d2f 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 52f91b4cfa..095a14a818 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 0093/1212] remove xamarin --- docs/index.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/index.yml b/docs/index.yml index ef1c16e4cf..5974cb3bcd 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 0094/1212] 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 4cdacb5cc6..5bb4754fac 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 0095/1212] 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 a6e9a50351..61ad524d75 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 0096/1212] 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 9c685c3560..2f1d87a819 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 0097/1212] 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 82a2bf89c2..927f74a595 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 7153251edf..98078392a4 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 0000000000..c07e34258a --- /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 0098/1212] 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 33cf7b507f..aec8d7d902 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 0099/1212] 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 aec8d7d902..a1957d445c 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 0100/1212] 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 a1957d445c..8705bd00a3 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 0101/1212] 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 8705bd00a3..546130842e 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 0102/1212] 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 3de64921d4..607b3c0ebe 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 0103/1212] 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 607b3c0ebe..2868186341 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 0104/1212] 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 962e3caae7..c08d6d7ab5 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 0105/1212] 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 c08d6d7ab5..1174ea2988 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 0106/1212] 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 a1f9c469fb..7de36922bb 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 zcmX`SWmH^E)3zPl1A{xk-6c4|-Q696PjJ`4Em&Z1m*DR1?i$?PT|ch-dDmBK&CK4v zcF(Tv>Z;?c4p&l;L_x$y{PN`sinNrN%9k&Yz|ZSkc-YVHZqLh#&mRaU6-kjV6%&L< zpEuB!!t%mjzEsB|y&A)O-Xj2|w4J_u`P%#62V&5n*zC)fj{<2iVKsMy({>nVy+ORj ztc#a-yIHPkMy-8)X>3{gvj{xK;j#a-C^ps4i_;X+IWDV_vl}5NO*SdVZEkCVqQwJ# z$&*&6gNY12xBbS8v9=4i`BKe6lj`i*BNqJV3sASwkIKb_`1rutBeA?`Oqm;|FzgS%D(mr)qx4%X~A9XXGk7Wg^n~Ww~p3kL{HBwPh+!NlV z@Gtl#Z#k+2vF@FV2!>5xT+edYawh*{ed?NDgI}?uZRL!t$YthZ{TkRlOjDwYlVrRD zMGyJB7+xAsa~+)E@awV56@1~$eRFY*F zg$oD>5aO-$7Rw}KHlD`_o2>DFAx4%cfvVME&|>f~(K+ujTL&ZzhiO~OT8!=YY>W=Q z?oOR3l_t`t<2yTUP~Wf@YC)%`2x6&~YDDkunyJyL=Wwt&gm(XQ5ANCU6M}Wd=adPC zOwytMc=oPj&Hhlf%fV&AohqKA*)358KOlQ7hmB2Um|y|PD(B|rOfY~wD~0pc;bCFF zAKkPzkzqBL@A}g(PzU`dvc*eOHw*8&Kf6TpempraHAa2f*o$!Wr}F~?126CHlKS+z zFV=$tAuF`Lv*OkjBfpCcHe^e-zt>60kqzZbybQde;3DIz;lm&%!DT`gz!B5ISiiL{ zW^`u{h&oWrRg#I$hE!MX^LAJ_B!}*;C{OB2(i*#X#~H+G*kwBddF5O0^AulN@`J(C z)^{JKss+3pbTGuknKZ$;^tW%apx-L=`~`KHnI1HW#UJBHS1$OJncJx{cc?g#o-icf zyy9fu*vhoCy;9H7CH;!;Z>Q7HN9s){en!4*|Ctcq=UWf=9@JeQmz7j!7gKYZ{WAY~315;fu?h-$s~00_by>E0lN9 z^CoDB7F8Q{^Y4$PcSnKQQ`lOV?=S+Zt<`=;HVwpfe=GBW#i*|5W3hOa8@T-mnza@w zeS)Y!M#krthoD#?V67d)jagit*jUNhRz$I67h;S17KA@(;)!bZpRFrKh<70C?>)xye$AYgw;U~nY%+p;;rfWAWAA*T#LQDy ziEa)zqAc&b@$W)EyMY<8Cks{fKk z7md#u;erwL1D>0inK|5~x&zO-cs|peMrON^Ym-DLMhEOdd*Qrk%8JRlRv=o!hK4>J z7raAqBYsXEbDJR+dMjhrpPXkR4^|p=M+2 z!YOE>pmet8s66M#RPgLiOm8Kil=aBIiuqP*t$(aB{Efd0DX4XG!NExhu)vE{4dj2*B~S&azfW?ob+EWRm&b3M*}46_z#ubkrl~Na|F&fK`|rbi zXSP{YX`9dGRdjKEd#oU#7SkiUbtM5|Ic1|v-#>RU$`<)TbNZ*t-=I_i?B-xkDVPf? z`g8go$@8%ZI9QA&9sd_~Oaz_YT`XCyd0pLtY3&5NGg`i_XovcXu@u6}g7I9)1*A-3lB>9v!9*3$-1w2(URcX|h2Uk(-Y`d-C)Lsn!r@~1 zC<9uQ5phP(#>Yo=G)y_5(wFxRL3bp{BraBc{XQ~}cGx7DpyA^n!yjKD0s`XwI=Z^P z1qMQ1JzVuXS5(mUtq4bdO(^GhC!74HndvL2fvm%69bNhr1r~#gLgtBexY}du zgn0%QfO#0&C@%NQ+AvYrc9-Q}+a(gP0I-Jwf0;Cca8(r7w^a&xj*FUUXzr6N)2CCX z^(M9k4LCH!Pm>OFj;42L$1eCc_`0vzx!Jp`At&G*da&r`Q{<2FkTZQ;{rq?^52kVY zQebCMM^`_(LaY6Z{F4*E&XZlx7Xlgv4&(47c;14tbwgyr_xZQe$+~)1y9#j-?DyzY zGf7PaF2SD0yMftpW~G%el~vWQ|HaV@xPG!tP%%3ENgD7$Sx>e2DGhfdnVI>@)HNqn zj*J=0pko>N)HlV+$==a-0VYOKpnt1`TI=6mJne$DtGN!QZDbv{#0IV7dfvW_`Pk*P zzwFX~(VJxNC}DR=m_Tw8M47yd@9UgPdX}hub~RxhF~B)qmjEl)1hX~elX0_$^ofaC z&1TmlLQ4grgTv|s!WFh4h58^Rn)$<958qg1&pA4bcV+cM9%F=msKf_z%TDP+ewjBo zOip{x+FY^L;tk`XEsG>-u0hzrDzR?P^3QVmy&XH2O~4~EoQVvh#SsMOV!{~lBC!(X zJQa{q=_qmo2~SsqvfUBiFRp(Idix{&H|e}>8Bd}*aod*hec1{{;ssMG6}?h|JYER| z$;^)Lr_wQJ|9X0=^-IuqVwDTxUDJ=}Gd&>B;oV3wEZ>Hd$I_caL_bG#)T149p+C55 za2L*C7f+@X_QJlWjjYa-k>ax33Z0G+q!6rAKB(QyX{vd;xdgt^YjX~FqJF4$weYhR zgUi+|o(?yMvgXA1f!|9-HD9Kd0g~SiErbTw5Yx+yu!2q9-tt zG}SFMH%1I~D=ebPQ@>?UN07~o{x2tarNxFwj$P{dwg7>}|6Z|+)U=IIkVL&HV>#7+ zhJ7E!H&QVz$-}h+G0F8Fhveg_)L%(qA787oWg;e*(W0C?_pv9c&oZw|xOx8f#nx&m zwJO$kIP~1)ZyCk8brMIp#%*dvE+7qu-&rCM^53uGX~B0T2L@3e`QrSN*~JrP!>$51 z+}>3EP@XzB)ECr@{rg#m$LoEKkb3z3UUtPUgq+-Iqez>c$JL!xkH_C$-%uZ|RfgnMU?msnGBwmeyEw z;$PrfRZpmA8KyNIX-WZneo*vN9uva$LMe3ZRg_u5T{i46b%Kr;>-p zI^I9~WD2zoUUBA??A7Hex2Vc&$x8IbowmLDA1Gb`xB4Jl&sN6YO$WJww}fuz1_w*{ z#sRgjQV^CuN^w-rOQINBc#+E?;|$(*{VKKlyi8@Uffxe3s?&{_=kc;%p{Np=0mfEl zVuioa4YLf^Vw}AC1@2w(i41Hol@C;M5-7x;7^L^->DD#L zlQv%q(~?s(<}q0*_iHY};~KUG7Pr>yF}qw0LhrvNHMv--q**e1$nxFf-%9FvRaz%^ zmx7qxU7s)pIL67A^2JC&QNs~g94G`~jYpwP#DJ4FkU3qLgsA4Prz0G1Pg@=+0*W0= zHgsIW*lBvjtH;Qf)3o()HBo6nCM>z24p|X77uhn}F-mutL( z1>~YXS#%Bp=`f}9A@dacAM`Abpx*|aaIzYwwY6bz#zn6N!nFN`YEe>VL_jF zkgnwddz~BAu3E|T5$N$%@Y5TWj*{k+IXBxF{7>7g zMGJ~~RuZ@t?MX}c0$Sd?T$99^=F45zS^|DSMFI(eHj_8~nz7t1`OH`u7MRuoTUfko zeh-wH0-cjr^Lc)C{s{{h$MZBUtjKh=zc=ciLA}!EKwNVOYI1V&n@*X}H2swms9vg( zBw~e?OupfV>dApmiMS`}eTXOb^tZIR>RMJ|AAuXSTuZ2+$Ao?m^q%Zqb!|h;;4yX< zoaJb@rC-79*_F|+*xY#Qlv(x|HQWB205Iy4f4jFQlY>P$_hctE_TgT1W}dXUEy@^w zgoQW|VV0L|xtb0=f8Z0Z3-EJM*K5U=#aI{Av*PZ*uPKqe`8z(iM zY@DqJ+*g*&}SGW^P&+|Inrj=TSaz`6ObW8`3C>!iT^4)m&sEEI_D%DlH<8?a- z^-+lAbEuuJ!`SFVL#v7n{BMK(=*2Acr$1NHfmCJ+?Il(A&Z(12 z=?j6dgI2fM#YO{?@dm-xQfB_SD`aULG}*t^>kqloY^vTRwj4M!@knkSJ8cMq5x`;X z&=AP&^Q1rfw`ll|X$=Hg#&E8W9@K|S_5SmhKnHHH4y8HM2;461=+vCL8$%=u1zXFM z4Q}qiHCS{D^+-QFMv?yV%-WoSWvxIUA_cI{jmxhK`%R(9Z;7yMWU63gXH zraIfD-xiFzGx@%zybl>8?`eupx0ehnX4X&R4p3H84p_+~LVI%~4Smq1wCW>JZW$!g z;}%Y*Tc#DZ__DJ`SeZT371LQ^WuCVg+*yopin1pY6Ind{S9wKEzdo?3HDU@II`4!1 z6S!EtU6bzgN4Mq@#d5yqT-|ozr*vILEXzF;h>Xl)WZ zneS+&LVKuOn=%?>wbVXt+GPrOb?xo6YIQmyAmK1u-ZkXub^4`Y&`T=QXJ`Aj4h)

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 ff5fced41b..860b09c8ca 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 0107/1212] 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 ffff1211a4..40b42daf44 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 29b1619156..1f4959941f 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 3b1480c69a..04f2bd984a 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 58a6eb6738..f2a248f9a9 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 4c494efabc..502e7552b8 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 585855bbfe..d05ead9a3a 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 0c8f47f3f0..c41f1893c7 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 a8a8db35d4..b467ad654d 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 5bb4754fac..a107e680ce 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 72eeb2d1cb..43d007c8bb 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 db96fab993..ed6244dc98 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 73196c2637..6932e17a30 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 51f688e876..9f4929c4a9 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 a8b308ae8a..9722dbc4ea 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 0108/1212] 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 860b09c8ca..8761ce1298 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 0109/1212] 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 8761ce1298..8243c6bf02 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 0110/1212] 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 8243c6bf02..694bc1922e 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 0111/1212] 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 694bc1922e..1f4d4992e3 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 0112/1212] 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 0000000000..5f452351b8 --- /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 b22549c06f..015c145a85 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 0113/1212] 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 5f452351b8..db0a47e07c 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 0114/1212] 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 db0a47e07c..9baac40db6 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 0115/1212] 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 0000000000..a924afd7f2 --- /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 015c145a85..823bf4e3a7 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 0116/1212] 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 3a43c74acf..6e162612cc 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 3e8ce70473..85424ab6e0 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 0117/1212] 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 d2ce5e0b51..e708ea80e0 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 27c7ee698a..7f320909b9 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 d6cf9b9e02..ada04edf00 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 0118/1212] 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 a924afd7f2..3c7661b4ab 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 0119/1212] 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 3c7661b4ab..bdd658d37d 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 0120/1212] 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 e35858c146..d2caee5183 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 0121/1212] 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 d2caee5183..4b7fa412b1 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 0122/1212] 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 bd1c16ed79..7525b47d2a 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 349708fa55..876aed188a 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 bfdbfb7346..5e54689e96 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 de5eec7bcf..8640f0c528 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 0123/1212] 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 4b7fa412b1..60666e3f29 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 0124/1212] 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 7525b47d2a..5f53625ea0 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 89830e7764..a9f9924a0d 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 0125/1212] 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 ff7c061c28..6ab3c48d6c 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 0126/1212] 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 6ab3c48d6c..980b3064f3 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 0127/1212] 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 980b3064f3..49f2765f75 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 0128/1212] 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 49f2765f75..9a02e0cfe9 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 0129/1212] 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 9a02e0cfe9..abb09042bb 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 0130/1212] 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 0131/1212] 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 5f53625ea0..a3a4ea0a5d 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 876aed188a..fa085680f7 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 a9f9924a0d..24ec86cfd6 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 0132/1212] 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 823bf4e3a7..fecfcb6981 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 0133/1212] 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 fecfcb6981..61bafc57ca 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 0134/1212] 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 a3a4ea0a5d..963d9a06cc 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 fa085680f7..6275e35006 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 8640f0c528..b2c961353f 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 24ec86cfd6..e1b3fe1d0a 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 0135/1212] 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 5e54689e96..42d238f49a 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 0136/1212] 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 963d9a06cc..6f0cb7d231 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 0137/1212] 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 6275e35006..d04fc5f6d3 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 e1b3fe1d0a..776ac6f114 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 0138/1212] 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 9aa9613702..f6236f9679 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 5c2e0f0847..f40795d15e 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 8ddf377080..a9e92a75d1 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 0139/1212] 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 bc39dfceb8..c01937be6c 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 0140/1212] 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 be3feb313d..6081969b7c 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 0141/1212] 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 7fd5128bb7..d3dea8d891 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 e1255cb13f..eb65022119 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 0142/1212] 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 eb65022119..c401e03db9 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 0143/1212] 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 c401e03db9..3199bf376e 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 0144/1212] 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 d3dea8d891..6e9e8c9439 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 0145/1212] 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 3199bf376e..ac0de8bdae 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 0146/1212] 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 ac0de8bdae..bdab75809d 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 0147/1212] 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 bdab75809d..765cb85caa 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 0148/1212] 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 9baac40db6..95dfdb1f1f 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 bdd658d37d..f6a7bc90a9 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 0149/1212] 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 f6a7bc90a9..0e760a8154 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 0150/1212] 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 95dfdb1f1f..969f5847b7 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 0151/1212] 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 0e760a8154..cdc18a407e 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 0152/1212] 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 13341b3094..e7b8ef8aaf 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 0153/1212] 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 3de04be3d2..21849c9d15 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 0154/1212] 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 c019dc5f8c..806b205a3b 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 69b8fc155d..9c7f028ed7 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 14b86fb044..b65d5c3ea2 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 0bb402090b..04c6031405 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 0155/1212] 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 bb4996f2ad..37703a53fb 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 2e19584edd..9051b7fae9 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 b59e41f224..a119b8eb14 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 7265d140e1..133484cb32 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 0329689f4c..6eeabda6f4 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 7b64275549..e206d537cf 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 f8f8926917..e4518cef9e 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 74ba8fc4ce..1607802410 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 6772fe813e..f339588c6e 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 edd2ae4ddf..ee9bac8bc6 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 0006c06a83..3dc40659f7 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 2d767ed280..ef78df1ffc 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 98b10ece5b..a172bccaea 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 3729c2bebd..b73bc7f4fb 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 918f0ecba9..0d7d0284f4 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 7343f0b3d9..95a909136a 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 1b57eecbf0..b2939192a2 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 dc8ab22981..0890f6594b 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 ed95473112..749a96439b 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 b2d84ff608..bf7a2e2893 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 e94b1110c1..da78b65d11 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 bc1cb41d24..6119ea7428 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 336a12c33b..1a0535171e 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 752103c945..44486d8ffc 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 8c056ba671..41509513e3 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 cca4371b50..b786fcb6b4 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 5c0b32ebda..0bb5fff6c0 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 6b65cb30b1..c12c7051c6 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 343b25f91f..bddcb01e69 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 9086c09dde..858162faf3 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 082de1f7b9..16872cbd1a 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 314202ddd9..8737941bcd 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 86313c3916..bc1f2f17fe 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 508a2012a9..a7e77c3fe6 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 296364799d..8f601eef05 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 c910a9bb5e..1736de4824 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 bf074911f6..7b7780dfbe 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 36f731bacf..bc5c9b2cf8 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 f88f88c341..58e7723486 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 e068e19ef6..92993bd1f9 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 7420162cb2..dc8745b0fa 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 0156/1212] 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 969f5847b7..54dcf037bf 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 cdc18a407e..9e4f9ef746 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 0157/1212] 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 54dcf037bf..390903a605 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 9e4f9ef746..0074674044 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 0158/1212] 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 b65d5c3ea2..7e5ede5979 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 0159/1212] 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 ec01abc830..2f4d1f351d 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 725ce91a6c..0067e42718 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 d6f004eaa5..14a7f7d727 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 7012f697ae..f7a44f29ab 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 15940afe9e..3192bead3b 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 0160/1212] 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 b3ae0ce888..a54608facb 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 2f252dc766..85df9e569a 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 0161/1212] 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 59fc3131c8..8c4a303bb8 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 f3a3546d39..e4830eee92 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 0162/1212] 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 0bb402090b..21a3fa6c80 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 0163/1212] 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 21a3fa6c80..32e6fabed0 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 0164/1212] 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 32e6fabed0..8bdd8d835c 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 0165/1212] 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 bb260ccf93..211080ac04 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 927f74a595..01159f65cb 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 98078392a4..a3b0c97ad5 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 0000000000..6b25838461 --- /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 c07e34258a..a3a0dbe535 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 968094a0b5..17ef77e520 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 0166/1212] 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 fc33aed7db..d12d6a6217 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 0167/1212] 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

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

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 8c4a303bb8..350f29fbc2 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 0168/1212] 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 6d59a9e2d6..1089919e6d 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 0169/1212] 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 87f1ff8efc..c3b078c75e 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 04e0b8c4ac..7e21f69e2c 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 f44b3030ba..03b421b60e 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 6b91bd2aba..1b66790fb1 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 0170/1212] 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 211080ac04..4d27f9e885 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 6b25838461..763d9ab715 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 a3a0dbe535..c0d4b05b52 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 17ef77e520..a126111e98 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 0171/1212] 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 98b435fbb4..71dcd09725 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 589d119aef..4e77c83690 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 ffee2908c1..f5f5e5671a 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 c281450faf..146b6502e0 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 0172/1212] 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 41d536acb3..d839858cfa 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 0173/1212] 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 da1c2c7774..41645840b3 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 c747397334..72aea3d96a 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 73c3d4e6c8..69724de4d5 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 df9bc0d8cf..c88366385c 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 347d457d89..23d430be1a 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 0174/1212] 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 8dd0d16314..73e6b83618 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 0175/1212] 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 d64bb155be..3abd7f9ea4 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 0176/1212] 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 a7ffbaba5f..5e9c92e049 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 0177/1212] 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 e8f3ea5bb0..e7f0eca9da 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 0178/1212] 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 bc35a9c19a..b4876ccc6a 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 0179/1212] 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 b373634b2c..1a597951d4 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 0180/1212] 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 79059f69f5..6ad3bb045b 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 0181/1212] 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 b637df086f..2b2fb65959 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 0182/1212] 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 49844105dc..bcdc2b953e 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 0183/1212] 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 cc67e3b727..338e4eceb9 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 0184/1212] 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 9114479252..4d13d42d99 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 0185/1212] 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 98f2ab9a34..87483c7cfe 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 0186/1212] 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 0df258c1f6..688a5b80ca 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 0187/1212] 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 4d13d42d99..61a24b9f5a 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 0188/1212] 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 fa4967f500..b5eee7e9d1 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 0189/1212] 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 7b01650122..a177eb0449 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 0190/1212] 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 a177eb0449..1247a310c7 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 0191/1212] 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 7d152ae26f..5bd2e404ba 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 0192/1212] 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 5bd2e404ba..0ed99e5e5f 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 0193/1212] 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 0194/1212] 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 257ad65325..bcd58b4a3d 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 0195/1212] 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 af0f96e6d6..3ea53942eb 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 f079c117af..1cffd68521 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 0196/1212] 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 73e6b83618..1355b9fdc7 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 0197/1212] 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 b5eee7e9d1..691f9c0e36 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 0198/1212] 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 e4df96bfab..7e2adb2d78 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 0199/1212] 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 e4df96bfab..7e2adb2d78 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 0200/1212] 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 7e2adb2d78..8adc14a6bd 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 0201/1212] 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 4371a12db0..5669fa0e8b 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 a2379c0484..f84d68a3c0 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 5859bd08c4..9b8c5c1bb4 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 2260dd9645..436a39de91 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 1ad98c4dc5..bcec154714 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 2b33716eae..e3fe3e05b6 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 1abfb48f28..957edb7430 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 a9c623188f..ad4bd650a1 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 e7b8ef8aaf..2b9437d574 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 5f25751635..4b00a1915b 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 555087d4d5..967215bfa0 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 1f4d4992e3..c94d758d41 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 0202/1212] 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 078c550ff5..3ccdd13da6 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 0203/1212] 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 f84d68a3c0..39d625f0e1 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 9b8c5c1bb4..0c522131f9 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 4b00a1915b..2a38869720 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 0204/1212] 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 2b9437d574..fb06216c8f 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 0205/1212] 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 4d27f9e885..d35055e4b0 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 763d9ab715..6006ea5589 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 c0d4b05b52..6ea96da00c 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 a126111e98..44a4e4020a 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 0206/1212] 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 01159f65cb..82b9c94c7e 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 a3b0c97ad5..359c9f178b 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 6006ea5589..f5c387bff8 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 6ea96da00c..283dc2e3d4 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 44a4e4020a..9a86902b30 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 0207/1212] 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 82b9c94c7e..a684465018 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 283dc2e3d4..5776c65393 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 0208/1212] 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 5776c65393..7b08a72926 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 0209/1212] 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 6bdd20c289..095b3eef4a 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 0210/1212] 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 c94d758d41..49f969d612 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 0211/1212] 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 d35055e4b0..b35dbba5d3 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 a684465018..ce4dfeea84 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 359c9f178b..cf3a024e2f 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 f5c387bff8..3ada7bb26a 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 7b08a72926..ff54649d87 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 9a86902b30..f2a91fc158 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 0212/1212] 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 58e766c120..2101a31f89 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 0213/1212] 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 a344d4e6b5..8c910e2f0d 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 0214/1212] 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 8c910e2f0d..d7eba2d5c8 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 0215/1212] 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 49f969d612..3ae34b23c8 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 0216/1212] 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 3ada7bb26a..5baf62190f 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 ff54649d87..530735725e 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 0217/1212] 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 b35dbba5d3..0dbd505fc5 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 ce4dfeea84..2b8ad1fc5e 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 cf3a024e2f..aa28112751 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 5baf62190f..36b4401ac8 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 530735725e..ced3dd6fac 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 f2a91fc158..2fb7455eba 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 0218/1212] 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 36b4401ac8..0565ba7f84 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 ced3dd6fac..49fe9346c5 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 0219/1212] 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 2b8ad1fc5e..55fb9991c4 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 aa28112751..000f54cc77 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 0565ba7f84..7efe49f2da 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 49fe9346c5..b094fe231c 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 2fb7455eba..34411fb166 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 0220/1212] 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 34411fb166..b78c835fdf 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 0221/1212] 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 c3b078c75e..d36408ba98 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 0222/1212] 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 c3b078c75e..147af26130 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 0223/1212] 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 cfcf2a0c38..fc53268609 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 2a5a4412c1..efa2cca286 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 cc4b84b0bd..0701824a21 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 4451365a0e..8f2aaf236d 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 de0f6e98ce..5c9ca5d58e 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 5e934bfd26..28291b7a9c 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 e4f1f9cfb7..3d89e65caa 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 43a9a54ba6..f01bf458e6 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 54b1235ef3..a878828337 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 f9861186e4..86d34f9fb7 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 857dc4c035..7fac6abd1a 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 dfdbaae96f..c095e8cada 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 d512c8f402..f2428d8e7a 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 32669912be..1c19f33cdd 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 af736b0495..753367555e 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 551c3f2f5b..2c02d593fb 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 e7ad81c8d5..29baefa191 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 10ac9aab95..2c7e2716ed 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 ab59ede9d1..e52bfcd132 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 240dd065e7..fbc30334bf 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 5bb7063b2a..a54aeb9049 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 8d26f62201..faf40bf858 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 0224/1212] 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 080aed3268..ac02613e06 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 0225/1212] 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 c2185baab2..6f6910fcf6 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 0226/1212] 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 7efe49f2da..29ac42b404 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 0227/1212] 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 6fa2feebb0..67dc6d520f 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 0228/1212] 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 d6a22e7b7e..0000000000 --- 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 189349bd9a..0000000000 --- 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 7231cf6266..0000000000 --- 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 35de11091d..0000000000 --- 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 b27ff51d56..0000000000 --- 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 7f86f82da5..0000000000 --- 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 0229/1212] 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 5e3103d317..a244e55d07 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 0230/1212] 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 1fe2da4303..c66230825c 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 167fe9c3c7..aee8c24d0c 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 952645712c..85a6cc2afe 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 2a38869720..8a647cef02 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 7bd4aab539..72ff005c98 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 b88cbe2494..6cdc8c69fc 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 111cc7fea2..78f02b340f 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 f01b65202b..20e60accf9 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 0231/1212] 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 c66230825c..b332716189 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 6cdc8c69fc..eb5b16e095 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 78f02b340f..8fbbc42ddf 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 0232/1212] 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 85a6cc2afe..825700de85 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 0233/1212] 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 aee8c24d0c..651aa91f66 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 0234/1212] 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 72ff005c98..18c273ec9e 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 0235/1212] 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 67dc6d520f..5c478a5fd9 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 0236/1212] 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 5c478a5fd9..d31d01fd41 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 0237/1212] 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 40b56f6bb8..aba7db1983 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 0238/1212] 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 0239/1212] 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 f64f4104f9..5cc14b1695 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 0240/1212] 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 29ac42b404..20eff8492a 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 b094fe231c..63539fb5ce 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 0241/1212] 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 aba7db1983..ef292a85a9 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 0242/1212] 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 ef292a85a9..765ea1c32c 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 0243/1212] 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 765ea1c32c..98b7d5d177 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 0244/1212] 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 bde434d3d8..fbff456b61 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 4bd7aaf67e..d3bc7430b5 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 ab5e723a02..25d66ae957 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 0245/1212] 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 ab5e723a02..a2be989679 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 0246/1212] 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 bf6cbaed0b..cc50d74596 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 b123e94431..6fc1201500 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 9fa2b99397..0108e2bff6 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 5c8363381c..e76f69daed 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 332d47be88..5721f44c9a 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 ea48d339c2..4eb7e70d3d 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 02f7ca1cfb..24268a74b3 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 120bdd9d5c..040d608c66 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 4f9b3c4ba7..9e664b598b 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 55e18d0b57..94f1c289d8 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 c5924402c2..4fd3153854 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 36f7004267..0d9a905551 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 0ada6f4496..99ce0bc558 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 d8a878c891..2bca3dbbac 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 bf36a9f791..486396cf6a 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 79320770d5..33c5039914 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 0247/1212] 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 85cb05379b..e715fe2ee4 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 0248/1212] 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 0d197f9619..dd59fa224c 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 0249/1212] 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 a5ab73d417..542e7de92f 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 0250/1212] 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 b4a5f31213..1f94c8f59a 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 0251/1212] 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 690566a0fc..b15c7b4a3b 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 0252/1212] Update README file --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index e2a4e7c444..816a2293bf 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 0253/1212] 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 ca9bea6c23..e81b1b8ce4 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 8709404d4c..6b31479ab8 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 1bad3b4dd0..bb3e3e8b45 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 2e10f1ee09..0e3837b912 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 3c6f905373..76a5f50581 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 db9e83c08f..b84c99b21f 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 d928cc4c0d..9b2c9aa3e6 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 0254/1212] 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 6b31479ab8..82de69ea28 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 bb3e3e8b45..2a2a3b87b6 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 0e3837b912..09cd09dea3 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 76a5f50581..aad03f0a47 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 b84c99b21f..f50f041e64 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 0255/1212] 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 9b2c9aa3e6..d0a6ddd7c4 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 0256/1212] 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 46dedc00da..39ac969bab 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 a050b60ed3..32e05f8ce8 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 ca9bea6c23..d44131f366 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 0257/1212] 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 da6d618984..c57ae9694b 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 0258/1212] 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 961f2945bb..b34a559f80 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 0259/1212] 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 ef45225be5..023338c378 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 8939a08776..c9686cfee7 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 3609f413ac..7cb4850071 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 0260/1212] 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 20eff8492a..629f0b7a5f 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 0261/1212] 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 629f0b7a5f..d6686ad43b 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 0262/1212] 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 d6686ad43b..20eff8492a 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 0263/1212] 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 20eff8492a..0f6f6d5709 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 63539fb5ce..edf924acc7 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 0264/1212] 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 3d8fc86562..fda7e96615 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 69dede7425..b1f2e320dd 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 a0eb85dd1a..f3a5d7895e 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 0265/1212] 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 320d487d28..68b900c9dd 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 0266/1212] 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 cf277036fe..f5599c93e1 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 0267/1212] 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 af053fb4cb..cfb489fbea 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 0268/1212] 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 cfb489fbea..6de6c2d6a2 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 0269/1212] 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 565b248630..801be55d0a 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 a7e7375d13..f9dd6560fb 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 3ae34b23c8..77712f958c 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 5f4e4a2587..49a164d193 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 f217ddc754..34770527f7 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 0270/1212] 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 00b3976e16..fedee2dee8 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 3ae34b23c8..bca6f4b9f0 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 0271/1212] 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 fedee2dee8..073b6c06ab 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 0272/1212] 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 0dbd505fc5..3063cfc32b 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 0f6f6d5709..21ad9d8744 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 edf924acc7..3b1d44b766 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 b78c835fdf..5749d0c236 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 0273/1212] 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 21ad9d8744..21289559b7 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 0274/1212] 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 70addb2b9b..ffc4f939dc 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 0275/1212] 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 98b7d5d177..e6e2682956 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 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 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 zcmagG1ymiu(k_a-B|vZw8Z0=$0t9z=OK^904ess|Ah=5iY$Ukr#@%J(Zf`i}{&&6g z-d*d?3NYH;RrS?Z)zvczSCp4PMa>7thwXvvAM)1Hfvc0616BHCi&)W}lzg?*@6qLKU)Hh*Ocm0!g zKX08`k2^mRREz4&mPggaIl`(bMXo`t3~g=vbmL~dpPT8>5wHy(KISU(&0BPJnd)U# zXWQ^ZwpVc}8P*aK{NYifgO*6z;B~BTs%>yKPC>@^zP1oQYhQm!W45t5TnZ%{yp5F* z6coIbPVxI!o4oft^oiv@%V}Hy1i8$*%yK%dFRFe;6UKrQ#`+kkc~NcmYdg3g?QdD1MN@(+Yc-M6C zL%j_n?w}A1LCrAB@j&t0vU`dKopZnRtsVF|8Pt26pSQ(q3k)$=ymdxZ6nAwKfk}3M zse%nE2cx<9Zso6IQ3S_zhZ*IM(^Qcf+!O7k-oq9lX_bsIo|19RQer;+;xKl zF0M1pE#IUQE)MZMdFfNZ?CNN<^Im#Jr#{W6lCqKW1Kr(;3ZHKjO2iNgT$F0ue`qYN z4=>qN-Ba0Ii#df^zPhIJ(?NQKQTcttQIGpS1HB{iGiz`q!!+{6d>c?RSG3i+N~|4! zhI_fo&K@f(!t6}k?Kbq-<{<~xW;5gC#E>E$P8#t73mqs|N)o!tHOHxq$Wrg*llb9X#qM(N7gOaiAN2r&PZwO4r^A~1X zv!(FH|t_3_r(wY@;?dIC82^g zsbtn5?uTZvPwaSt;n>&Z8sOY@QNO=d*XZT_uP0Mt<3f02erMvRLhnUZ_n*U1_wFkd ze?*nJe#g_vCOg&k0e4XlYJfb!u@=i5_zz>L3*O9vuWKMs?W>R<1}IhEqgUfa$NeO10jP`$s#?mlvX8 za1}-H)6I4y=yBy#@U~TLS?J|ETnnV*%*z*8M9!*hthaiz29B z{-XEf|np(x~9| zyvlNu@A>dxI@aKJpWFEh-vkuZ(EUF7hS{koPeHGR@>d)i3oat zNx(0|LeGCs`1bt#Vz3HGJtII-SR(4y9*48ju|>q#s9~36f4Q#`O&|7%+S|tc&LBlN z{J+ahTjyMN(G`tEY5!Dvm8Sd^d;x#1%Qx>(y<$Xq0*{X+BG0PrxD=?1d3527mNtzOguj2cVz){jY`yFhfOYY>#sI>ZOa2dtAMp3M$Cx_#3v*{kj{?3H->< zSN>rTqLxrx23US?qHc`C( zxNbhPtYQuenrZQy(*T~*oY<6_V3$k1eb+Mi8^#Q z!-WXq?J^F#%;-Q_yV}wt&#>WE27|v_$nv_mHDCLK6RkgnWJ|?(AU2ZUypqxPlZ&f&Bg+#iSg0SLX-_%+S%txFgP1%%wmmXDww%w{|9YGX}Gh{cu6i76)5u|ZF_0a%Ue<0 z`-R2M3nG*!Eh_XyJc2-{FV<~kvK^Ys%KM+6{m(3OzpFp}v^TabLg*QjH6+DDuEmUc z6#8CQZLQQ0%;&ED>VbET+)q1ZIjFw0%P#NSmSf4hcE`dX1{QRi%8bSRJ352S2D!w- zypJdEv*C6oBfrTP6sN3WN8#C_cwnR+otnoCu;OGI#5jC` z?bh+f?A4(Tq66#(`h+*HfEe^{(-{4%NO)h)@Nz)tXo?DP613OPf9wW@{+!&i$SQXl z%>RJh8jE$6HkggJ$WeutOvcoB>Fp0iCyIzjC@3#2HSY;U_l}5a{l3t@e+qElXRp(z z9gv{O&FUbe%i#XE!qggp=;PwDFShI?{Umi_v(OH31;PFdgIADzYM?nQ73b7+w zDj||hyv{%K`P^gkmZzU6gX3^@nnqVA+MfzFE`+~SjqSv0no3UkG@3oF5m0XbOJoA8 z`I;1X>7(Nr-PTyqyuHo@3*@5Q%flHMfYAG4d_#AQ1qt8iu55q1ZcXuxiM(E1R zXJsDWG2oAXQHq|(->w`?v>EL+xxl5YsH7#>ww$CS2V*(jxLAD061qGjfMfuS8UWM8 z?@j!Etrgm~>Ea~}GDAHcmvnEe{}M8M(!8dx`nEYgo-|)NOmF-c%iKUbZp`&571VFP z^lS17f^=bvII6Gl9AxzNAf86k3wb1AQU_zPU2QfCy5BZ?o6~4kHD-Hk{hLs*dmJ9e z7E#B+O$7UK)E)?4WwX%6=Cq&1MT49v6rF9D$%=Y>um5Gmc582`kWvI^M`Ev?=So?A z59RYNNkn8)5W4WF+x(=E?b{gcO=Tgn_mU;fUOejh?(6MJwU;XBi$c!=_?Ls!f27#{ zVYKlWB2X=OIr|$7vJl(EnbL{X&pBcNuQ=?uaP#+6Y)4gR2<=LD>NBv-K%9EB2g9|> zwmd$a`dROxj}yyqBfLvlvIF_tP@Q5MEV>&FCIDFlhu!0|b2Z7$x{%g2uDjgW)$Hh# ziBoTcf`LRS(=Ff2UO)KU>0hSL>jmT#`)d64wnt+B^w#(GCez2}YTTk`6O~9(=DKiO z8};e_;3&t=!`XW}d!SmT$%@G^BcZm7$M!df9qd)WM&P# zBQT|zt2g2Ry7%UoebM z@gCO!#--k_AsyQ`BS^#i&|{miR*GN4WoXelC(a)N_T;NMcBvdQ`}?;m_n$AI*xwDV zmqiX{A|{}gBJ(b`{t6j)<`i0AA|OQH1kh#91kzUnD67HSs!>!N?l(fH(;xO zYN4=r0FfdXD}TM-ujTqR=k>Yug=Mu1()fCOp!kY+$^*pZ;)_wTcB6>d#COhXdat$| z!+T^NRX4IgLZ-1+^AH0;A0O=!=i7O9qOyCr-Ln4a?K!pa%Khkl`uYO4mNc!PTZ~h% zc2>E+^z$I1*vf{l|qi+qUk36V)C0F*xI^Y_DdUb%`-qkC6(#Tr6SeQg2AQm%M(v^X1F=FW-=Apsgj6WbdoDF{SW(9{m$;J=fSf zb-z+zXs%d)zHq0e#3i7_1BkcC%Lf9?te@0| z^bg%R8We?mxrV#nN0`j-zHJh@9zr-Bdb8bD@1v6bK&kAoAGoC$?r)Q~mq($Vf?gx- zAdhREUDV5b9U8hu4-YvL9?kVJuJPcr)vNohL8Yc4 zNfnh1pKK(@mKlQa6#Q>^#$=^X${3VSuu|?lW7$mt;|eNCB!2Ub*0978Z12OPzUh@D zu6k08zerMzyHIAVo-?-FKC!)&!PoMz1Cy6H*#^G40ajw~^q;JiuRG1ThfgPic;m0G z$D*ynPA|t!x%0|2%kBcH))aB#p;M)|eKWZYYXc`0ej`^UAhlOABFEmakj7h(-E5$e^o?f<1>P{I8NHp6ms?W7i&X&B(Kk)_<9h5z-?E*(8ETi2ID8tfl6-MqWNq` zr{o&OH0A7FIzhTKG|IeKbiTiy|45+;sn!`1d~W-0E?Mof+1*2G;oPbpsCb7Auh?=t z&TU5HI&7C`RvwA>wc|$qdw`#U%_cnLaPRbNG(;NqMOODl^PsWhwa>T7SI*C-3zVea zT%-2bYl#RqC}@9@6M`?#wC5V&I4D&wqJ6BEiEfbrFV(volPmiN3jVmDPqCBvtNs6~ zK!^`D@{t8IG8AWNk2$_QqVmF_q&2>yd)xXw#U^cVht3d>PX%Q@#J|>6qAo`#N2?E! ziA#BKg0XbbT5^_AGIYfE$q@zNVhdqWC zlF3(Knk&7l)hR7RQumCU)AX_B^gl%qEu{b79C(rBZAM*(4ov!h*?EG^|4gHQ2wUBz zqUcqb^DATTE&>&8aQTIe2 zXy;;kaBOVMo!|HQ8f;cdxR;l&FMgb}^6;K~7ZEYbpCrkG{RHjt#!Bu*w&5`|E^&^&(wO<<_an^M9s|HT*v)xW?|u7?M!4Z%q)afA!oV9 zsOMs5xb+Mu2~}v-BaASrPAXpx``oVd7YBEaoCvAZ8TEutPAUxmQ!Blz;==!I9B?Ro zAFcrv+^)Eh1?yDK0hzk6s)fY?Aa*Mt575}xfG%UWOw@;=K)uLSbJIBnK#Y)}S<4W) z`LE=xU%p7+iVE|Oo%oguev(h9SBlJrFI$n2kf?4AeHDZZCepf{EMA}WVD@jF)8=~D z{ra^7^ahOA+QP!)Vvu(0{BD$cO;!a^d(C0BUR%?zUm?SmreEX5#l>L)I<2bPT@Pn| zyYmaOv0YqED+oPbO;@+y5YGECFfizQop5Ta(!pkqzuoq9cdk+*-!-!xFG1RRRMiIg zb5!NdFK=a|sg(h{yrZ-BF!!w(08b>GCPt-R+lLf;U=(oaO+Jq|@$v7lDqCAy{chd- z`VDyH_T`1zZVLCQd2_#iuK(J|N2kQRO)GRi2;_im#HsmBpaL`~ITswBr%z0+~!svTR5MM->|l*-4EPQ1yM6Wn-0AJqO8LjYCK7M1TRv zAgMK@3jaKy_L!>ybRoL~X*(56lO^GGGzNggz2<#c`=kHsQ7*s71<>%@F()AQ@q8^{ zSc7R;@L_{Q$kKF*PqcUe9Xu>;TBFEG^9|VgH&rhW0S_ ztYggCB* z6~%DRZ7Lu3|4VBzBz#SPAkUvv2a^6vY#%7q%UvFCPB4X@&O~_pn)kn+2(JCxa^M&S zYJ#%J#3m8}yzKwGK={ANF`C+krI!i(w1KO^xbdU7r`lKGp_X`~tXyzJLbf-GB}?>! z2*DeRCU|_P0p0B^`8`PhRVfykl&f|QIwZ3Di7@+jv2RsWt?mS}n~p2)DNDisRx-tg zd#511U|&V=lgHf0!b^_rUk3V<&ktd32CoxE&TpI?IKt^<7x%gqtLI*~z06&87khMg z`qW4_;Rl{wyN~|#vNf3C7z54@mFe)Yf*Ady>60=J}!YqdOT&e$nNML=$_V& z*Fs<7p()|i&qBEt)8^xmdL1$gw3B|Qh0AEvppHCn>FBm1hDDLGgRu4S$L_a)Z$Kn}03O+k^)!9-n z7>LB=Qpdnc)=S_dVk>b2F8Jqss#JJyKljrNl=ObGf9cI770BZ;hUM?=p~ZZVS?n~6 zCaI<w*Kn zR(4PcZ5detbHv}w52*QQm;Odz|AIg6-{~TerLgM@qPgmx7%m!_DSyM6PI*xd(n)2{ z{3WuPPKz5&P!*8ZYI06k5RVlM>zAkAnf+}9+$`uSM@rxumPIHpC}%gSA-9*P>Lb7} zox+r@Ny}&;&3`!$?o1-FoG)S2P@qO&pMvbIkyLogci3-qC!yqYGq}q)vV5?nNodXr zj-pvS&7vv^rQPoRlf1n?jI9S>?8W-i!PDFi8L)W@i=1|tW{@A@LlaH3jN!hOzC_3C zucF>q!fXI<78+1N6lrr>Ey^d(@zG7jpIfen&g+j|f-~+6Nu|k;i&MUi zAt6)@%Dl*{!T)SbAGif2RlKVZ<62C}qyju?zg5aav%|Rn?NKJ7**}iVmV!%VYFm=; z`;8uKbKd<|TyiXiI-1ydS!{SyY^dW#R@3>b37-k!wb%Dr9nO@`DYJuBMkl@+EDBuU z{OCc#10u!Pj*_byi}_G^8J-HF`Kpra0UPbgL79|~K3)4a&?gQ(Y{$;jqUJvI4TuM; zA8_2|NO=iqkJM>&ynsF5Id^7^;&+lM%~_gq*yG*DpO89tbekP9w}76$D3|-LUTia* zJQ`5)>3y{Ga9n8iriU))<1_6XkVQo(il z)-eY7NC*F<#F2VJi*)Fk)JuACwGm5?=}>7k^kPv3@zxhr7MYE3Ly2Bks{~9W5?0pt zQ^&Fv(*_DG3`&LGjQNYB>9_>Qs>MkI{!cr?T28$1D_f(Frzs z|12qW1T#54WP3*P+fRQZgn}b@bgypB;KBHqI%#z=(BwzE^k*Pt)_7&eSP;>GX7q># z4*Qs<#{SnLHU;22s+&xG!>KfTt)Vqm{fM@d%9QDQ0Q6{LkDcTD72fqj*HuRH*M$19 zYR)sbTMshuV8rdn41$v4f>^MDi?kvg9W?Zam^tz^>q9luVku122K;G%>CZM<0TOU{ z$BHKyM>R}ttOnc>51_AO&q^vGQe^T z+g;P!H>dF%N0zI@(poNIf3 z{BOq^Q?Mo!U=e`tde6UO#wN66SU2y;&~EdDC6S+I$T2OrCFn>Z{37!Ij57 zY0Xi9Lf)D;2**kYE(n_hn-X@4frL+ z$EhVqmreT5x1-*-(7&mW*sLUU@VtJTCVMPzf?+vH0s!;p+?tGp!@qV`j&*g`^sTpa zTFs6k5_Kk;%?bQBltQpUe?UC4p%Q~i;Q;HiV9=IZ&m*b0qGu1Ni20tGz=SSunT5M} z`(O@J(cyDKIS$D7ElyKKw5lUuDY5&i}=Teu?2%GG41HlfKYK9t|!|R#4tT<&ET0kAeM9w z$ebL0Jy!G1zTA))7~ZZ6cNrYK9HsiEPgb%}I3!2q$XHxKK{o>-`C>tes>hTPvqFlQ zY~gIujn;xsQ>RC$haJyJrcC*Omy=(L=zy0{p=ofRw+@I_gbItD=tkF7`Sz1SxP^N( z+6Xk23DUqodJ5qfXB*JY9h8>vd~XWLajlYt^Q?B^MEh{cSF8+MyKVgHl#ec!-zV-Q~GZBqMQaNsKd~i9`*!{ zJ>TV1qEj7*iGRGPO!p1B7cSqnA*m^QJYLvzwjPqyM>~T12g3Inv;?)L>RlZ6D?^T| zlzcIXnHQ3mUj!{pfnrRjc+ZIBG%9M=m5+}qB`MK@xs1FTeW;JX1M{E`*Jq+kbpu#W zUh%DJ#UXLx7p1505}5F zXJC-%{nQyaBwuR83FUQ`^mhktjBAf6w}@Tjy@wTtg+=OnfF`kU9mB$gp4}0zyal$&qR`v$c8_o5fx$ zN0q~jl$z`DtlwcuD$~KjK^QqoLnwX|8X@Sxx|Pft2Qd31jOgTWoGE`@uKC2pC4kC( z%6mQc?Nco+CeIWHd2db0R8e{YK(rUX1}*F0z4mk+8*6D;3IhXblbX_u2*~}ajA*a( zGLD7aYZGCHpMep4x_G7@)Hjsi`^e{;vSyW8j&f+!mQ2)_kU<=__B!>g$(g>@mRhSR zsYaq_KP~?eGJ2HYqT8GRz$_*1Vs8IReVbz`yUO_Jp!pXb;lX1@MkL#T6}>P#(}Iq~zw~QvVP>zOw6bs+6b(K8o#jOy(kuli)ZASm>%R7e~)! zPatn>;fJ&Jz*M#GbF>h>HV#>qkb4GTW9xgyfRj(G%1WJ0JtP{uzA3>UFP>TApZ$8P z9dEt?UJ4}1S%fr*3JS!96Ec=#vKbLUCE-OhqXR^h*oZ6F_$dq@-(`k_LWcpAW zoZBZK{Db%^rt-n95*k~$CD|~p_dLPZorI2OCXQ!2$d`g7>`9YOgI}t2EXavB8MK^$ zy6^Fip$0uv0jy<&&q6J6-GCP~jG@089~^r3bMrAFF-?0ycr5c0@u zphb2lflf-TL1!=|&euKZm`6}*l$@PBv5~I=3@t_N%Z^fw5l@R8=cCK zy(G!qnJ?D6{byFnNSg9gb4%U7_u{8XXb}}^V{9a2JAtK85Z^zL@ z6H0)Jii$b4yxeM8j|5ors0J_1&Gm&AeP3#_0iMy#E1*l)C~9q8_+G2Y_~9l7IQL+^ zm(I%)1U{-PFW(YnfvG3JOaexcOoB`B;RWcGITbahPhyr zYyTLsHQ8u@B{{ns2lSvp^Ai79+p>Rnc;VSjO-)_L2s-OV1v+Y2;<4fO(n3y3N~+VlaiCq^V1#f&Wx0BWTgA_MimlC_*@$r8yzU6aKyAy z*nbaHHm?#!iyOFaz-y&wRBDUm)+Qt*v|3&g)ME{?vKMob0`*xmF(PjDc-eu`(Vb8^ zC#TDep0M(=GGndP+8<%yqmVP8<0cOYaq(U68qWW0=lKg_4A9-2yIIXlzbYyi-+#WV z+8!7fh~{23=g}xE^1Sjl=g9C~jf-~$3UMFFlAvqs!`335?^l1aN~HbJAW!RaMo( zvMP>P$uw_$7$PArK3bJ_BMM;{N}*c0dUyd(z4cy1h+?P*c`_8kr%y+Rhtjx_MS-)B zhyp+K^bD=Uj|#l@ds{17?3v-zd- z=-RVgA73^ul<)~UZLy~&QoPWfN|F`W*w~bnl?%q#zSsI+|E{b=w}lSv0APkI4c|w} zIyyOQao=pSgg~KRom#)rg$BFJ!KxN)ZPAW^fIxoMM`XwEeaC7Q3iAUzFz|EwV4I7r zG#-mF!hY=ybT%lG>dMO9a+w%pf@tD06U(o zCz@fc_-FQnfJTSW5Ty3iYml3Pd)oi%+u7POYxsyMwY=*_j}3QZ$4`k1l7kI;n$xih z$pTD(BNm{!@40WDkv2+87%d`oB{2M*C+gb7|NGYyp#l&p%F4dO^Nh@FjLVXa$Rcn-iNe?Y5`a-avF@6g zopn%#XWk}l-`zFU?C%MDb6VDmY3oPRq7`HcgQrbA(fo-s`(jA&ddR$ag5*ddLJxrHYj;?{O(GU<35CGTc)ZBLd(rOkvM)bAv4Ql_GM<|qc z$fCtfv_jzk^*!F6#(tv&9&qI^3VsZP`T32qj{i5vA5gk^aD05c%~Dfxa&o|PoHpKH zeHMJ&%#4hT%uE?+X@EIOw*w_)aC$kWWyO>XPepOWX%J_tY_vRkvvOi7wzXF9{4Gj%ed}0CuDR#iTKGlCOP;^lPSV@P5hNc=| zWo=uY0HXoJ)A!iH)k+EKGE`Af(b6Ko!TpAYmTbscx|V5(sIQ@s>g&Fb_bL4fCrV)P zn03HN?gJVECYj)0Kw?8yq*0_F2+9aS!Z*c}<~YhJ$;k&^DeZ;6_&p!fKJ|2VLh(nj z?iHs_lj4Xez0N4sBR+Ado-BVOdnuteGw2!)=71?GDuT1FA{Wqv7TgJ>_P3SgU=P3gU%!t9BsF6#{%(UW>-zUy3 zO9Z4aj|P4*{LBAvu++u+3V05{{P^;gMo{3{*~vD=LX4+DbpD==&-DE>)J2iBY0dNz z-6vQ*&^RU2$hcuK{?LVVDD&)wqj20L1Oyhgw!Rx7czHor0;o41zY0a64?|stfVR43Z&*56^>_{B2cR^aEO|h+4O>L;JX~QJSaeemxSpx@d$tm^WqSZzvL)rT zT)lE=bd*!~5eCrJgwF8*K0dy=t*z^q?B%406`=Y@WNOLUTD;#2Sa_NA7eS&e4jnh@sVz8f13NBD!-wE}Rl0x>;c0Hb-oSA8` zS>o#13maamDGuE!vT`s#11vO8{p%5_0WH)6=E2&C2_R3HX+J_hCt=pFS;t{DdmrS^VsXHOF|^==voK-wsziX%SHr3oKxg;^Vsm3T>f{ zRB_ZD?`DVJ4|8|`kk@xZ?uJW3Q9#$-^iZZ&zK^1eDGSN}a@-?Wk5Wg^f<1+bh5yIC zC?0)$yDO`!Q@_!2_T~9eOey&O1JSQk2B&V0hR15(>++IZ--ls?mkY9|F0wO+M5%gl z1?fYjT*3iJSj-LL?qptx321t6BB#ak^GdnJE=maM>qg*Es=D1ne zlNlO6R9vP$OQ4dEv9a-NnVKOT0yZ|9uqL&=hHyH-1oJlCvf?1pfv%%#5vxvh>=m~X zR329WlzyB%2}2juCF~lBuX~!RytO>p@~nL|6rtFbX)eO*4QMqu17{mWt{9N#NPxZo zlL{x75Ys~G%9js{6Ewj_&+cIc5ky^bC<-}1XTyPv8f|#$KNFJ@AIOv{BqB!?>?0x| zDLx>T9BQF(19<$3%P!j@9A7Vh$+)dvfjZF5rGgK7U`X>eX(g9b7baaTaa-d|$qeGAdx#>f(c%Tn7ABtg;@;$4PdH-LYxh&q^YisK&G8n5)A}7z$=99;txkVReOSD5{rW$ zI4s7nlz_9);k>v20?PnGe^6Mf_nbGf)(i!FWgh~hNv_!vURd3&B?$h=U$Rs+0p`34 z1Rw2)^Q1+#bS|i3iLhDpF&aukE32#bos^qi7{)|J6_L$9oUkumG_QId0pst)(ot7; z1(N>mB9!l1zqpM)#u(PLqed1$ zbiXo_z={Dl8HnIF_koF&iSH=}mgD1H4cc6p$dX{5o4%N(BVG;0$%p~LcuLi*w$lqw zHxSUQdu$}?c--^jZ6T5lPbdAFYRP6iZ^Y;%$nC7ai-p%}{S4 zY-h*hdBWU_TNmuTFG@f{4!mw69H({Bg}65e|Gl1hUj=6&Zw21yVComyE){SMYn##@ zviz9gY8znXrhD=B9SHFC#s4g>V%pqG@018yXnW2kdyh~Gt4UP-z33r(VHJ{7n*GM= zUMjHecMkG(oK4mU{~*ILwKOy14(#hcriaHKlvx%u6?+6v5ZsmuIK!VBbDtuFG&{wtU4sK?5r=>UjMuTF93zhe6ZfJ(Y2)|E@4v zo0nDxo%cw{h7}7$^NNho3SHCRvG;T%29dzRvaGppnH^vX_KM}vEK85~#C=tCRGuG>UN86jeA&HhM159b zeecLZ8wZL4&luM{k8C)MegF6if?%uvS~tHE=s1|iNxT?=`<;Y*chocw04I^nOD<68FIW%490T31BBDO2l2qf=!>Y+~oLGDeZfJm5Ew2<= z{1Di%{TcDib0KLtx4vX_4db=Ksbr96bIMS(JwPHFkki4U#@0+U6Qqa3)MbbmymS&{ zz73b_=?lC^ltvKUmYG#0BFF&`C~e04+rmkVCJ0g}FR2YDOqa%QEs{SbSp+^|w!Lij z;{Vmr&V)spilD|RoOs>;FfX(RSM630ZcE3cE}~tQBWqACBE*Ht3@W1`bmMMpfJ}2R z@iW)aO%5O@F6bJ%UG+b3$iY&uSDv>*y@TsIVa5pga*t#@XI$cn8P-xEsTXk zakSD4{0qiP9IUYT@myP!HOs+7$ZNzlI%@2?s;HKXN%@iRV3woO)2otB8;L?)M-W%M z!2EOih{g6We+@8w#Vkes@oUo=R}U>Y@p>MW*!iWhEIh~Ft#?jZ(Uc~!)z%F5TX;c8 zcCkc3`{j)yE!+OIY9WlFQ)y`_NBT%0xuy-598qRcOq^!L_zq*R%&sMJ2NqoopJr{; z2=0Q%%wM57GoDHH+2DQ^!tk39^CZBlaTR&BfO1R85(jnL+e2}&1U4YR(_Z7IVkt%i zOc5VW1u}(`i@W!%aN&gGO%fNZ>lZ2G^(Vg{#9lYvFBQhGD(-8^O(Ri|DjayaIp`8z z-D`u}BE7m-W@kB_55|)jn57i`%Z41Q-Pp66WX`)_+F(uDaav@yAf~D1baQKn;hb`) zAvq!Z8*>qqh@ho>IyPCdnqf*o(k?F1<6z6io&I0K!dPX^;J#m7ilvFJ|FWFr)J$5Z)sT)z zl^Rs7D*;^rSe@706Nl)M4ME zGtDu8VvAlcn^wR%1O9CpnDR|&yAv8zMgu2&=FUaHJa8q@TauR5w?&`4nZU(WY>`n$ z1E90HjmN&TnvTs`z?nlAiGm}yg##byP9R4P-W3sCkIhX5;34Fp`*K#%06g`lT4=66 zCfa`dv&c`N3A#FRBwXC&3X{m2JT9&eXrzH$lN_Tv47#Vxp%liAJGcE0-zE!A)mfv1 zdsb}SYRQqxG8DHd(&Q&8h3nGQu+HwaZPba-a2G3S5|Kkq0Cs9=qi2?iA3z>>b2dB? zmY&kmRsHFPl3H7{Ao6X%H!J3~3Bt1so%{nT=^S+v{;qm0z?f$MBbiN6$PFnQx&ZWX z#T&ALt|YHPfz+8}&&?P)o%Y_RL*3_eViH5Zym7}W;{(#&hC|ch1xW`f zRIF446#;2=osNnD@(jSooE*{82^Lyi!5mDp;;I2F!YA&)z`O#2#68+GyGm`@G8cY9 zN#-7&G%n6-@+_kl+m$n|O=PI5X<@vskGF7Wwzne`)s)d3!^d#>dFc|OA@K3%$l1Ky z93B#u!9b6djVGhz=p+s<@7kH+`WIX5&KxDfw28)t<;?+3EtWztehv99H|_1E^DXk% z=-O&ao0Qzg(y3X|@;o}WN*Ej-tg~s^f_Ut_9I;6e>>87OWH$*a+C1vt#0^?DHZQJ| zbp;j*h2+}+mlf*JI!$o~V~M2@xp9k*&0GM8TzWc@*HFrE{V5Zq`;t)%kMXe_jR|>b z;b>*Kr46}kt)-3NPnu5Xdl4Lu((hI#TM!yGxz6C8=4N>7G5u51GD0o31A3p|(#6JN9Rc*xQ67D4w7~#lx+ZmOskciYTd-toCS8iXc`2pKo3Qc5Gfh}?h5n{ z?<&FS{!?GxYr>cf5ym&Q9IFB{Gq&M~J0%ybirGk~4M%}EzWK(wYJ zOs1mAyT#a%u=SUVftVNovvNANq^3WAibvPvlWQp+Rs$%74LYZB&|J-b{9vkl+>hJM zP+FS_g`W_To{%$N$Z)DtX)CD>O_$w;X`_0708cW`Fpy*4JPy`Y(*h{_w-zI_l(KHw z(gG0Z3kGTm4b-$&u_0W4;iK#x-0|i~u8@OuutkbmR1MuaD}_&_9FV74oIi2(C=(RK zy8J=W(Y{3vgwjbPf0=8G1U@Q`#U5ZwJIIs;$cHs$@tb%#)G&S1_2v}$Kym297rALw zHQ+Td)mb>T25W+%mTgx&rz6&Z1=GfKS<{m8xJCs+uI?l~*i==ulxek}!)kDqfKq#@ z7k9-}nt}xV(thJ-{M;XtWStjQgGaJ@Fazw;hO4gQDn=~m|ZS=c>i)a~%0fPh@7JB;` zRTx6*bJ~egR92TIAO7&ehg5;St?WPMGqheu$@5D>qTmh8vmi{?z@`>86?V0BD`yfK zrJzZzXC>r)7k=|6{T-&Mv8G^MpcEDyXFQJh8NT8(`rJUIG_aHjJuE~vWXNJaFBrNNt^F+ry>fqo!5|F)#W@l}&0F8( zUz21Td6=Je;v@?44W1DPSzE9lW@eBeTSH&PT0VRZ8i_idfxPL{ZU!4-I-53|g6Ycd z`cOghp7lg+7EW(A;Pb=@^UaA($jMiRUelma%cI!qE(|SQ!sFQMUv-(k7?ORB_MCCM zEM1nLR#6|F8aXk$olF{c0A#Bhck1JfRODBxa=r_{T0FtfTn`izX6bEVfckyBL6f*( z%r<@Ug)V3X^7EUg@Q#8MusAFX?#zl+PmE@>MkFjB&y^eRc8L~im?$@7pI02~zK>N+ zWFq%LzP4Z!miu@GD~jdF(4=0MSrIBA6M)Eo&kvVE`#kS&@+E3Su@t)kNf)zwjJe?} zYZ^Z{R7+M!ttOdfD-2@7FJ&Bp)kx?*%=z0oFB>N{VFBxAM-m`l_grw}AN#8@@-YA= z$l&TDp(JXS{b>H6=|^Uk&YeD5mcdHQ|Jz@?Cu!h}zSzDURxB_jSV9~NjwiYMgTIxy zkBUxTE@2bYg9P#+1`)QZK1Dq(Ut=4cHjqc)Xdyi2g% zZcfe=`=S>Dz+~Nj&6um&4Nt|ZdSg3-Gx5S z*}lGY1+2D){BMyVO+raV?QNP3nw?+F?p(JQ3-g>{AI}Z=C(B3=t*J@xx!xZVEdB8 zc`e7#&YRqE@S>uD*&U8b%j!Eg=%%HEdkXEG#SFxSO6Dqp)?zM3{}-h|63@s<4=H1= zb+=s>Dh|2wN{=|w(e{tJ-E8)D1jdqTCcGF zXED}JjAFl1IKfw~#1DrYRIT)*7frXoeg4=pYc!oBK5xsNK4R&ggUmO0&A> zRMj9~vxqUGk?+4BFr*_yinIZrcKn~eUHISs2ZWYy83u86m)&7hq(Z|Pt2cB~#|cVq zLfQfW*s!LDvI?N-1yo`n&3bG^i7ipZa=g0bG}f+Oor2+>0n2%O$Z!!8)6*NpO(({* zEv+sG@;F6<{`RC?sf_?2ExU{SRKxdobu^HiV+L%oh`;xQB1j{7T413q`ixOh{_}zE z2N5sMAwVT+cGUsgyB0JRJ@29Z790o+bZG>YvU3k$ttvUkwn>`i;+gx!nql+kZxIGJ zA-LoqZ0KTCG>b-zgQY=3-4Di>_u7rMpU;klilKr20N0KA(t@`H6ROes@OYJ-<6$Qs zxxk+Zg_a|m)0GY#%~gphugD#4P450v2`8O2H0*rjS8%K;VTU_gP=YZ=6kKcx4)L++ z6xFh%JZ4Ur4xRrGghP94c_5Ke@in&T~vWLW8{lf&yv0S@brqgvcRK*YFZ@U*Laj9t9%|?aG?!6Y}jsJc`b=A&( z5Is9%p^)M}H9fTCQ}OsQeNxj3Lf~U#Hba7x(mFP)Elm@;t92UcgK%a zDef}OJnFF*>Z&8(9-b@hur=$@(^a_CvpLuhK&Fh09yUk&w|jKgP4W)zkA2FglxX3g zi9KFSh0~(0kBL9VlDIt(i7@MF@MlWB8W8FGVC2i4yByp#)l9x8$-*95b3c4HN~`Fh zPw9Frb(|-Sl7d((B@@_2Ea;bh)*oq;y7T=c?KKrC698g@CN)-2>H)C37o-Jm#39O3 zWI5K5F_ zmhywd-UgXC(~@0YavDtQ?u3aMR)bnPeBXSHlqBQE#>a;6cCBo9m0c#M~ zv#io_IcxZd&uutmR)DEj8faG%I4#PF#A^Z1cdDkcvXwNP>nx%eKgqjEBfG4u!$-!i zI7E6Zb8JNdQBjyB5XbbPJ5_@lmy-PcPOk@SP+%YOHMd>CJZ9LrB75KQ8e_0oO&K+C z;d1BU!HuWmdUINp}$@=S!uZ=jY#H)aPRCeT22yY%;Law)L)ga#H#A{`Ud> z?s_yeGx@>^gZW<16o2co>0)7z)N%UT<(fT_Lm!T$5m_1Io{dDkBm?3H;7Y^Q7RB(U zv98aTNcHu3nN>WvO)TtU8G;q z=7TL$76F|?a|N6X=%17FYuEX(kIIi#slvL%n9RMNc!88uLSxm;$tJ?FMk0y6&e4J9 z5$J|u1OgFgNkATdDHWHZV2!F&?^9Y-_63&>vwO_}5-)pR;fFH=g#Im}&g;61^t;@N z(z?-%Gp^7O#h!yY^p;zW^sAg!o?C-&zf+zLE z_>=5r@XWE(dE|9g<#%G%W3b9O6V#0xZ;b}%))?`LW|PH^j-LV*BW6|hU$_>thz#<q9Zw3!)kQ{Q<}_v-0mb2NqOP%Tm@=R` z&`Re%+^s!)fms|SoJ?acyheTid^?Zuj z7)^A~*z1^$BmhqcXLHl}7(bO(f=ZUo8N& z7qdD`M5h?Oa1+EooF=20n|-Ou;3fu}T)l4?9QSD$u9XhKhj zo?VYH<)ghapc6NLoCzUx%k^jZVQPyYS&$X(A1zjqL^1eJBJ$lywQb{s-U-Bbdsj##^r)PwV^?mq?ed_*kK@gF0tI2;K`|R(ACq&N z$_|lHijBPy3;nq+;vxN%2=%RZ@BxOXA4F~Lbv2nRkDqyvO;0+zj;Vdr==lD&Ws^7>9rI^MauA~euE7yQzXJF zCbnaGtr*$r(H+n0G^S8c^r$r}cUEL`rW)!Nk({N>oQV;?|1-2@ByPWPT3(MAnGg5k{wf5-JAG zm;Db@GVTFR0#;W?UM-sDPYGvKB(Tv9bwZ((Ct^~}iVOLpy#niODD2XbR(|3MY-9Yf zCj&QBLWLv5?_5Zvi829koe^uYJ{2h^D-KQuSO(P2Ib=HbBx^-Fiqm-;Z}n>azRW?U zcW8VktJ}PD!VATx_Q9^AghpGmz(hQCyiCc2JAs14c);&Nf)P_j*P_HZ=c{jw(Fc9M z!!aorR2s!xN8b5P*|iV=y1@K;Wm%3@&DgC4vTIX#dh#t42ICKPt*bTI#)?#P+C<;= z_cF*T7lPic4&$JF3mLJBX@!aA=g+@7N)xPCW3}C!N)si}x+2Cg5Et*ru3-I3A@jUg z0$_>uP&?Fu)MI8|1B{%_O_`#smV5|Od@Mh(VxL#?XHdoKj(V!FN888@N_aP{Ao$NjoS z33&VX*{RhJUzmW4z3hg7=Vsh~R=6ss^?hJl-(89hBAw2PQnc$~={8FThpyd(bGe9q z;5g;~oF)&QfJVnYaZPV?omI?AWR@wNbkk$-mV;Y@Ve}?%l6wKWP13LXRP=OA{68_; z=jOjW^`ETi}HkkSzp1D8GHl^j1GA?m74&GnXL z(i~&J9Dr^?2zL3!cvi$D7Ljv0d&F(bx?Sz{+_ld`FF%FIb+2%4 z`~lc#6^r+KmH_+Bx>-1-gRiKv5uv#FJilX!JO^1(UVcM2xZ}Wd znWN{HXqmC2m!^l>pHnfsB2kcNVP{7k3HBNoG5~@EMdNF^k3>*LCMBE_ZU*llspuaz z^^UN9B>~l-kU9GRuQR63?mXt^dB^cHmmbfW)>XIpz5z5Vwku4=JFK`7x?S)c9bsu*8me=WFr#4J{Nr_pQ=5^08@T{`z!D{UjNY3@cv0QWbVGQJC zujTur_{N!%@^Z)Q5HnV5@2Tmjfkr0v>C@Ra>%L7Ixdt2=D8<^$ML5)02_z>3nXC^_ zdbTC0;?h9h780Gd@4u#r`GbxX6<;-)49-&Uh(x*R)-`e1o@@_!X+KAz8lXI76~My9H!E zpZ2Jxh>mY%LbA4KjELG;a6o8VAMLM|;xf?>M3wbZS$R43OI@_~2{n;a&Wv(DTe7{-P!s{zQRJGLi15O(h~xZMQ)eO1&wa{gOG$J#ws5VomMr(dno6+jj=T5I>LeJVECoAp5|XjS;n6Y zXwqHU=t+mkX7xwW42oPSnfDJC-L(66d3|=-kWG(v+7tZ2#!1~p!Xbe?)1g|*g~ke#j+%NtI0 zssJFYVj>x3Z8f<70Co^a7HHBVZje1w2Vd$Jm)0w^5fU-B??TtbdBW99RvRAR_U++3 z^A7`<@Uo<8yXtja)kAC}uw7DxK>-Mb1LPIc3UlKa0nN`nG@;z@0YCbHGwDu}o% z5~md&VZa1&(TQ^;zXYF7D);h^G#l-ebE6x+77>X?6r*@(ePreeZR<~RtMrm}^zM1$ zKy$KRr+DH@ZKZ7F`UOnv$m#jZhr#Im_O&)DA};!(pMjHu2&I~7b2A(3vtOtKvlS>i zXq4^-2{uKg)W(M9=Jx`8I9E1cK}gw1Z8F2w@8)eYgwcBYjU|)E)g@K7DJ~MLVEsb< z0ueT~>xF|h_($NRl}dDL=NSjffLYA?$$2*Yfl(X%R?umX)gA`{U{TLNilgA=zlS^l zwO1(>Gx;R1#TfMC`b%=@f=AP!=ot)0NJR;p6b6UQexn)bUZ;9qp^dP;3d2XEz0+NS zmdjtBf_udIm5zj)-{=}wbQ@#n&2%HzF=JZ9k9~_zNjokB_yy<cI)vr>i?)5T}yeY+@be`w9&$fR!>ciQW<*^G4M zP&m3tDZjJ-lFuQ2x4}9|q?&4K(mjKcu|@8x^$#ajayZ)ef(nihy0eapgLqKL3oWM< z?CzMM+t;;Ft>Xdr;?^dsKQ!LGimg!%dDIPT*|g@xqc*GXoJqSghgF6{Km|Y9dN$k1 zugAWLJ1oap(L>>GrYUqmXSo%Pdk^BqiEpvs|6!_O_gxlmn6H~We`Rv#=g?iEyoLVc zJq2vjgGpV**i1LS*{s};ofX*R-i{AI37L|ExKw~Kta@>ED-4b!j2f~75u!f6C)@XT z&J81evN7D>7Kh+X?NS@Oo~iS`i+{6^*S@shCJh}sJgAP1ldVjZ^A9ejqPWkp(FgkG zJdO8x(6QcXMtz?j7|R$_1Sr(S9%L=_XE(;cx0EUESR4{Po#E8?t{R`1T;hd(@zGNu z%a@4LzMO#zF&aE4?X1&JX5UI9n4<3!Ih`V}P9vM%Gk2l7u~CHeQvnxUZ4Gc4h^s*M z1JrkAdWP5sE>CU1_K!UdLop!tWu2Apdzv5>t>leL06!nF0}rj5VQ6*K;91yK$W1ye zMlTjniJcNR@uPEF|M+J@S^^J@>8WJ>@6!&qAeTWO7<3}jT^Mhy(@-T|1&tg~OL=0V zj$b4#s;r;RI};;Dbz~!GBcmfv(*&sTE%D*SU)KgNlnlP+@)ql1CibF2i8w*8 zap2$+jDyE}YZb*1l@fA#El>}7$@fKHvtY7t$^=e* z2l~w65&qTa>>UWt@vjd093znpcM2Wui2HeqE)K4t=Kjsy?@9e9o{Izr8$TSf^)R5oMJ3adJFWo^HNdjOq%EEvK$@Oy{SKIRvq;&Vre znnf@1)RVM?%NtGA+zV}(WaRsuV0e0vSv{1fyRrfC)U0n8r5@Oyykldq+M&nfB$kvH$uo< zo$+AY?N&PZI%9XRY=LBgKio-}#!xqXRc7-v0W}NJ`aSo9Q&|d~Xx9ll!SiLd8EJzM zDt7F>RB2_48ika2VMyrh7TvS6m*czVsb?TJixJm=X`*hkE5tYU=e$EWKTU=>J4`(L zJnf#BvN>^)33TTF+dlgrN2vdIzE`;r-z;PIyGT-9LTd3M+Yt@5FKjJ`4%Vs`+e>ag z!;oLXk}poE2jzWk`_9j!yj}KV_#VKzP+%cJfewhQ z25Jgj)5_esyo6>i=WO0X(J5G~pYsBY&emU;B}-$=sW{vy$FT+>x4q>CfiL#5r)D$b z$XA3?N;ZK(g1tgF^a1#9(v5ec$Dah=)(r;4uq>edmfB|S{LzmltPQZBPxSZe%PjPn zIIyQt%KJEX@TGej9dZ^-{W$^4{h}>b+2nZNk`KF1_oL8Y1)}3?BJ&(*Fzp&7wt%w4 z{cb=|Lo5t%-UmV@_Rjevnz_q|%W>>1T0jQ$dy4Ke%H|`FeDD0c(E}wZwQCJ} z#eBcM570(^WKz-P<|dAw8^ny%Tfk!n_LUM3Axdi+SUw`m5c`GP9O0P3znJ=zvKtnXX?3blf4^T0jf{8>KPYBHM*3W*1_}8vXBl5# zVOkM4lN0XY8Qf#P=aq(ZG)@Vpu+*sL7WSRizZW^1{(KucuY=CZM{Quje;5bnm#SHA zG0YjZP0Av$>9TX9gG)XR8xR0~5NilBE?#&pkR29^W@n^cGbjU|T3{F>%#g;&#~$tW z$>`0vj_H_W5b~2#;Rh=w$1(MNG0e3!1hWM}lR7D|k_q14*l9iLNP5syU_BA{hSzO~ z)Z!$}SfI%d6js zNa|5*G`LAR9$9XI7%-C80;zf>Pz-Te*^uUiWuG~$OWqLHRX}?9YUj0gOK`Qru5^@4 zhsSs`6e*4R`Bzz_CF#vo1&?s4e?oM~w5`;OmY4V$o*;>;!ZrI}?uy zE3qM(RX(H}NM6Kz-qCDD*D>V;p;8YrV~w4driKP;T-y0dk96CgxojbcW!9EW zJK?=DNvkh^zMimDaVC;Aja4U39+w~_dYS#xcWN?hX6p}1%Ks!goHb|h!}hI6Gln|Di!(9&xX3RI{HsBd!c99zy6CJb8wDWA@#Wml)Tj zEw9htY})QP!p(@#y{T&qYF>8&{S9k*W~!kfXE_l0Y&VwmTEec|T>1tg4r>T#9$y)e z3wM$iCwS?*LmnSW-AS)3qZ)W!^{wY{RB{K^A-O_H%CZP3z~W5i*opfB)Coecc@;|& zQMS1rT8!bUMuU%oAsK(zx_ol{Bph})_TtBlOFYWfl)uMfy-J!2+VB)4MuQ?d(_r`R0B?w7= zHVNj1h&Iqea;hJfKgQ}ldd_~-{AT1)@!kT?njrK5U8RG4Pt}UlN97gzZDg!`h*#G~nZ~;GiP-4Dk-4!Rm@1_EkuqvN+F@qF*shFkzw5 zL_#lt43^v>6jK;(K*d?Jvv|zLpss89R20fYAaeL#g%6Ku4Tv)IM=O4zuoE7qVK0pF zl0<7blXW{-xe=9-jG;>}t%K>~X)`g6t(OP!IFj^HU>vnWRt5a~))woP;g-i7y&j*zHrxlpMz z|IDM}5~f?@+;Irs0fM4MS(iIh_MnI8(`6K@WNH^z4#(#O9!g&G6~6xDGT+ElUqzSH;X4Dny$ z{0yQH;BM2j-YUysZhH`QkZ;rD)|{0o=1SHX{$N<^LAfddqt7)j%d1x!{z# z2w3nmB;Rn2-<|sSSLrBK=S;?qM)IXD3A2%Z8Pp5Vfkl>Jh`n8Q7H}A?kJ{#;n>@<* zazb~s#DZM;8rG=en`GwiPy|NFIFh3H(ME$C6av29hu#ee(vc1kI=x^*BXZ|yN!66I z;QzX>a)FiJrr|Uw6m2&av`_iKScOIs1ps% zJwN!$^~X2d9_7=SVGy{0XEIm)4&5aR#6=~KAIJDuXtVCH1IShE^OE}uqT0>pN?t&c z{)au(yl7F2+`Ja=kXING=U+_sdvquL^%yYsc7v6oAA0)62`1cwmNO^uFh8HUjQU`X zOpSpH!OOIg|z03{IU{UCk` zFwygec?JT=P0s`10HTPNv9WAWr;yF#kCIx~%Q`nTKK|o%uI)}sEhCMJ3SbS$vSo2! zxu+QZ9q=3gT!kHQEkIAv$}<+rE5!1h#Tu@v!_d~yhHul&RS02RMEm}tyjuk!C<9Be zp>ddEkel}*a&OynP$ynHg#z%X&nGKlj8iw*iAXCc5H34KhPtI2+@_XRh%G7kJc_(C z&#Pc`(=ZzDMl?=tQ;nk3UMB@~YcO`s4+fMv)?yN*w7GWo8IX&ow_HrX3PJS~oB6-R zlz`YdQWo39NQWVq=U|ndTQnO)>!g4q&L6T)gNv3t1K~i~G1A4D6*ANmn1XE7Q1ac9 z1Qz;c@j>ubR=e$oqlw|s4R5C=`GR`cWx0lPq;Mdsv@5J)RSFxBpE*&&^Y?iVJ z_XkrsC%fH3>qa@xZ@YN;u*LcFr~SJ6B99YUDovOFy7z&;Jth_3yt%zFNlB-cox zO<5ulqNm(+bB!20Co_jjpbAuM$tYMmiI$SUqun4$P5bV2cgZ>pnr;x&NDQJ^R0B zzJJTkzrQ%`|H(^)GK01cakCN;K&#*s=$+LyT>zj6w+wy(>1BY502(J~^3bRO(Adcz zJ`hYb>#vEp+&}7v_2nZFKXZ@#<7o!Koq(H(6M;4W9E<Hr=5|7Q z=U`4T&KDr~ud14uYqtSS`{IDNN5X3em_<&g0l2>Bx&`jwM-G~fkEl5WKzK2VKS}sQ%dOJb1_}?@HYX(vk|XATH;>99Z)4IiQ!s;nXO4NeKy16?9U-A%+1UFp3Ctt)cLT%G12i z!F*epRG?(GCFf!@UYkt}Gy;BS*ioG#yob^Ot#FAd`7D%B9lj`}EXUs0TBtctR0WcI z@W9W}{vdVwD*>X=WK&PO83=67af{*8X`(_*eg#J90Hgn)I9>qeryS2!Ggg&6k;hfr zL5lEv@H6J-cbkxeWyqXyMt7TYa9ft5EK>xiA=L%2Tq=N_?3}HC1Fa+ZgSUbtI((q( zFPwofQ<%RKpaz#NavGjHOssH{DYNy#{9o;orqSSXp*D1j)n@iU7T}iv4&VlvI22(s zT8{Nj=7@Zei<&_U&XgIrv@qJ4<4B;JtCSn z25D{tpgpkZ;sC<{(P|6@Z7FD~fS*2aFXV~W+jQANEWYq#p#W4u=v94Oa3{ouR957O zWvkM!!5tS=*#y}i9>UikMVhEN7)d&i*$!K?>4a7Dz($5>#o&WiAPuZY$fft<`xz^` zz(oTwZN_sq=(Of2v08J*q>B?X*;rYd$sUhuU`M+RWj>+6B}*NMlT{ZOz9i#}PW-Q}{YIs^EPy&jqO z2AYombpSIRg0X)pvjed*--f8o{B$sU7=!`2$8Idq#a>&0mluJPW5!<;9gMI;bwK;n#|#Q!x)YT+m@(?2$Znj_n4as zv76S%)hPt$=6k_gN^8L2g%d^hIFSSu3*fZJ>ff~=e9K|5NmG$Fpy6dNC}Qe9R1Ww1 zYi`;0J73Sxzi;}G_+RAT%LUIii%vmX^2~63x(J~XaLO>7$e{4Qqp&di5YTiJFc3hs z`ljN%7RGW|gKd#gR&#&mviFO>f?#Mq{OMDM!LD!&5*)=it#|FLd5w*_5Vl6#QFjG- zzw+sTvm7XTxo`7iK~Bs3ijHb)CB`at_d}k{O{pO_qs;<05goxHmaHm!(*>$LPz%(( z+=!`~xD(NBw_&_wi1(|&99xY-?wc6o?92#cM(CO2c3^)uWVP*1vm=4Bv3`QMGR&kx z)}vs@#gGQG;-64U3rdO znyvnj6)W24OVDX}lVXqjyfBD|LoNZ7%l026pZ~;yk!14pz`daOeh^nElYwSdC01`+ z17p%mH#Z7=EUxMgqWhu%+ScO?lMYmkRBuo7U_4XhX7ll~*ZFOR~As^VNjSBwx7j8|V#VX9_D}DT`kpPGdFBHJa2#F#v_u5PxM>72gb^Ylq=x`0g(k?k5Ny+-bC^p=cvFAGW$$zI ze@Y?*1`ASa?R=d885!DU#YTY?Tvakf&wtdQ=u3M#ng@vhckJ}Rw;TwtbDoe-vXz1y zWl-0_?9+B`paUA})N*7<>iF807f?>v(bR(O=?7laO60w(#8Rb+BK`k^>i!R3Ci6ci g?O$y9>NivSbCqqA+GO|wViFPq9ph8wT9~N+1!%w*2mk;8 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 0276/1212] 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 0a87ecdd4c..00d75a8d7c 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 dd54dee205..d3eef64f57 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 e77bc2bfd9..0f0c9175a7 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 dfaf7ff2d0..60d7174224 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 475f466870..812a0c3f58 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 90ada77650..1909542e81 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 4bd26b4162..cfe6b8789d 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 de861c46d4..7b65d85589 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 319ba89f9d..26f2a30642 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 31a00e36f8..e5f8a837ed 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 f3a5d7895e..b3ec1757ee 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 236254137a..bfba798f1d 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 d9c7ac4fad..85b0987718 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 90f5e8ac49..09b5dab2fe 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 0277/1212] 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 00d75a8d7c..9bf447e91b 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 d3eef64f57..fa55e9e7aa 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 0f0c9175a7..de78ee85a7 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 60d7174224..15c36abf13 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 812a0c3f58..4ff277f7b0 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 1909542e81..9c8d760c68 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 cfe6b8789d..388766230a 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 26f2a30642..585e3e775f 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 e5f8a837ed..968b051e6d 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 bfba798f1d..5890fdd11c 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 09b5dab2fe..efdd7659ce 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 0278/1212] 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 ad43985bc5..78db2a7c4a 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 0279/1212] 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 ece44b97be..acdf45961d 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 416c396712..305a593e87 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 7de36922bb..76bbefd6f6 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 0280/1212] 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 c1467898ef..5014adb77d 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 b4876ccc6a..e8cbf106a7 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 0281/1212] 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 78db2a7c4a..58a4e804c3 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 0282/1212] 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 0b2ebe6c68..8c7bcc7bbb 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 0283/1212] 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 8c7bcc7bbb..7b7ef7b07d 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 0284/1212] 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 7b7ef7b07d..d626cc2b09 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 0285/1212] 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 d626cc2b09..26cabebc7d 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 0286/1212] 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 1edfba8ac3..4be70be979 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 ed1941b880..1602a78fc5 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 1b2da84b17..2f6cbc0a5f 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 0287/1212] 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 3b1d44b766..2237d19057 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 0288/1212] 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 2c01122914..52b1375800 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 1355b9fdc7..061b94f169 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 5045a15a4c..1056b7868c 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 40fd5f1901..813ec5943a 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 7e21f69e2c..675357263c 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 176640a48b..31a5da3ff6 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 0289/1212] 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 4be70be979..4340086b01 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 1602a78fc5..ad186eb36c 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 2f6cbc0a5f..1bafcda7b4 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 0290/1212] 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 e6e2682956..d136d227d1 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 c2b192a02f..9578461736 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 0291/1212] 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 76bbefd6f6..008eb481d4 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 b20f03e8fc..909ac8084e 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 0292/1212] 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 ae382ccd5f..34e0cca594 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 0293/1212] 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 54418166c4..fb434a6b5b 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 0294/1212] 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 d136d227d1..c8d8af1d31 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 9578461736..f6e9b8cea0 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 0295/1212] 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 3756a268d0..d2a45d02fb 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 0296/1212] 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 1efd939eec..1dd8534816 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 0297/1212] 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 4340086b01..849ed1f1e8 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 ad186eb36c..cae6b725cf 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 1bafcda7b4..28a9be5d24 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 0298/1212] 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 2237d19057..286e250925 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 0299/1212] 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 21289559b7..f23f3708b4 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 0300/1212] 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 286e250925..4bbfcd757f 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 0301/1212] 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 c8d8af1d31..a164d943fe 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 0302/1212] 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 ffc4f939dc..643fd31dae 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 0303/1212] 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 abb09042bb..6c4c3d3d4e 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 004896d77c..c98a034b30 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 1027/1212] 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 c603b8f916..51b810c8aa 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 1028/1212] 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 51b810c8aa..222147dd0b 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 1029/1212] 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 222147dd0b..8d0e875857 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 1030/1212] 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 97bc308ef1..d9c118743e 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 1031/1212] 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 d9c118743e..1199507c3b 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 1032/1212] 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 1199507c3b..cbac956974 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 1033/1212] 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 2af16ddaee..da3e1dc683 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 331da15078..4df2f57d7b 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 6bb9d67d1c..c265fc916c 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 6d92b1ba30..e69a7d0431 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 8a0b42ca72..b9256caf49 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 e5e1e4ab58..29b4d9a264 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 f0170cb6ac..51e78b2e09 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 76cac0d4b8..81c88a5552 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 1bfd7926e5..c1465d1e59 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 027a73b4a2..4aa6477470 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 0e2f7f6326..214adb052a 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 b83c31b4f7..9551f4a649 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 824efd91f1..f7b4168667 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 6cc3e1e1fe..5d8aa70cdb 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 c096d8ffb1..bf2561c7b0 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 1034/1212] 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 da3e1dc683..8d3996f1a3 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 4df2f57d7b..1d85906eeb 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 c265fc916c..8c84de598a 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 e69a7d0431..3b941557e7 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 e18d500450..e510f2cd94 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 b9256caf49..4679396498 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 29b4d9a264..77cadeb055 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 71ed5cd042..f5d7793cbf 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 51e78b2e09..2398c11a47 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 81c88a5552..3f61df7ec5 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 c1465d1e59..3186928324 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 4aa6477470..a0da9ce18a 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 214adb052a..145db7511d 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 9551f4a649..89725acb6a 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 bd3b76f5c7..c785a44d74 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 f7b4168667..cda32c1a01 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 5d8aa70cdb..570f8b72b1 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 bf2561c7b0..d9b681d38c 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 1035/1212] 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 8d3996f1a3..5b3a75516d 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 1d85906eeb..513b160064 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 8c84de598a..bd327ccf21 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 3b941557e7..df6f3a3149 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 3f61df7ec5..c681538d43 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 3186928324..d7cf7d7a45 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 c790ea0ffb..2e9414742b 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 89725acb6a..c8bb463e1f 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 570f8b72b1..70c56eb65b 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 d9b681d38c..b440694afd 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 26fa529539..49d72787bd 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 1036/1212] 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 5b3a75516d..83394157a6 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 513b160064..b7cd52a817 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 bd327ccf21..474aaa30fc 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 df6f3a3149..2714aee760 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 e510f2cd94..9081a6fe97 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 4679396498..a55f64b22f 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 77cadeb055..892535c056 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 f5d7793cbf..9f31bb8a1d 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 2398c11a47..ba2b9bea9a 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 c681538d43..2d2828762f 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 d7cf7d7a45..40faec7cb7 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 a0da9ce18a..479dfaf431 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 2e9414742b..3db2c03db5 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 145db7511d..8221fccd28 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 c8bb463e1f..8e47b3cd00 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 c785a44d74..e20e53b4fa 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 cda32c1a01..720cf2cbf3 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 70c56eb65b..f2c6dfa626 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 b440694afd..b4b8022579 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 49d72787bd..43be41f7b5 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 1037/1212] 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 563ae8e444..a4ced88dbb 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 3722fd23f4..1101076921 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 d1273f084d..a2b50606bc 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 530ab51bc0..61e0a5588e 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 e77e99df28..1fc3a179ee 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 381e526ebc..af73328a59 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 ae7d37a4fe..498af52c78 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 9feff5ef6e..8fe7391a5c 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 4a5fecdd50..9099be1d6c 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 119efc1076..ff4d5bdb93 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 7c3edfb3da..96428ae971 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 b358186376..180ceb8cd6 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 5ac27990ea..2c86901f62 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 fdcd864604..974db31485 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 1038/1212] 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 a4ced88dbb..98ca862949 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 1101076921..9e4ef7c064 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 a2b50606bc..bff93bcfd7 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 1fc3a179ee..d7683b709d 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 af73328a59..3426d695a2 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 498af52c78..360717d20f 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 8fe7391a5c..4ec27fc8d6 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 9099be1d6c..6825a02fc2 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 96428ae971..72dc71d8b4 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 2c86901f62..91fc8ecb27 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 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 1039/1212] 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 444ec54501..9fced4f681 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 1040/1212] 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 cf53a0fd92..567c9895c3 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 1041/1212] 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 567c9895c3..68d2fef944 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 1042/1212] 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 68d2fef944..022c3ee6cc 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 1043/1212] 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 022c3ee6cc..59030414a3 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 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 1044/1212] 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 7d409c365c..b045b2d565 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 f7802b9879..feed7da2b4 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 1045/1212] 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 b045b2d565..cbebeccee2 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 feed7da2b4..2334f6557e 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 1046/1212] 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 a01fe6598c..1109b661fb 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 292bbccacc..cbacfcf1fe 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 3809ebf983..3239ca1c65 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 b2640fdd2d..db3b70032a 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 68cf1a2ad6..581dc71d05 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 58fec648a5..9686f9988c 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 1644f15337..6367dfbfe1 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 c6bff1af2d..07ba1eaf88 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 42bfa8a939..3c3a048278 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 d0d6444cac..7e91f34521 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 8c4236d97a..9fac4a7529 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 e22c5d9a14..cda3417c34 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 ada8074812..0aebc899cd 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 2125c5674c..f6e011db5f 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 1b5aeb3f18..636e562d5d 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 b10252e5e5..0960f36502 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 fe8ca7df9c..d0b39b784f 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 1047/1212] 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 1109b661fb..6a3e6cabd9 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 cbacfcf1fe..76e9cd695d 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 3239ca1c65..035ccbed3f 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 db3b70032a..0a5de3eada 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 581dc71d05..9620990629 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 9686f9988c..feedd96d54 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 6367dfbfe1..1a112e3604 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 07ba1eaf88..2baed1bfb7 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 3c3a048278..408ca97425 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 7e91f34521..e6aa6a5f1c 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 9fac4a7529..d871b857be 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 cda3417c34..24077d5da1 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 0aebc899cd..df955eab59 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 f6e011db5f..885ddc3e28 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 9dfd0d52b9..6a9849eb03 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 636e562d5d..586d683a6b 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 0960f36502..0fc8d6d616 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 d0b39b784f..537aa366d1 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 1048/1212] 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 6a3e6cabd9..51325fe83c 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 76e9cd695d..3dad89e5d6 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 035ccbed3f..2ffdba8f0a 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 0a5de3eada..1ceadd9b37 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 9620990629..ca4104402e 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 feedd96d54..04773102b5 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 1a112e3604..e1c59745f9 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 4560690ae7..01b4a01fba 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 2baed1bfb7..a2090f2a2e 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 408ca97425..480293e439 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 e6aa6a5f1c..f8a9305aa9 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 586d683a6b..67ce47c2b6 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 0fc8d6d616..1225f230b1 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 537aa366d1..ed345afb47 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 1049/1212] 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 51325fe83c..e2703e5d86 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 3dad89e5d6..7db34d038f 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 2ffdba8f0a..af055b688c 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 1ceadd9b37..957f09c7a3 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 ca4104402e..55de44e830 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 04773102b5..e22d82019d 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 e1c59745f9..51bcd37722 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 01b4a01fba..fa7b26db53 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 a2090f2a2e..8092ba9001 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 d871b857be..1928506edc 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 24077d5da1..bfeb4b2390 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 df955eab59..75831e51f9 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 885ddc3e28..52147bca16 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 6a9849eb03..f0b37397e6 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 67ce47c2b6..9776f59ce2 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 1225f230b1..b033bb8ddc 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 ed345afb47..b3f630d7c1 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 1050/1212] 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 60666e3f29..e28beaf6d0 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 1051/1212] 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 e28beaf6d0..25311d7645 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 1052/1212] 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 25311d7645..c2d54fb968 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 1053/1212] 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 b4894a00b6..3d9c36279a 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 1054/1212] 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 c2d54fb968..818b7df810 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 1055/1212] 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 818b7df810..57c03deb47 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 1056/1212] 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 3d9c36279a..531262c750 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 1057/1212] 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 531262c750..eefff67b8e 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 1058/1212] 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 1c46be7da1..cdd12cc4eb 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 1059/1212] 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 cdd12cc4eb..fdba6806a9 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 zcmb@uWk8f$*FUVHAgG{#gp`VabazP@bm!3BHNeoIbSvH6T{ARDHzVEM3`6%Y@Q&v` zo;yA~U;gh0;M%>ewfBm>*6$)%UiR}dtXEj~?%jJP@kLzm-o1x~_wLQ zf%9zFZVtvuZnDaTZkC3;Ml`}g&#(ks_)s%g8$0U1cCogy0rI&BzWr-rKGgH? zYUZ~>0uDwde2U_q{_cS)3BEORbhP7RW(I*kOdxh9TL)8SR$g9SW)?PPHa1374@RJ? zjibH`qYaSq?+L_>frbv|c8=z@Hm`qAsBd8F6WBy`&JUz+dhERVTpwn~?t?Oz2-VsCPv@{ll5xZ2E`0#x^LHf>69;h)H;Y+Dcpr zaS>$~oxKH+ma^&We#97i*DDOtg zfs%-2<@B~}H?(jk!zeCl$R%7xoZ4fAa zo<#80B|%P@zdb*l@!dl_ygOIF-=*0tOyZ`I2j# zT#}|FwWGpX95@wYJY-*J4rJm5y6H3}t(-eEayIgovhNIR?9S%v46lvY&*^&hfJ*n< zPc)dpk-WfwsXa9S0L<7*yUTZODOiq3Fnk65ydM4Bs-43$-4cP_lhsP#bha@cX`P;& zm=TAWJLf#^24Y6fuj*(e`>=A)+ueiC zJS34y4m1^4X!r_QXCsaE0TcFlV(+fjs;}wqT?|4j$UIiOzaDMp=A-Ebwt9bsd9eL} zr!5B~e{P^^ac`~3R{NZlhUe?~z_=&gmo3Ubr=5p$k}Yv1^XX6I$Lsxyyitx|nvZm2yitcxKVQ)`-KsYBqDDWRr9W=lujk%+C)6!MQN zE}lLmaV<7|NCTixs~|Y~zUI|ZKIUPB;H8mCAOGPLG~&=)l*e3Q;R?^zV$NTw&Lx~c zz+v`0T}l7Q(q=2u;XS`JpbtUy_2y{I-;YRI`sR=&{kD=29s960A2jNn4Y7XEgz&O>Gpv_oo-A)yU0xqO-(^GIV{gr{1{|OLS?DzQhN- zKaFgktT~XvBQDa-$59Tu3%VJjaynRRx7W$$Lqi9jO%-w8QiQkm;enPuZdJG4VD1-( z7egQx059#bmD!nv&J#_m%OyoW^*KP1&B`nRS{w?a6Fr%PiAL6ae0@mf|7b$v5OOyO7t(tFkFjn8IIT zVZO_A-oUZl#5WRQT+7(2+>}H`vBOrpYmeezx@yfE4YgHJ^Wfg_WVec&&w{`H>COuN zSGsDus%8qtXAtY3){-%D^qSFw{0EKDgk#rzPcGTxEoJkx(}#v$e)2 zgx@mXCid}0Zm`&uS(EAm2#L0<4#lFDYBf`cUXRm`LWU(Eb-tm@(?*;T2`^40<>$#n zf@8z9tNHDP%0K_bL6bt*G)!^M72e^Kc^y1dQ|p1e9Wj!f75lI+KA7ojk6@`(D7OHOz)yywm=Gh8sbh|p6M%MmaCVl|RN zwyVM@LG@LEOqC7u%f0Tg(7D5Y3eAbMpg$I2wMDPaZYAr19xZQRq34sWGtnUa^~O+P zUgm~pC~@dfTScs(r=8gAfJ|?$TfJABzWlA$JE6ZAhyPQnXLo#k(Mcuh{pZk0%)aYq9Fn|7gtre=XMkgR%SXp=Do1imam8Q$Q%k^hSCz9@fO>e`t%vV7zzVh}=RJo@D2CZ#rSl8f_PEp4yVK*r61xuIHbkm1>@4i%!dDD?e+H!2GtOavNR2=cjZFO;r zJffmGo3f^dLLBE;gSjorcJkB7^l$Zucx>J={u(ySN$i81kys79>7Cr%+(`*5VtjnU z&gxR>>_sqUbCiSrFxKr*jeG05d%eQIzVbv=<%-XXLPf82_+*YzuR$;&t|Og1Sq=js zct|a0W{F}Hf9Pz^bU9Mj{gq=l)*t;-JH`31kQD4 zE%IyG0826@e#y;r5*jEmX1>w%Afr>dZ+YiDV;YZH#`jcu*bI@HQZvn|r`i(nktUz@ zF7DyyKMFs{60{&f=R?pOuq*U*Dn=<)Ls(kvZ7#HGB>ow;VaGM^Ih%mfT}sj!HkFj@ zMnJ=;U|`E)??{#Rrjmo3P)Cg-$Ce_qXK-@Ee5L2qF_`?}v&A;Ycs9E5IYoMqbps$T zqGvI`rD<57L31Xdj2Y3emvpjSknnAcKVjdl1k4XyrktIrDk#WUU)SS{nM~2GMZ}v% z4a&RmV~7;Mo9g)QUIiMK*V~dx;yS^{J)t~tb?{nd5D>}{Bla9xuPk@h6oD&@?~v? zUPad|f5N6G0O_@qlETBue>uD(;g-u+f$dl!_a1wLO@#|l$G_Xr%J5hJURC^V_eKMb zrbde9>Nfs#Z(7HiyRT&g_a!BGyk9$cKW-*B^SZ^X9H4i3ZCy zzz;e1P=|G{{>q9KP7v6D`E#aVtBM*R{mhP$k5jwWTc$8s@E0E1iM6p0Hr;eZ6Ur8; z(p~nEEc9-hk|@!w>_E7Hm(d-S#l%|aO(R1qZr0CkgY+9tbP!DK%FW$X9Mzj|$Gw zPlAz2R)*czSojW?V?mLR5&00LsqL|!$TNAFE$iFdIU&U6;0WmT~`SashfYc`q zF&^EeG`xg)O+@|17p?}(bI;>XM32@Wb#bsAFlpb7#G~`D`kkl7dX~}69CpifTQ$zs zTVMDc7OreYEZ+;!gkCAmecq5LcBWzo@fdnDuq$o;W-q}An)3=Wowax}v$KbtG|awu z9i;Gx>Z8cu9Z=3n3LwB8exG>fM#^%`bo8w?g`6ACdG43S0Do!2TZ*O{q#KJ#R{43g zn=K>x(JKo2DA7N5TbPg=Kj+%$%)`tOacH~7p#c2G_*_N0ZO1Z!qEJM@)!CO(e)Rij zsb=?Y@v&~Bson63NOLi)RLaPq9vDbVT`Q9T4eaBl?=ik^iudw*tIIe2;JuSMZ`2j` z*P2(mIeTqJW>gv$W}WsAZsovXRqVNsY8>k0%amMMX;R~7v|)m4+reJG;0zcT2#8aQ zKXzi6&8(o8q<5{3uWX3J-K{3%zD}5#7>*}!87)dh;AayEk);sUpLLQ1PFP;@_f!c{ za9`ZS=lWmP*z;RXg2&4At=|;T+E zA?!5p9$y=km*&W&P8FJDondh?fEX@-(0J^@DNjHm0qK){K(x~+>dl3LPf6?ZhZt3) z^s>5ufC;vS=3y90YP~45pXd0?VMr1%mx6VF>tJ+?yqDNZ=L?)<=>$Ci z!zZ*G-zz(KUA80+^weuKEo(if~7<>|R>iILN~WyWeVv*YF? zmIY&#*~WuBI_2!Jt!hiV3YgKp8zTbOh8ZbFlC7jy*mezny*<+LwwBk|po zQbRs@_P$P^j;7N7mW?bOV}Uu&!uZF7AxZ9z5P(i|WhWZPOK2DPQ^O;7=d~r`2v6H^wd|XnxDWkT{58eEl-5#v-}x zwAE-1P1bahSq~)7(h8&yRs!!y5kW?UeMnWAXq~Y%&z70f^H^po!qGNxbN}4-+!s*h zI79>AoPKO{6VpK{O?=>oG`SYL1_+&#%2Tc>b2u~y!ixEgYydfbvOe?d8adv=Ewr^G zuX=fD82$5H#!>ToJC}XKBA#u*$?^2;HS!v(r>`X2?me^8nVwbh73Z9|m-wYgX?dD$ zm5Q2$G4#8`R9>U88{_9H)=b}h0l9B}rB3l~6J7dmkNIZlm^X9E1P1d^`w7?3y*9KF zY2f2lONH;!1mjTgsxtzCLU-qwquLSL+WSq&iqlLhCm~xV0aq@R+JGDT?>JV(BPJZ6 z;~&+AHGl`^#`zEgTeo!MH5(MAo5`0fi)b$z-&`9e$psEIz(!7nlIq9FlOJM2M%&15 zoKEDUz$b#KA3Y9J;ti{n$ED3~)!+BEg}Oj;@4L11#Yy-NR>*x{3>P-0M@b$l68eP46~)3d$$R}LH@ao_&r~}b$phn%nk4~Hu#T9FM9y{ zUzU<(Vg3Ue-nc~dA9v>Qn@%Jgg8m;t7(cr$>^Q`~<3f)!qyEo8(0}{J{}V$3UOEda zAqa+H|6b3pZsY$UA|&zs{|F{&q4_Fnh$m+CI;fja(F*wGCX7 zd?MjiPz?+IE?#_MaIYlz4Y;h4e6sVoG%JL%HVWUS-H7c47;4_pC`xwG_RK*52c)BY z@xj`vCxfT_pF7FE!n3D}3z{0N&z{CyhEWfte8@OCwzOxTwaaenS$@YdDLosiGaPCg z;i-V#MpRBX#?oW)xyANPWnOH;kO}Vf_?{w7{`o%o6mXGjxC7iky!Ep%9DM-|MWY{$ z{uASwh_>aL#6Qc~mp9P=S6J@WdF-3=ZCKMAw3Hv0B1^pk_ek@PKUf+B4cONS28_NF-CF~C@9|u0 z*hwqw*-wum>y;zvi%n8X?>rR}y7NVji4a$n>1csYYggIHz>O%z^}ObQh`z=Allos} zALI5H?Y+}Zw{r71%5G2gTeReLKkW#pA_cb{6qB=M$y}!wK4R&4@2l|P z3EvDV@w?c58ojkhUscB1bs;-7_5nw9)HBnP{d0c_T*!H?Lhxiwri3GzHF-#rHa0fr zkhMY`V4{P$rtORVwbDd2K&+RIeRF-J;G>**Sl?r{3jl%W>;r9i2}7B%F4AUzC4cyc z&^1^mER8@^^OH=46_kr;1X`G5p^Hxq5H?|Nq~v0y9tqKP7ar`=d~SF^ZDvXBsw=}! zh9ph4=l#u^Z(OWz#k}{1zjB!FUKR1?**UB+V#6%>wHv&V+iubki1H|A>(e|6T`Lna1ktB$45IWK@S*Uk(yhmb_p)Xw25 zj0!_RZROTa8-E|A?a-T&cm6nfN`CMb*6OHAzunC`2eQB{a@}viu~(cuG`YTil)!!t zDvWcSZ8*o#z0Dp|@f~3FhO0Mjg*AX2>v|SyLP2CDvrb`fGjq zwNyw(7^fAaQwU@JUN}-=UJfjffr>J*mefFH@O#J2030Rzz#Y?rfzaC*ocAHVz45_ZBlgWMmQVC#ivHt9SqVcn?4Qe$^BRK5UBnYML zMT*aOoexrJcZbP&f2s%;%q4J;S$TMl*;8YUGwIovKzVIBqrRH{yJ$T#;i z?&LvVF4G`T$W!N=Wjl=XpKsrzo?0vBC!+o*SgnatL9Q#NRXj0l8hAa=VJY@&>`5Fa zl8p49hs1*?V#yY;P%`2?6_tz6BZLn8gx|MGl-F>D&d*6A#YhI!6uW!es~z`LewVBbKQ&N-w-7_Jdv$8+*F65zngVb;T`C-}gZ!j7{KWvug|}ie z99x{sk(VX2SDBhW`pzI)OzXN9U-Qti+}|5@PzrnPn^Sc^-$WTMJY=x-=@5huirV~0 zZ@w9807Xl6FLBa>^}7Ai&y)K5zu10Q?v0G-WcvgntBUIq5%VpCtVu~w11h69-udN> zUc0~ibAW9i=;(#7S)939O+3w0f@9AaULrdu4fQl0e05>v(@2i&g_OmO7XHk5J{3F$ z%S=CY{Rw%2y&>x?ge2CNEfz!+$~|bz9NPS(KtkaG7W(Sb3yqL&NF=;yWvrhOfQEcIjlX;IQR;%SE%)x{5vv}|RFR2Vn_6XItJx&#%<}g+6~eF}&M$3c_0J11 zR-ACwu5tK0hfI*Jut|N@StFC8Bi4wG$vLI}l>Up;g`3^?k1?(LmvP;AF0fI^pKT9v z`^Wt2TP(G^HrLrsQ;U`}CphEHQ1i9!M+y81nuy+LaqvV--VDM4+nO!3e)i-MSW9u^iA7oW-bKR>&?PNqm9 zM9E~`$Cmm-Uyq6x7vOScEm56^5iPfyxL>yS)80-=Z}%NI>jPKXsftp4|06dgI*<83 z0mlC`i}XMA|33^3ctXfTcP}mqSaan5y*r$Q-_(Ja_zfKHzw1B z8_qWbiDD5x-Rje)GvzP(RZg8c!nUit|7MHQ6>$U-K&_~ zj9C?Qd_nWBk~EN7D*ADFpJ=@~^6?w5h$>UiJHF}=3xvCWEcgXk@M1AQwIS{>Vq~wp z$k`*kl2%*FMI6^yC1efitU8Ge|KihnvLx2_PP2%IrIAvCYw6&tFJ_SAgrH8NwS+N7h5ZNbncNs!(>NO`>{KX<%+Ij z2NL$&t{bsxm#udfcYMswBQ@qq)G|rp*`LBw)D}L{sT1V2cBF(Uup|)khttdBI-|-a=q60^U_|&5@tsap?t}~0nyhUx!2XaC{Jg2 zZqWvHP_%tzo~=v~7|<+ay-s+Jaw)?CV@=@T=#du#jE{ZLyEmiHv*J%yHML>q&ZyP^ z8hvoHDI$!TQ~2x8B=l29L9#tEvVTUkgX*a|V<>McRI<;ce+jE?CoUoSQ^5uGV8xn7|t={O{+`ZnL>F}Ufdb9$071*p$yTKD}d=&hnnA)KWI zZUGJFneAFtSv-L(JaTJs{T36iIZ}`YT=8m5>rDHy;y)SA@@o9U^8n;*q&sas%T1HV&%VV-m&}q# zo)0^s%RyShqz}yp?CJ(=eVLJ1*!0Eu_ECs?_ zeajRlB5Q940YOOU_M1*LM@Um&5A27#o;7LQ%kdASP1pTQopdUr3^tk#*_<6$4K`Quks&MJZsLreD{=s-~UBG z=`0(4+ymVQ9&LKPCMG@i5boN&jk(+#zWFWd@<>-Z&)vq9As58PB&t<7DGf94{wGCzv$3#PoyQ>*9O*HGsU zZVJB32pm~E$MDC_i6X}xjQ(U;>WzYhO!~`0MiVP0@O4!pXLuX2OU^@oweGR#A$z7F;yikm}|qBN8%5Mlz9*K%~a@jJ}YdDGSvnsLxBp;Ci%kf z6YFHH&n7yLU~ehE@HxTIw4!O`Hd}9Dtto_SD=Td=v`YISt_5YWNtrc)1;g6gW{Lyz zUJaVhlqp88Vd%~7h@_#U?KjwMal&@-VruxP*f?jgbo0$C`*O60`uTE3iP=H z3R0)epGI<}KIc0$*@Ko^Ry+0`Z(F!41s|BJVDrS1)RRRF7x! zD|x@#(~RnANn@SDx#9B?_LexVE)W#xq%wdmrlyc%{6VE8G{>C~4*D6U&9vc$4U2ukyn2;FV7wM?&o8ogG+{@gh{3VO2PPiv8`|v>UuiKjHDj9e%H$){k_T zUGmb>`j*b`)=iK!O}AzsKJyFs@`k@wgJLOT`q1L(`v%Z~Umr(o>Qees__DBTmDJoqlL!Fo74UJ?%j<2-)hxVfoR0%Ahx}goQ@2~bz2m=q(U22 z(w_KqQV3Ui)I8W1v1@|sE;#!M1xuQY3VV?6!!>mX)rZbHAma~gwFA~sPBfxnl z$_)o0J)e1FCjoDjYt5C+EcISEA;a@T(c~P@MC%`ln7*Lbn*V%sv|q|Fgb)!-yG7wf z%mdkmO;f7Y0x8BJXTox*@ym|$@l0^}ZhotS(o-F+j2pY1s4By#$kjDLS&6$94C_WA zi#yay3L)d^9zh_AJ;iH|<^b~J?>!4QJdW!zb5qvcM!LBNSsoh*3g`ED9zFCsgsp1M z(&sAO`C7^?P~E&!k_u&3T}Q9Gz6x7}uUE2W?G(8=9{!TVPJh>d<)rEK^|c7HJ{GD@ z1z)}B$GIAa^=c`NS+w1vCv0ua!DoW!U&=}oK2e}_wPUc z+9F9$adr_5TI!O#?K*(39VW+=dE|#@+nEdJF0FcOtX>fJKWsgcyap}JEhSH|UemS+ z8ODwuFwqH{K@m*-YD`|`=b5)9kXY6($UX*@VTf1jQ{yaMUE{u^(EbZ^youY?VWn<- zVPnyLP=6N%TTHN5i)8Up;Vc)#vsDQi-QkQE!{LsAq=T)a?noW;q2x!2xdZ5##+~oqook^NP?|7=nuEWQ}}jmpFA~W-;^T#HeuJ>=sg|= zqtbEeaJ{EC3{!Hpb;8hL;bN9NFd{|O>$2@AC0&c}!%i!Y+*R!@k5go-(%gG5Jf#@h zR;7c~=mGTir8K#8OI{bvRX__8W6|ThOc{PUVwbL9Wu&(e4WsV+8k|YD;U4QsR7B zYt?1%qm9OzKFLPf!hY_%$;Bt&o?&x%Oz>Q*!YzC=O`zW6JDc4R=0-b6xXv8pGg~%k zDnr5_+XttnD_pt(TrHZX(EDQ0Nk#I(fg|RmuJo}Y)(G0r8VIxYY@xKdEzB~XE!UHz z3pDS%0rU1Q*P3PhXiib1&g-?pAAb=XJ%B+A*F+SwqBS+g>YPN<61EJ;=hdVaGCaC!#i3q2!Fl67jtgjncI`~7~2?IuwkJS zVzN2bKd@Dy1)(30S{Q&@m}}#vmM~U|Kkq%+Hv;;emMhsS{T}?>ju?EWdagK;(8$J! zjZvzN!;!K63viRS_AKi}W~%lW|9fi;2Kfjtq-{LVcB zDPgQ)=5E|RSswF*5Jama6CD#%&h(zp36ZA7s*b7YA$@hdBzsVPz453xrtOVXtfA)8 zwNs->LX0z>uwqL?2H8P~UT()aykCuwsYtkXra>D0e6`k{Tz1^lKu6zF$Y+S3g2Y#Vy$PPZ^p)A%2CX8LiqGa z9?ziKnBb~;k80Fzx~)`(y-rdUYuLnD!SK?-yBm7c2@Q<_wafH(GMdKPw$LjsVp5ba z2%g3s!!ImI#?Ywg`%GI^TY$uoYiqpI6-90-rnoG1bh8o8u}cmXz}}3g z*9bkBxAf_Dk?6T?o1&Th;^5b*Q2Jojo`%FJNpAfcC(^mIu#Y$M)0;p5<{DY`p2hx~LpRod z@9RcY6$Y%R06e^fy)f}xJ;5W`qRewaa2jt$RnX{dqhaIHE>fB}!$3&x>x5V!8vKs)+|8c4jkeFo5^?phTu+%EZTaKf8!vo(0E|2y zYNjgw@_B8y6ThWF!FhTCYYtt*#a9SxiAyFG`p@!I3a=5R#~eiWgdfaW%&8w&pu+6G z&M7L63g2&zMXkK=go;B&+VBZuGh#GZ0s}_I^j`nsQk&S(Vj%N48ec3Zv25QV(rY(z zi;XGrkd5bSotv*)rm}zdDxAo}W9I`4yRKRA$YY&SzI*6DCGGF$$kiA#KU*&S_EuJX zKD>*IW`eF=Qs`~9a;D~eONslE{XBf;#7bxeq3`J`GJb_bSUa(mC6Z570PM*pT&S;YLMkL|2WKnX3_^m9Fy z$qwMF<`qDW8p?7!@)fHHeW{={&y^gyP{Qhb7pQL( zpF1nwsY3U}^L=*qnzbaHX87JVI2I*3dQBNKHZlZiXq#5uRmFXE(j(C3pQ}1t>~i=x z@RlCXBagTpn{ls?0sm<0+#tjyne>lfzi_xBkXwF9N*dN@R29!zYc&(q+uQ5jFvx7S z0ywo8B|@!?Nt<0E?S3GUK6uF4btWyF*0E<}0a3oI9mHP;>;Vb+Ab=tWKuzhMM)l5Q zE+w^+_w5hBPu9?Hic?gK!@jhkF2m))T(-(M)Y6<$QA#2zu@4?rUfO=;u(tC1srN19 z32m{naA1m;Y|$yJwVCEXj<=~Kmb@a(G<(K%Yiv0=h-~S0`|9ScNs4BBV6Iv!bx^q; zQfXnERIi<5lhRATD2dV8I0-NmW5VO1(u4vuT>e zkUZK)R1*_Im$i#sHKvmWBW$T!o`aS+pzP>A@jLF5-g40V%NTrYqc)P}OMfom*sb2e zhw#M?)7V($`=xnJLqKbc47PIM zisSSRE$5_^-NEa8mpaRP)MHXsSGVu;`-|lR`Gfqucee?B%VGnCwP)4&rWk|)YO zt4=1G3zX%)$pZ05&`t``%QH3+2@Z+x<-D^H{bE6@zt1t3GsPP56^!0+UKy00{{c77 z|9jjDq+&dnf|a;w z%p>Nre%rH%(I&55zm@&7cQ%#5SH%u{BIK>a{JleC&E;KZnLjG2px!Z3i&3AXcSnQo zmChgJow%m06XAQ(8auxgH25sBDLW-Sj|CX}&xtsc*rZ1ZHU>S|fxc*tat`1XlSPCcMc zKgy}vI_siWgo9T{9Wv*X_6?gk;EfT*=C826-`@ zpdacwMQmuQ9Nv!Ule*Ie`t}SZfLdgKGAEDYEg!DqP>^ph756V#%LP+D zz|PX`)RXIwYOMu`P)wURg3?(f=Z3Idz!85V0b^S7r@#$XD~6j9q2TMpGr1RO7gz`( z!GM{jcwy(OmohM+LYt=sZEch(72ahFZA5pvBROB;9Cqw9USvm7&hcLz!$Y_#dnP}b z<5u>)@#B|av8JtAp3-@O7rU>o^kdD9gjp9a?$UpME1^g#{h?}-LGXeJK<`a0DubjM zKiQn@c)ui|ejg$Kva^=G zFwFkw11e!>&<+K7CdK~Hfl_p7h(8;qGHDd5utH57AJMYQ4qF^jFTljD-}2WDbnG7N zAAJ2WlGKR+@e}|5{g=&!U835h0sS=lEKneq#Kn} zv00Y-ko*Ahj{fPvS}yvln))ILeogz5S~%ckI%=G%yJAB;z4I12%}d7&msRXzhdw55ZUA)(j3Yj@t@nNpiO zw|Uhmxh=Wr)%R}MC1;+5+@7_ah3V{l;pygd8ahXsXv!(Yq9M*lFPpfx1pDcd*XG{% z2A7*E6dE5Zm&m;KJk(2Ld1byZ93QqoVR<(KeZvV}x!Y+$ykuuCspdPFo2DPUvwK(i z$`Tj=PHgL3B;T!NA=qjg?-Dqe`jQMP!idfzo=&sQl?1UX$KYq>MC4o2a7Gv1%|E~z zB8WlK8a++xu5N)K4^jviHK%=*QFrT$+xU;;Z6{Zyq}ptLNQ~Q$vA|ga4NQMYcTIDV zzLW)GWwrXjhH<@@RQ~Vbo`)Q-Sig&DYI2@&ZIRrwl{0DH2#L##=@|8&@H;zfTDb_F ztudSUI$9h5!}F{NMylk5=@H#^i;8$S#}>yHB(mgtY%d%BH1i8VQs@^pK(2BG0N{Mb z5r?XBtu^(sU@lo(>lBP}d#-K9k`0P!4;SJW7;Nwv*?TdBO6m&)2XUXmK3%#%WsB%w z$% z^je4TwB>^nq(&um;(%J&19?T|Fp#C~*#J@hMKxSGH~E8|w&u!`8+RyoOoNdbr*dlR ziNywcQjIY+3M~g07Tl)}E>rs}waN7x2|<~;NixEL3aGyJ@@W{#(ULxwrenVTEYEK5 zmj2NBb24!@;vgCkJgxmGBJ%57z2@Mr>Mf1!XwHFxzQ&d<# zY;;1oMtNF@=1g5eqQ+z*piE+cr|5|g=3WRFd$(%QrofBVzw-ZZSTyEjxzmrA>~S1a zrFnu%k0o-yN{6#O=T>J_B2t>ZuZ#NhP0su6GkZ?FeAvV8{kM5~C4z!pKOtY7cl++!-~OuQ~u9|(R5Bp9#92* zxxOZWdBi)5h5->Ie7^>Uh<$BfeP47$$*11-5)+k1s{Q+9b7R1Z@g9#E0m0_PY zP5#-asv{swl@LZ-&GQS$w4*?iINrrIQp@M+3XU3*MyxNDE7mVFx|vaV`AUH0h;A(= z-U_+3k>F$#LcME9@BH7KkG84N6CRD2*$V82Jb*_QCf0arQH9rK!250gz) zYH1(7fFdSh88-{Ie(JI1Ip!L=WbxJ4gMvZN*UBy0II+^*gSNlXuECXdT0Je{6;lV4$kgqR-nu~iBF4H``4St{ z(7Fqz)`rN$Yi&y&@x3C-7(I14;UN}NA{rfXhU>2EhC-J&^mDd^M}vhpWA`-^HSdP> zt?mHKuejMPa=oK>CTZ_Qo71bIt8#CTi9~+&o#6$~HM83{xC$YY#yw6}&W=;#x+}Fj z33P;8AOs^trBEo}YezL+mSme$a9>@|t@us4+pnC;ALMA?ra9O2QG_ntrkQ6pCZ5}w zK9Ht{+>9p|q5EN3%(?`Q#ar%MLbvkSc?|h*K-fQxX4~bEMHQS=h8d7Z6xa|6{&ma? zVcP8-eSu>h-PGD1Y3unDSek6H;a&S-IXP#r;yF@X%}MdnGT}S2Pc3gv!D6C6Al;~4 z8HXTpTb9NfublKE&)>oN!1Q5@#PO+tiO^!H3B$F-glz~7vG9a1m7K7&sW%=o#aWiC z6I}OoW)bZMd!o+f=+a$pbgP*r5LDw4VV;>NE?kz@ArtQ=9~>t!QN=CxER^`Rg3rD| z=sv8k)rO|Xh)d3Ks-Hxd^e2Y*ZkM95YVo$0un> zy%%I^!W{=zc)$3ii*$tl`G#}$QqTp_g3ROy{w`5*Oc0BSWzV1Rq_uOrr5=?m{OzT7 zNRI9qJEOoDuZot}<7;f^Zf2#b9?n$r{}5Py3`ERdSw+H7NrH}Uh181JEzgBVjk^Hv zQaTsgVI8+SIIrfUnx=ZOl>uKq%jGY?X_fKOc;UB;fbe`iuh2OkowmN}8e0SaGibX` znC4{(iBMWm-B8$R^`l!3V^~mvX4eCNi3;jQ)z0+-;`$^T1!C&>-ceF^RI^l*xHad| zZMhJIdA%p|K-e>NKbkJ_;!5k9W8zU$|0FAi6<%gCH+w_)E#MwKDi8d%sQ%8#2nM@y z{s}ud9g_p@j8bt~P5<=1yYS{OZ=tViHCgpiQFn}klzLmH6DrKN$`YhzJHaqum>mCt zVcK&~w+8v`W}cP-+fNN}MfqQVr_6;iVG59V#tUBLJHZwX-uzdo{y=PC|a``Y^V4X7hx#&F8aRmL}m=mr=${FXqhgYbyu#G!{T96R6(tmy9 zOZff&M3)A>jvaZ=O8=&;>+WXrj)xfqTCoqk+5CFv>tR@5myU#@wf@G8+-`BVKDZk0 zaSzdA&!lOc^B+RPxxvbA^Z6a)$MVTtPifNl_eaP<{OxbPOmrWJyyCXmYYKm!MW9x$ z6FU`#BAxo8-+limOkg0HSp zUmYVT3QJ1ji19nm*gqH>bDA>W27MF%jl-SS-Jg9u(N&H*n~hjoU4H?fK&3?%A0H^M zb`#gQOQ6=OgU*9RiWrYluihd#x4O=%r~~xa630Kg;Ho;&O03MXMWaBjPKCcwq@BoB z(PODWk0J_%AD+QU=Wle?RQPQlq)^ej-5a62#(g;xe}+MC9~?{S7MhTME8?XBPTD%z zAiz!AFNcuK#20)_H@hF_>v4E`FAKa8VO@wEBprz_=vCOOR-KWWW6Eg~53^1=hs^VE z#3vMZJ1jQzReA%w(^V8pQz+@(GA1Lf6M;3 zC#=`7MbqPL2rictcGA&q^i+5{&Gl`;gx#c?_=ICx2}`fdHVHD=gsXHzgu=~$P}rO| zewSB#2fP8(I2Ye5c%#*3n+B3%n6)2p`AenKOdyyCk#@|Op)_{RI;8#+nk-o3%cI@W zMQ71esl0txY2GyF>FyHKDH84LG>0s&mZi2^>*+zm~&@kJhnyq=^}Qa9hvp-GcCB1OCK;buTsd#nIK|r%0v6k0qmLd?TWDfI$pAs!`C~;i)Fron zV4&V%BjlvWO+`g#v-9ht^R4T2m?0zA8sP{9^V~O~Y+^Xt^DlZ7bL}76I~dnBt)PE_ z#Jz53g-_q3!(pql!i(|cr5o?D*@37yjD(bEfMCFgna^ei=978okB$jWJQoVhj<&S& zUtM~R1r{E^=16>jsfH(?&6nmgyu`GtX}Xq zpO}WY9O7i}=$-!j!2ZB{Dbf(5)$SFI9ao@lsZQqSC)oqs%P(y-Bu?@Jj(v^#?EmQ#C}M?(6?NZ=HH#Dtn{{rE&eK z=VK!1(&=m!$i_Rn_R@{(0#$R~q0@DE)Ox9Ee{uhgRO3VzSK$0b7&)gP#JdEiM+os? zLnu;FWzU!RbHoozF2lvEr?efL-<`m?Ak)zwG?cZZG~7#Ju3gWQ#2L1xg9UygZfwSg z77AO?P(UYQkXHVl)z9){ReYM`IW@wD+zs9-EJ0U%L(X)A;YrY0Ju2gvZMr(c? zMB>}#)25e^ljGOfDc*uS2W-jgI<5YE;B~#ygml%=q0>!UJgAVdZn_Tlxx6n92kK1M4jGx-`_z^HTibjp6EYDyt3 zWVyCs*9SwhX2s*YXSZ&6^N?5MAqV#{JW)wtdbH6*r^2+7Yfw>`Cc8X`CzU&f2zEv(~>ym$dsp#1;Xd&{V}+CI%Uf&>W=+$8~m z1$UR=?!nzHP`Cz%;1+@hcXxLP?i5hC2iL-3HqX;-t^ypFeAv-d|3kx&ECL$hYU}KL%!<{crkzDL@Zy0xVrD05a*61q6ih;rxB~ z_AKSnxO;(QVC5IOGM^XI8-wyIF~ufwe7w6(noh{DtJjY=a$2)pW~>(535?4?4r2Yw zWIcnF^rbB2B0v(@{(WA@R)qM+x210HW01X{DuP8S5QuX|-6pV+%SEDI;QdmW5FSZ1`s7;RH` z^B1waJguImy&A1N@9#BhFllP?MEq#Ca?lw8YCc_&2uQNz5lPiTD69GXW12ym{jCpQQXEB|2VO149^UsERVZ-jGarHXYHmQeOzpP#)(S{Kd$U>NZV)8 zqpX|b){_g%zWPFjnDyGA6@i?QG?g&;uDgNjzR*v|xR^>~s z*4mju06cNs(E8Io0$_-b=E0hCr@|uMBGB9XvXub|PuQ@>s!@mh^ZSD#;~g zt1Xc1eUGohQsX^r3jLhN;DG!?esVI`r3<4ySf5|O z@zweFH_YnRzgnsg1BqL5_nU{R5e^R`c$t}mDHg%;;kf97mRkU zxPTD`qx+r^voQYy&-QT8zBPqcHK$5#@Qi%>FSs;9Xt`)L&_Fz>c?q+N&l~!X^`;g#fd7xzT>w(~UeeUVa<8nX% zJJ`=4ig_1Rtc}w#@(J9+wlg$j$^2{d2Pn^kfOy*MMcR^Z(HXNmJ5Nv90cn=N+#zRD zQ-NY#WXPydBfdvS<3sZJt{8tK=8mE^rhJ7BGqe)YnCbx-L~N@(HVE1G_-h6y6u)Xo zCX8NNY#P9kQwvI_34-M;*;SqzVKKL@W~ksN=a@J{KGwwc6TgP9p32;`W0Zb;C$Z5dwu{xJ zFa0uCGqj-X*d|f_>q22TxO$8c*#f?xph&Fp(&!@3DHwela0Z_SRXIRDZtGe*?!fHM zWxH9rJc|8`+i7pw3ASK-JFBRy$WhnYW%i7TqQ4#pFzd^PJ5ZfgV_H^c9}i_wlABOi z2;q|nDV;nwq=ek{3L&D-cq+6;x5R$nyBigI``_q)v! zHw=;+oNE)G?T$&4lx5Z@8d3HJ#wRqfK#BC+mqXYzLB9b_k_jGI*v(t~;mG%ml`RCC=TFh(GZ% zrb4<}c4a*uRuxPeZcIBgNZR^-4R{=MRt1bCwM^E(TQYKfM|8@#%zq~-`w+WlDLS-D zlP!9_V(8jHq61ncyBngxghi|`6LyPSR$d#XzW z;<{!k>q^|DlJZ&SZuU4n@zl!myxNy$7KLJtH`HI;fhpyR@#8Oq2+Kb`E}HoL4(C>V z@#9f>5#gH$3qnqVt{yLjSe*$H>vN-x7;Zpg%U5gMw@~5%!Q$TwsvR|n899m{ zKJYzy$8R)t&!5kUI6Bkt!D!D)1FaJ&#@;J>RFn)J zq34D;mtIpD;IOq#xEarx16;LOXco@3Mo6vC!@&!7(E~~$O1bCdZ;w}Z3WxySGD*S9 z4YVR?8tH+In!h?0Xl#R0_`9t|;|$#{!e`Nhz${R@mM#bQPLjsd(dz>WwISi}-%~|r z!c}41-SruH2U+Z*wuan<7QCwqlFLeY>H}dQ{1_uJ?Iiw%F;-}6zSuTgdb&py!%MuX zI7+&8iBqi__wVi4S6%n6v|epIMJBd}pWr=Sets`6aNs*}LN)fe-l#vEG)w$qE3Mea zRP$$k>lhMs`KdORkNXN*C&sj(e+Q>abOt52vbC0p^;X z0+LCHS_{KqgJwrkm2g-X9H zQV!S40r5EMd&k;y!}?bl-odj=8BV%%Jw*1GdoxzC;h1cHC8BRchee1!FNcH zM0=lWe7VtX4b8S4p=2=w2cz|Z{e4+poPANUWp5(h0K_#@HZJ*)A6K%tngACYTYN1+ zDxTdR&ze&*|3=HL%?V?)jU#?FK)4L%)Ap{G*Y)kg+TOX;r67E}SNvR`-O2AVUr%Vg zF6#`*f$zMdS2K|o$8F`_gd?06)Wx06COn4F)J4`{)yyX!+!%pee?{~;Ix}SSy#CB{ z12r_YETTLV9uD9roOsnY_;*SlWi6~r#wnfKg>$pgQ*0P+9K0VGDOE;xGP3c{*QUtm z_kl?5cdazA%%aPtHyV4L#~RQB5<$R`S5*Z?ZxxHcSJcq>!~V_W{1{})pZrvDZb*!J z2frhQs^sa}+QMzLgS} zv9H{DosU;m(M4;v`&`shuqC!aNvnssNY-pNo<>`2;N3bv0t3h03C+zN1roRmG`U~W ze9xM`ttc%Y0>-m6oR=rXdLENGf1aFlhug=JsIM<{{-MC622UukSkyJt5+{pVcPR^G zyufNQV#c=<*2qGuE&jq2b@5Ax*Ffc?DUNVRb1#vX{OyAKPvu|^P6jyrL@3v(( zrWbBbo=Cs`l4a5+@1GuH#UjGd3(&#xzQ7l(cgK3`tO+e>96~77&CaId+i3i^Rt(9k zZP_I7foNU5Zxim83c_~e&j!SmQ*prids`%LQsNI=zJx&JCYAp>G3v{pD0R>Nq%eUd zPpx#cw`&Hh;|J|Nl8M;u&Pi7Lx^8b5%f2af9F^S0W#a@oP0#Gp2H8vjqBbY%U`Ph(;>uw-(RPU z=1>K$DX*i1D{Vl=Tzr$n`LOVttMTd?5OWZCLy+`$N#Hsq&%Y<3-CO&q;I#9P({0e)#N<_p7QZxf;jkvryKvu6e{DkU~21<9gIH<}vx)5YXv_ zLm+uYnlXSLYY%s*`;5UIu?U2bs@l#%UVMqPT`!)LPg4g2%z@v4u@cFeOT@<6L0 z8A@UFnOxz;b|79+?k4;Bu=-)`poaIH|JvVOkM)sBqc%}LzKmj8;QQ-ZThb$w`RZ41 zWa&2QJe?OwWIIY;tLPoKsxc{~LEE7L^tbk8Hx#D)Gf@S<+dj+QMVA*BrE$C*jm6^ow)@U2^!vfkt$#w< z)m>(Nh}#~?rn&|AY3LIy*gaC*Ple3-LgH)2m=lK1D!eSv+SXEF3lL`RVoPP>_r*@goT z+4lP_1}6OS4U;d)pF{Wx+(7`;w(lqJt`-{<9+-QxU}eZb6jnW>nv2#Z;!$ecqrk|N zOy?rYs$zkjDH2Q79>bn$Jfaj;+$p=fi|Z*Clbj*QurqI)mQXfx+qfLrlQs^rB`#!e zH!9gVTgC!@AU08uAv^P^Cw;OuK$QHCpXB^7a!9YhC5#)ODxUMY6GSwzmz3!I3|fcA zd9$;KurtxIC3;pTslGhN%}~)bQxII_-{I>=yIUhhXE!^ON^#MMJIfuarPjXXEnN07 zI12WV{KD&7eZEfR_(m+9!pbPm=;UHpa`ft+r}Al0x@%hool?Lzc;bbg@Ks=Q2qa#z z3%$1VRcR^k5RTb9S6{vb1j=ezW4gsI@XX9tbNb5td)!(BoYNEzG~Gut{`;&!lhm(~ zB@v=9^3TiuNKz@DvVajwy%DeecNY~gaYJIUdk;YiW3dRSDJ0@Ts;ZybF;J?`AC!ug zdV=Y5O4bV=c?pxHv$jmKIF9TsuSiK`WH&P1@Oo?pHxuftzN9z=73~46X64%n0_T_t zH+tffdQfH)KCli@y#W*eyPURiUe++22esvG~#tSs?LGUxyqIy1|bE`;LqYm+g=4~0Fl zKcWf}on#5O@rGR668IT&t9{<3bY~;5Hz0T)%9HW2ChvGnJMs048A*)x&~(l<3*QA3 z_x^$%hx|jo1aH&rNNJ)oA25ZBy=Enm`?BgCNmy1kK+IPYaYn%!Up-Pq5&tDM11R9__V4Xro=*nT97Syt7Qln|jyDTVrF zjYUs-^GD-mU1D_ML)f84m*87_qV~gv5-Z`u4P=ehAgU*-Dr;J4F#4Wdb2^(zkVf@= zsFb!yNPD}8miw)2vPeT@&lx`C3_NRf=da9_Y7taMI5xQOMk`e3 zjg?&U6X}wE6EZdM3SH=^6{aDxZHJt|`^P36D(w0K2Ybz8WXG0|WWX7=Yfi8+{GhU5 zT|!CqIRaV>&vQ}IYw8L4GkbGwz?~po>F{ma!kQI&(`UzG1-k9gXl|CDbs1?f9?_i4y2so} z5XZ&+DRj^BIs{niscxc4+>DgkFQ{5sD73+u6 z@Gicm8O^}5s*Ye-04}h~Z0w^-v-CNJa7ady2e*Wi;ge^X?&HgE@X7GNd|Urwb$FmP zKE;L8<}hf?d~%r9pyk%LBQwWNFCO~xebQIZE6wE)H1LQ%qk@jkNTG86T!Z}w?6BU; zC}SKAIvK`FWIjtUgd4!#XeL7B+Kt!;ZtWC9rtOV^*lHim(7@D!j7K3w ztKqo@(`UZ2`%RqG$RVjoVHTFDTIRk@9P@cg)5D>fO8fNxJfx+$cq>DH#?$M#p&sR+&EjC5S1(2XhgH%>Od z-o23mqjPH*xap?5BM%{mrzF@seM@S4tG2ln167hvlzIJo{qP#4WPE|G|FTP8;k632 z|5?pOsSn}hKr)u#U~^Nrr;G9c#8cLTB_U3`$ES#cub}QD4Kh?N&2%KiAZ7 zPD6u$3H$s4`Lg|T`_0)74o^$o6eT6bj}-BAH>^yH)0TW#s%}bJI-X1-h{K1C9pg+Y z#QAEtcMxy9#+#eH(_Gfot2wp`@}ABvjL7~!eBa|Qa2IN#49s--&u`N*b2@|<>s~NB zoHGJp-~CM((Pb4IpDg_zm^)}#t_tCf-QZpaLV>As&e}5c$D+NqR;KYP@JTJW%VIM zV%XT}vl;hI${SsiHA_=u9UgeVp#RynUzOaOlQ3-3Mj*E%XGyx!HVUlunw%*G@A9Qi zXpq#4N=m|zDe2pz=PKwOQyUY95@x>Y*R_%;&o!f%cwybuO}0H9GhQGVokSw@7Zy!2 z4*&~swji(OtlbiVY|WU&ZfgJ&#C(T`T`)%WXnWp zr6ZI54!^s#GGg34WAopqt?A+h0xUdfzTeceKCD_~pB7yP6oBEk6zoilw3))giTT_JiA^zd2=fc| z?!HxfMN)A!;|qn z-(G0pRyLx_5y_E(vjiv-V3!4(?d6o~Vq8qUW0 zG|EUVdv~pz-s-b5J?B9h!?xS6x~7WpR`S|De+T1xKSi^G+>C zlcs**bpJ2CB(UW_c}eAs)mlI6E7>MCh`YNB#Y(=;3!)b%`dy|l_r zdGXUDa7b;9i|v)jLNQcw9bkBnS`lYu!}1TW%}&q04sthR{~aOo6A_>BaV|0M3g>WW zC=&ho9cNf1RG?>~#bvjJ&aaFI?reSyEDKmfYX67wBovih4fEg(=>C zl!sgi4~ilNKNg;$q$QTF#toX@8-Tc39v~QT4&jRp-mDMTY)z)-4?jl^LS>9@Z<))~ zs0C4^v1^RRAefHjrGpBY);V41PhVRRT}J)XhM6_ zpd`>nER$+#?BN^;y&WU_hJ z>gOZK;kMU*Iis2|8g@9U$)C4*t+vx!dyY3UXg*g1=E6ji=&C}SWUfm6fi&?IXrRHw z#H?^THyt(wy?(7yAQWTF_JXx8s2M>ZyE4EL9EXqgDzqK8Hr-mET(3E)GaEb$Xi4@0`|P>lG}QA9hX4-; z?HBD8h^U{}h7jDZ#rEyvupTXR>GaYpPdrU9X-tyxsLaE)d zM4arpt(f+?-vM%aH}*fNnudjiQeNC2kPTU(wWYRrF4>c}f2*$ySj=iBv*&f8 z1Hz_A-FCbuErmH#RVq@(BR~^VvX_;NO)L*xk829AQbO8he|f!Z4)t&Nvmk#BzvKY5 zpUlNPS4_Y8%5j>)A~|=@+$SIITF3c&^lFH+epGFeBTPiq?98H>{qEks-K@S}NLsof}f!vsC@r=^6;Mtk<)F|EtYQjxrs zY~Jb#XWsJF)6jQg+f5$#K!B&Zh>Nh;OL?Uy*Hfb@OUnQW+h z=N`y7rzBXY_P*%Y1G0sY>P)k7dBB1!vhb3os7TTJ0k_p+DKp^a9n(R(!_3H{Ui$TH zqb`tXj3jU?ZZ~RcSCG+#qVM$5@7?7ISQ*BPgl6O_+@aMmge6DEC*;6d1i(mkW;A%$ zy_f;U-7+%4-0Xxrp!L3S1N?4fGuft^d9t=WvGyj{R7bjkHmm?wC%SH0*cY1Zr1yiq zn-&;U5o5esQ~AT;Vx#SlB)DW#k64nY?-K%Ya-x@_-`&8jCdOK?uv?iWL)&i!ySk?E zc%(V>RQ+MmGup#&yRo57GPh-Q1oeH`uGO(M%IOX57vnGc! z;4*)lwmidiYZK46n7EiSw>?R0xt{uCG~s$irP-et#B9bstPl!W<}=PN_V;y(Ta%jm(QYDee8IR%H87&*Q*bcXk(B&8=q^lbLTFLdJ{>Md+zl_^fApukKB)I z27h`!&Tqe{u5w;u3qPma!^0H5g&bRexl=?D5WDY?DfsnBthGgdGR0%LQHMikU}4;Y z-=*S@c`WcHwZ12&Xel=m)BB^@^(u=?LACUU0Nm&56=-#LJ@WUIebT^SOa1~~3EhF1 zbT4x=Mt#l;Y$j=br-7oT=zIJ^euk;+n+;woRBe-3K$Jpt0~#q&!Q+r2rnq%sDcR-~ zV(x+z={-^&FfH%B0t@m;>nWXH@2JR(=JvP{ikZhmR--cG`2jXMxSos72`lL>sp6ka<6aG)UH4!+rvjIDq(zO6Gcvbc9+nr8N4HCQJQ(|Hc z&WFFaO&!njPPLCGzr!G7hrf(b!ToKBUoK7?PhXh>0Qg5g0sO zTsv?(AmipqAbv%^pSvjk#-4UDPKd^(Ghat?Ec)t{CfGzz3l(&G0vBxJuFDVR)|MaA$Y7e^%D}WuGUn?_pu(MqNX6SqFNVyl_7(F{17+ z%wPaqqxl3+R>qavsKzS}p{^V;d`UFiO=bjUDb(^OH6zu}3r$M7j0OJDwpMC$jF>-r zoGlWjzaDCt;eHfQ*xBAZw^j+!N)EptL}^KFd2w z+D@v4j32%r7p7|cRIjZ4=$S3cYfFVUe=rthQ_C{Yyk4YqC9)K$j^M&s80~Voz~%)A zLD5+#c(2_Z%(QPVj9~1MCn@EQxm<9Vnoc1fg^n@C5aXKC28<15F25dpIKdO$0|+p` zCHV&3db%tp@Go~sLSMMozVsVE*Ems1Wk%Rh6#AK1JmELEi}vf(;paUNQk&y``q?*? zzf!MG-J9k~Pn&>+LZ|6CxR2~PzJ_vTVk}^b^A2k4fGJXM!h#F3=KeofQwSzXy}O5`ni{n zAWe?W;1+em@f>?uU0-~Nb@i(WohtU|tzKYuYFlG#Z1&2XFHI)5&u|gldB|S}?KX))guTCHb$U?nL%Qq;lVsY(J-Ncnqty zJv4p1mR($XITIhJ^tjj6yRq+jc6^X>BtK-|dKx0C*SHmU=I2&EQ0M`f(0Bw@q&e0i ztO!1!3+NiAXq}yDvYd%{Yaf@p^!p8g_~hQuTjUgH!uH}n#;HYlnx`gWXY9J>Q#q#1 zsA7|Q2XH}wy^5~6=(!{Ma0GIb7LRJ_c1r=($8RY(GoxvR!nkhLNZP!88g5&Z_{KZ! zNGR$~33#ilNHZQvabz#yJ@naiR&4ucBfLx8S<{3v9@2DW35>{t=XI2Eujg0(IN5&a zKJymd<6++K(Pyp=3RgBMRAs-b4Tn0vf_Qs0UFLHpJy;Ov{OmRm& zrMFhcGT&&!y3B!wW?2CkU7xN@?o#*;<5Zi?f3v?;Sn)Vo67*B4pU7Da@LM_ATv>QI~NtFLX@{#Rcecw`inmj+8}EKa%E zw?5u+v>|6C?E?-q0i|8h`VU$i>0RI*LHI9&%1M1}%i-V)Y>5z*0HZ};rpo5Mwt#6K z&&U|LZIj0upNm46Xo=so^SVR+$x9p-c`Rl9>q!a-e5q==m@yvHzpWS5uDa{{( z2@U*+td_=`^-otgjuxj@!9G&Yf76gd;B#h(MoWD$82sDx|+HA_I0%K-|#}?m}Yp+Xc<8}5>{T9Lm8nM{xk;l74`j<3Enc$8?@}14) z56^w352V(>9(+Brq;^Hm{LXKWvWArbtB!=!IFG1jbOm_jLbiY2C9dailU;&BQHBg( z?)}sM>{lw6km|3B2?1;SnL~O0=c@>FVL-!6^cx_J01;mX9eeeUdG;r+JV@lq(CE?r zkM{dNJpKBSQlW z_t&v(eHj=YB>;ql(*z#jBOGv6w-0(r6r-ttEOW@+kQYJD0{Ti4!=xTaSDOKFSSaHp zy?~~3)x=oLvQI2YZzNR`|Hg?_ooeyFy?d+wjfOfD6ZohkO$`1j|4%uOb=@DL@jkMo z?3NjasAldL{$cs~= zK3Gpbtbh;I8yrbl#HW|jy;~m)NTMRFnu|cjqNwEFDXK^`g=02{z23%JWfAH;%a=_c zMc|hG?8i6rQU2w|+poa>cW!(ocFJkkZd9U;P{u?!^yM4!iYOZc(zP{ghfj4o!i%qf zme4tt8{5bdTpyhi$uX(P=*kLKJ*1waJR|$MrXtKP7xR}3;kbyDVsTq#p+PjV?;R!3 zw>Tz);z~63?AaOy2#Ea0sFcnzcDHyTrPY(QngU=*Oaq4d=*WjlQM>Rptsral33qa8N=m(v(7~z#so6yWf;Sx!bXJ z?A0{-#2aygI)1O#M}N~JkUliH+YAp8Fmavn4IaFtP!(0;+$h2UU3})>POGL)W=}aN zqQR`9woM#8)xLD;EE0>uOIDFGsrAcM#q0;2Pj97RGg24Iyd91gGT%dRI0s4*Mz@P^ z>@nwFrI^)6Gv-FGUb&z@$82Hc&wmBK8x_8S{oASsO!YLtR8MHuU*M`@$9~7_#Q9`Y zasz@24@yPu`Q-x#X{Go_CkF*US%@j{x&D`jDsRkzp zP?Pfsaz|zJ14AmhL*L3p=iP%uDGeI6-DGz*n-)jgys>Fqp9&4g)9(Mw>iC#xl%Jkh zC22QlZ&frH>X3J1$e(Vgy1c&m2_{Y#-Oe52Jfg7e@xu8_trB?ny8PHe$B@7vf9x`s z#}1T?3*Nr~`i#pbhTd~=1$^}wmkRMn3tY_7@A81~XSp-o_6lB#X9&LXs_Er_2({Mw zmOH&fz^Pe5yVvLUMVM6qTEZABwdnZ^^RlWew42umZ>)Y2KF<-#U!H5Ob?c_N@G8>#<#iLx6zyCyQI_su=!E%;Y=o>Lul#YZU*9<+rx6NVcctbc}&Vv4ad?D{F1HBF>;YE za5Y4n5g&Qnnlsb)j?4XXAs+!0P=2I!4fI{I>2bZDA)_W|8-O5FB)d*ZK7SQ8`ABAS z4;1tZ(wdFV&dzgHZKsjD9(=&%vm6z^>%aYaP|aY80J9ow>$8AM4T(euCL|2pB}PKU(Ch=n-w@-%;h?{l!PfhCrb;L z4#Oq5Lm%#Nu@|V{Y5JxNd#8-mm41;kk>+*YP`)_mlF~eykkR%*eJIu4b$q{O4;QiH z6v*P$l?48aIf)QQ-BbDOPGX|mPsWuhcxXVGCQP&;l*@Gi z-1I}6pc48W!Egbi`r`gAAoA>V4?Jh;AHejUZ?`BU15hGCxc+_#Ib?OtB43OOEpjNO zhXxnOGRYIDsBV#|4|iUNl4%N%l~mdo38?v$l7LSkkwZ&e}-l9HXpUKts zg9$uV`^(c90x7UKSHge9_14&J{c#{MK9({&=^(~Uoq9V2bx=Tf|10UG{~8dtxn0#b zMXXLg5(gfv>-k?-3K*BF|J{+H1vQ0rTE&FdT0sBYw7DG9>dTtp!hWeC`XrhS{xtXy0eiH|1Frz z5pnt-EZO3Yuk&$?HBY+qLXItKo1Oq6(8*i7r2oi770>6vpSiFl`aYn+EuEax6}6ea zFlQ1QsBs(fz2s`uq+#c=bv}5`TwM6zckW*v9EwBo?7MC!pqWZh99Dr z4!fM~*q>Z}xgme{i?_7Jl0%*%%E+eBuZkhr_mt>MdVVA**B%M_4v1ztR&|~6)(-cz z40kkW%tOaw|3LIbb%`w)Y8`LB!E3Y-t@vVTHg7lR;v!pqqcKrPcW$|i%I4RoekFnD z+EvR}1L}4N1{tC1N2q_vOF&JE`}a)yy=vM$wNx~CB+vlMvFQ&cU(q`(Op26x4DJd# z4n42Zo=YVbrh}4_2;49?_n_MqcM#0Yc^DD@b)KvYB^^f;?>UX|)ViBIl0uNI+81YG zp1LiuzOeyeMd0#$`@Zf0aN^HrHl!_fk8^`6|1+k&#(uDaJupm}D)CS09cB)_Xo9;l z!p#s!Luj?07u#D@ex$^J+!C*q@<$xZ(?D;EC{@nx7bPD1yWhksD*lkPoTqK6wMPXw zI#7YuF8cb+tPkl|)k@>f6&Xq7$?xQYcd z)*WJ=uA>7|I8I~h`Rmo0GfX`T4YPI1zv;mRf!BG}R}K_2nvw>e4JnI1a8C`ae17)U zS&ViUxL(8!^jzp9&d^bo8q=RIedTshdVK?RLUH&xQ(NuDU$?4?U8bU;frBTb?M+r` zptH*fVo0PdUhA;-5Xh@=AsW1;f!gGHJ*^n*V)U&N;dv^l1}>-qc6(oiojPWklaUJT znZwV+$@)jJK>#TvE1@nL*dBCir4>=rYKY|uD@)_y4)1Mprg|6JYe@ia%2OiX6_M)? z&b8+2ZdxdtXNBH7s>PPuW;X>jFKN<$}u%O4#+qaTa8WJ>239z2ej6jkYN zWR|5(?=u-;6~7OPc03cmTu5w}H@>1@*f*wWu5oDnc!z2@_Bd8Bouz_xCm@Ws_?*jC51hGTs8GR%AH}~>pow6ceXGu>PdTK?NZz{rt!mf+l98h zGs{(@yQZT$r@yv7*ik#?D{H^>$@9K{q-)ebO2dI{nX-A>(kN6Hsfl&xwT@Q5`X?w( z8}!VmEIrf6Vrm{ss+9t)a7&Y( zZ#WM@*NO^CzJ3fukUSRp_n{8;6db*q*svH6exF{<#ZfDk65XO`WTi8_=0iZGr7WLw z9$CjVA5y|klyYi=EjH{`LL2^G|EiX~1(%KO8vkhL_D1xR3+HGTI+$mI(shsOaJg`P z7MLg+>Ucs9H;zPV8_W)(GL`!eVTk7Y%-gL{ca6vXeC{U_BAjPVRwJ&{H<34#F97L? z8arnXl_X2f@QK^)eAeaP&W&(AMrEj6DT2%TMM2h0JmuFOHQAb@4qe00sI*YIVYXSsvv#M-!s@ea?GX(5~ zJ}4H2{y%S1V^Du!F*@xVTxKv(Gi-oAXKbl=HuahYUzQTht^l7BkG(WDU@X!ce1P-$ zi7l8`^CaK3lQ(|OpK!nZxe=rEs&D?{XNMc7d8*E z1Jb<*<}wx2YGWZSY(n0=NVZIYc1QXcUbc*z86-|u&M3ZWpUz1(wyO;Df{!=-nc1lT zE1j~Ed&g6J1D>I^bX)!dyLoko10O|i+`*CJ=59&9!A`vCnvQoKt)!Nq0_w&7mF%6+ zNaB;Jdz{d2IGRFoKD9-YA1hEgT^{@~g4g{diXn3P;?DN{Q&ZL@1nqeNJL*k%eL-bf zozyCSYzpmDV%sg`s^!u=}zu-x#G9#UT;{HB=Pmfxf-rJ{K zC%8|acYr7O!$xP_nmyeaC!n>y;b!Fa+z|jEii&A~n^;<{r_8`<>1Y_y7mRE|se8J> zg@fI@ssaQ_4N1*tF^Oo*`_Pomu!#Z77v|vuY+-*EG=M}=*BHdjtsAzljFg-r$$H24 zI^0w=-ghLa4z*1;d^tU8o={He8wfA6&Xy@0XbMHT58a8m#}WkP?uIuR1!~33DIH9I9Tvh5{byO)$(Zp*dJ>X!aO-#_g|jLxcZCfDu3YHa;q1(*Kj!|`av!=w*ildp0>eFb15e(VM*P?0sZ;+N^xx`|g>oj= zg1C}E-Ib(n8|8QTJ?25FPd_0AAd<#9YTM=qCda`y+rLj;Z_VfVBJbarD@)jG$U0?| zmZ19k0$QBJkxu}ySe@qP5Fg`6d>7m1Pq?GRcD&1o}kje>U}Zv>Pi007J4r&mBb z-j_4KC{4dzzF54>=7HaZ4%F(UUwBl87Tp356G2?6+nQOrib~&NxqX30wspZH2#IRA zzToQaU&0lrsNsUob!>kW&NzNjJiW=WH~MgaXi$;+P3h1n|L=4KJ&2Cv>fer6xFD>) za0NK#TdiN5QR`VS!q!PDM)jvtp;Id6dWHam&GZ3aw0{F_mjnV?eNX_VJxuS2Jr1fUc*tvoZzd8IO}$@HDse7Xh~9>)~iLg_MLl z9^(9BZ=Wu)LU1;Dhm}2qOjoP$>%n{}F&CKE3=RB*jrADvQTctzHzBW-<}m&Yh+4Vikou8@q&%!PSaj_4(K(H#n<9L==<9o(9^ASLu*sxL?NS30QoGS2$V%59qwbN9#{{`9 zFWcR93joU}Iq;1TzBQOGy_Wt;O1`UmGE}~5f)oIt|siT1dtW&BrFCvy(Ak&SFHsV`kS$oe! zn*30gLDXiVu&9mIa#hzA>vQpSgnfZTBwqu*pu|$Boh-V7M(d%w@qlk#+3yVkt3I7i zl&c8>$it0OmN!kd?!oB=mLx(>Fw9i9{^szbbqVz5ch!JvdvY*|Wl-mMc%*MMbV7*j z8fd?w)@c2+Fw)VEO0wzq&?f-o$gpfk`k4fFmnQk^;~{oCVe_IYpVhgq*rVGHK^_8y zngag_pd4l>p*nCjv!OoLnLg4aI^Pu?_6_UGcTv__GZ=sEuR7jJq9v7 zplzt&iTW!E)1P&5s=A`HWv}vD@5v+Z@&24%WfP7Oji&b#XH_fzAzQ6_tc$-3q@Sf! zEN?U|O<`}k0Uxv)1Z>K$Dj&AA&Q?-KSOF}*Wzp^10;tt&h90Z!04OEW!E=Bi)VqY| zWo`UjD1mY%eQd>jXp!2~KA~Z+>~ChTx9%Qwr<$aFayWd4H_Q@m2dGR4Y+Uxem13aMYH>5&bkZjU7$X z=h^gWIbAHD0q7@O!pZN@Ik8ZmWZCp;88ny&&vvKsw{#jLeX!xDfqa;SzBS91ocbj1 zF)`#OPFALjtq3jOAbKrb8`|%6%i@tX~u!ZX7^T{Mg?ml|^=k8N)5St})UN)jZq&F=h@pDK)V@K$a%XE6SJR^nw+4 z+U^bcD8EG`QpUtEvb+3mB-fN7QIrIp!p zri=?^n(3~L04#7xXMr{MrK*rw9sj-OZ32*Cn!=5OHaKgT*&v*PME%1jMB)1d zWe{B=<70}iM{MF@oNNKPYU=$UV zRU`}zODeya54WYr8p3og%Vz19hp_U{=%XV!<0Z?eLpMy-KW3Ju0#yZx&&|1%EVaoX4m!!b|1~k|93#+neRaaO0oA zUK%g+Ybeo}O7 zK$lhZ9srx4JT$#%4e%@-fhtDMNL+ZgmL__$rZ!BeIeH~(9H7jJ9jn=zvmR$_ zq3K=5Jz`o+A9=x&j(=_3aI&t0n%FmOeSSkZf7n=%B;QFEG zdg!0XOkq`$8o1UP^R3}4uZ^|BR_aF%17Pco4Cx5Ch!v?b$I;DUyZ^@6TSvteG=ZKG z+ylXayX)XENN{&|8{FL!Gz1Io?(S~E9fCUqcOP_+oqXTQdvEuhv**k|cY1DjP2bzq z)m6Xh7G?18(uuKqkxJPLkBUO_!91#*E1R+0DE6H}5;(I{D%~aXyC{1dXdqih#3xXM zEE`+e+FA-DeUjN%k@~CViX}gmV)LhkcM%zxiAE#u`zDI-jr^*Y)!k=~1;x)Wv~;^N z@gRZw8ts6)5X!ENc)ITf!7yDt+|^ZPQt-MvHKPQGv%K4E894Nu^z=BY4mld45=g}Y zZS*$?oPz^I$pyR>BeUu^Bi`!6(Nt85G#2)sD~#Pu6nzC4ZIbp3#s^wk>z@O@iXhb{ zgA?s%Hy*{W_nD|COn8W|F*+z6_AT&2&qk_Q;0tPu>~fuW?9826=vFm0{Z@&AhLp^1 zOjoHdhco@Yht==^#WTtZfAUh;QGXrQ#$xpqgCM;%C+V!Qwzayj^7RCwvG2Zn9k>y!SCRw}QXWHsl>&(Wgcz{X&I$o;jx*L$|@k#C&z7baD7 z4{DCT&XQdd=Yl^%s$P^?bS91alzz`qjZd^upx?W=_jw)oa_w%E`f6oZkaT#kn5kqS z8&sFoHh%Ar_2S`j6RXr18ZF+UX{1yF0 z83DI{+&kxM8LRy#LU(ufg_}7mp(N{N!Q!A>GlQ#i5vx~a=c&`0lvg1Z%R`}~mH`ft z5*cmn<%@Fwg}@fdz|2ly8E?gfvNY8k)Az0ei|M`EyPc6(uKCOd1B=x8$|v#F0Fs|S zQkzJs@%yYyGILGUGQG~_*IZ7TGE=FN`amQybfvi@WPVy+80E}kI@|IRLt+LOMq$-H zq7h+S0*Tr03zOzL6hIap`t(;$PEm>sE)vJ$P3{g8uKDr;VvxO5~v^m<@ z1q>eU*HI1Q^QSXZ;Pb$(S1_TtH1-uaqQ1}^r_?*)O=>OzjJEOh#^RO}D6?K|QB@U(36b})Q%5SBXq-oKHp#-(6xp+d zt`r}mR_}Tw-NLz`727w5|CW|{J6_Hq&$K#|P~|$o1Nh7hDd<;xcJCH#r6fsj@z8JS za(`#)>as*=HdI8`g}rj3p883vu|2!q>e*|^+6z>dx~b0t>*glptD8=H zklT;=y2Jy6Tg-FKoxLj}rgYh@vAOamrn)6_bvi4uon7wVhYJGA{|7Eyk4AAe}}Vfwo($MRZFrsQA!dGapR zBTgF_eG@=5`0FyAF!&OB{e$?;_~yiv?#+Zk^u*5i(#%}<)=n8a#SZexEOeeK(GY#0 zg5Y$h;--7_JM^^EK2H-LzoDAnv<=-GBAasr4!7njVs;>{7p)BhItr6p-4=R$Tv&<^jvylY;zhgLjTE?FEZv}!H)OG?z6E#?FHA4HkIG`<(r$)=^2aE zTLXVUg#*Q6?J@V5b9-z${=zd%wyR7IBsXAoFXr~~{Ed&*9m3?#0DmF4aoT))(5~2i zIrPN!xf(w>K&_~@ru9Cjd9j&wyM0>&0u?qD~6xZ-G;|+x&AgJp?i)Hnf zuEY<1D)ItKCI#k6&s*JeC*VpGiVy7^sVK>R9ndov8Q^N4sXB0fDrigA0aC+)-j~aK z0J%kI8T!#w;W`eGzM-~b|hiv0VwU}rG zl|p$p3$u<~j4B4zxXNPyBB#PXt+0+OL(7tEZPpLI$b#YGqWA862t-g>7p)|Y-&FoJ zs?~m6Up3e4kF-vq(S9HYQ<~-4=mf;G)-Lp$k)Mn#1DxahXw%hQH*3MMzK>QLJDz{T zic0g|xG&$Rf3xYN7r_V~>ZAK1c0<1R7^j7phP}MF3274?huM^`sAlAok`{+m{8BA~Z^_xr7vFKA@;k zMoX_#Or{zs=%ELSB#J=)5zPPdDUnZvD;4{!iczL0_6jS4VI9+QfTYNOge!H9ABKO3-KPi5e4eVTPh zI1&3cnxR0W{B+}x(dCRKP51>W!4@4wpc+(C=;v!?`_pW7Lh?xuz3yRYap1KxkV@#~ zXYdadL};mEaxs_G?d*MWt6Tk&cin&P2vkA_d-IY~sC|XyV}ntFw&;ljglBq6iFr6{#+S4yrX#o`Qg1dXXGO zE$ur+(>c>}`#A;j`f(n#xKH@Ukr=RDh62YOg_nw^tZzcMAKvbXS) z{j-An6^b6&g%`FBViGi8Q^yc!7|j5SZr=8k9kMCLepuX2`o-Ln?$vIo z%>;&nZV7Q;tS!;Eg_T=<-=+{~Y^Bi6U#B8px?@>;=g^^{JZ@dkSuDG$P+gK|{cFng zhHdu0cVo*6tOi#)SvUz#dN7AmwHIKquGjdH3>-<&Z%~O-sS)8$emVv}+~bzVF5gZl zzbln@Q;CZc{3U@Ts+vto2cXioHXf+B|MSQB{d>kqwW_PmhEe(W^y{90V&}69q@CU+ zB^3r;ako9m*=9qI5cGO9hEmnNm$Ey0k|uNo5lWE6^g!E6W#coRIX`+E*_P8Gp?_At z2ch!j4p{J0MxYcAi8yZK@%ae-BijS4SUPO{Ov*O#cinC6Nt;H?#`>c&jr7X=A1Pka zQVW}45rYK}su#YgC%!q$u(K6=GdYyhuIH8)kUXvE2$aXnX(H(@ZqBbm+q}P(~cJju_ z;u9@$Cz)lAu~-oy;zNY~4so?5xulX#Oun89bj;PI`2nCE;S+1r{qs_uPRvf;_;9Q# z(RW`)dfhWz5DV^_yD{w~N)ofnibPpg)w6nev7b^e77)wctDVXp_$LbTLx&@DhPS>Y zryk`;BVm1*w(hQ-xSjk~r+rfgcwhLnOe4P03{TQfcVt{15}sCMyx5`DwRqC{J-POc z1a=Rr{*=}`Q|x1R^^c{F&6cW|Ks_s-QzD%*z*0*se(uRVMk6O-dL@5L?xN@j7iM7q zV3*3AWL0sGXt8?P=PQjM_s{K=cPlUzl+EMU9qN@SoF7+HK9mh=l5~wS1K{*+^m@KL zp+{2RE4V?lfdgzWR;zC|&cyDW=u6$(DX$HgX}xE4lK4DKAbBHx9ZmO1=8d9fe?DI! zqy=_T*0hY(y?Zw~VktZO@<|5J`rl;B6MH`(7&H)KNav#lU*kyhJt%MFwXs5CO8F{H zq=Dp;3YWyaGvox1gD36uEy+nJdyv5fe%g4&!2hvwt?ejW{n3!N+qCU^H3P`8_^|Q3 zd9RXCKERm+j~0r!9*F4v;j+Iz-8hft^_4ecjI9GVxQ#i?CHd*^=KLjU&-cF`0(${` zUfV|na_+|>MmNa2yP9qgCh|7J;Xc?}nB26PqNh)pn$k%zj*8;tpxn%k;H}C1?{olo z+?siz1i>H`<_t`9QlkHRa|X1xJs~0nW+aF|SINQuA`5U6wG}@Bw>EN9njFV3n?4 zo~=r4T--VAl&{F|s{`L4Dl}f1!a>oUUV_~}Na!oTwC#(W1B=bZ*bo(&;V>Zf8Cq`0d=QCK?HIiOy}Qi1A6pVS6vSTK^lRV zj*Ouxp@rmok~=3@B9ny(-t?juKQ*4V+u74F`UK#=?vh!BCTevmq5@FHeuWhmg<9d^ zv&3?&phk7O;l$Fs`j13*Xu2!E3N~R%c@+PAbNO6(8j%j79FOT&wMr_+zdOND@#paK zk#u}Cf$3b^%?%P~fXpnm7>3C~%n!rn|FqAQ+7G%t`RfnovT_S9kzFLGzm@%b5yJSH zzNN|krv76uQ05FpVer)hqKv zW8$5zHoDc)rGP$v?8;-C)8dQ8as(%2viUzLB%+4geUBWd0J+R#iQ!T8hqhMjim{AG zZ%$P-ZDPrtyYr10(Kr}*l)jk+Y~4=9%wq#5zfjYgM&r!UT4jx%9;G!@$X>V12oD4K zpeHkjoWiu`8jE>rivd4^vq~3-E_yn^$FN~Eri%f+cC^Nze#=U{{5euIi$ityaki)p z%X-cJOYV8-s~l*4u?wtEXMs9$Lqy&$Z>5<8U%us-HUjFq`uPKq6{YsZeBQit`*j_? z9;Gx--T$Fdpufz2^a&M`N)lw4jZjxle(COEdhHKPt~Vk@wlqK7NeDWesIM553WiDl z@Ol5Ib7M;iEQ_PFc)VYh-jQG(e#j7Q*v&Hb)O^Sqc?HX0Mnr3aYg4r+(QXD!aUtNY zWVkb>FJk|urEMn-x>d~Wt&(r}$)x;)VItB`mhZ*=Rovd6bOw}!zYz?@_2h=nt7$KI z&^7qAexy(Q2^W>_1UzHqrbLvP;SEJUkJ|mMVQx>jD!tS5Vg+@5NRw%%aqRG#3g5vR zIMNk7l$l4K4Ay2!5m%4Ca3{z1CUOT^=4#~UVQpl!|M1PHA^WZhP5lZg2v8B=Nl3CL z7<(t@!?IFHvYQ7^fL|dB`{c1tD82Iu)-oK)L8TUA;&3_G|3IMh?6z zpcRnPi!kt=8A}d=k5Mvs#miH3n~ow7lIFI5rX&(_l76}xA}Q2uwtulV6nZ}R+2DJf zT_A26+a>#;C8GyDmxTj|&Rygl=|LJsOx6kd9-B?q; zYq?R>;U4W4Cqeb9B29v_dPvR7%cr5Wz|#paISODZT(1D1v~F%8k9l8n=GYEz z=A;IpO*MFd7=3=ZvQq%si7z0rf3?-oRMmXEz!{2Fd5%h-nQFF|#!Ut%cr(lW z!U5aTxAO7I=qnqw#EBCMeUiojR{Ik8n3jSL(ikZiR?n%k)5bjCvX}|=1WgQHng$0 zL8@ocmxmjBE8m-1mF*~!!fc22IQw;#4QOH;C+Epdj1a*}Me|F9_FG(`(}a&ygu;u_ zv+a4-lHPIc-wLp3FHfnLDsDuV8PgHft)8cXf#kJk#2owTlQbBELmnkW3%t2|Uw2>Ddp*x}Lt3S-i9X>2c znEP(YX>KRklouHc<#6pcJ51C z*smq{D?iP3ly;yFDf1UxphAq6Vm2ZQAH3EJLGu5eGV@GFJa<9*LIAQ*NOijbIzNpR zi+>8K{@WJKW2bw_T)R17@5x{BXS=`X)6oLc(RSTN+ z6EUGrB`GO+)M>X^Kp+I|HhnF!+w*#@6}INExxCcpb9tO%%%rDS6TKy{787hkDnOUZm2P3zH-8E#;9Y zw}aKz)yb&EYf=MEzx;Jpz}Gh7x7=OO=@{Wr|1C*j#hzcm2C|~`V!(rTTcb_h?!rvR z3;bS|iKl*C7kE}`BGJ#+K{gzm?P4g?<%cWlX1|fwxjIWzK03 zYO_^3TEOSyh-Tg#@IFU`!sGQJdGMVc^c1D9XA0%5<=fH;&~@Y@Y16|)nzf=^gv#;l z16K9)8pWy%M%h@R#zY+6^2Nq&v7RUmUVTEDMt>I%0>POViPa5zm*#v&p@69Dr|FxxSW3g9j`ed27PlNcF=|FKEKS3;B#zwqSP1D zVKnv%#bpDkp(4ESyaXl;6Tb}?p5)BFijB~&C`#pQX@&0@)4!TragwQUiz1Kp*y?wP z^}Z&3+O3cX`M3^gbtbFEL&VkLR0OFBbA%+KwT|qq6$%D-t&6pC@!c3psYcjAnB!uS ze@;F?_M8P59VbE4W4{VH=s)>^(8N_f@!~$!*cKJnp}_}IgIi-x9yjzvlXOlkGz)l#eclbOtYi9ttc?dZM;ecg|6$}{BVuR-+gbiX z!^%bM5KrPnga48jU(#`Q)LKfN+?3il=zhi>8tHJVVbj0JqPS8Ez2ZDv z3Ol&|`H(vbX%L~=SZYZguB3An*a$0)=n^ST9@bflNNiJlFxe5zYr5M8|GDQeqxH9+ zAip^>F!&8nsWQLKI-~LZY^{FUL78bfd9gJ;Tr^`E+h_)RhxI{;s?&k7!QMbl-xCID z0fSX!Xf0CJxwF&!Hsx8G&wLcGZLPIFmK?z2_A0x=h?uiJX+X&9gmYHsU%;rZ_&qmC z`_2}0a^Unl=he_IM9vL1RT&$twC?xB@IQ`JS-gPWq&>*Jhw5cx!>+ofgPG)*=2G9L z`gZBMa;DOhKVQef8ZK>vOgk$r%onlW^c%v7&1H@5>*rC=pdWL@zB;l5?Bq@Q*Wf#q zq{`wNy|7?-z(mu!`-n4Ia{B#LP%YN{sT6}o7HO)2N**^>XxVbj?guOr#bHq@EQ!B5 zQvzevDV)fSIA`)qD%M|pih|0vG3=110#X7UrzZPU_B1xT+JezeS9 z3v!6b7HMbv7Bse~s#G)=Fq$=CYsD<7m?hcn!}nd%(k4heF5s2s61vmm3cH!m z{X1PZE@k_b-1w@PhhRC#qAPQ9)8jU-8Tt<${wRE1z;-Mah!S^62izZ8wN@(wJr}%x znB5WXA09Y^`@QbueL@Gy{8lGe1UY=Q-9mbZWy>1Tj-nMn4 zvmrl|y9mXK%~)olGrqR_zB@9s%ljLxf^~eYw||`fu>Zi@;3HUcm>&>-w`#}el3`#v zcom;9Z#`|@yGMY# z&DRT;8UL3kXZj|6P6r=hMfqRHi`lX~$$V4Zb-)Zwdu)dGi6!-2uGf-O6^kBDqytOzNA;LA~JkZmCedQsi&`U|p=f(G*!3!jsbZ!EG?1V|4y)7J5xx`-(5XhMphedjqWogI6& z;BygPjL#lf<000A4M{OE1FCmO&Mkk&i8M`zuLU1i_I!(${rkJ4^7&$1lFOLmRecB@ z{c7v{_yz+@#`L1W8ll2nih+W$=xZ-OCOJ{1ogJrt`LN-R@HDW&+W|cE=*tbM1akSX zoHXbHt1^S_;=XuTJf=xON;t283eJ2T1Wo&W)o7v9-kJ^yS4*PcZL)p2y9A2Yg11c$|6KC#cVrCG~NBVIJm5l+!o zf=g4iH_c~jUv5fJ@Bf6#Tk54uxb0l_tH`*d8*L8Pg+Y%s_*=dqy01Qqu}d)IKGUKK zua+oYBGVL08}+v_6#rEEhRn6kV9eyWH$T=VYfUy5Y&9$MTDucOv?d768S_78clsn! z)wEQi=jd=Oa|oZcv{KSDK!ke(uf&l)p4XhYOZFqWFJ;YxrG3UtE4%HVlMcE;r^F30 zzkN1Ed(Jk-?RE#URJf_-qK^LuP|PK=nfd;3cB-iK>FHTtITu&S`xt}HWjnUrYVHV- zr-?;zD03HhvQ@Z?U2M*G)v0;Px%Id6LyKSY`;s^`<%(Gf{HA>Of};qpaYTe2qmXxK z-+;^>b^$QXQ_!p;q)qqAL>HVP2MZR}3IXi}^X;#ptqXk`dx1Ux&98!ok(HIslWL#< z8>sBPq%_CNWxt(h^pnI(Qrw*Clm&vkvv%AWL= zHNs_pK1srCq%~_%qsqIpFrGL<0j#O7e~-(ZF;N{>gq2FNI}UKCx4g!|f)v$Uq&tsR z=Fvlgk6xvf{9h&zOdK+)+m#HjT(Yu55_qD~&U8i=`*06N1hRt)7DcVu+dF-(>MEJI ze%k;$mMz$Jr_vwa?sk`-xc;787jDpSg%I4!{w~FrEIek zJvC&Wp3g@pG%0Y{rA`I@j*)tFFc--iY@t1ar?-0x-Q6XQ^jZ&px~=FHlc!;IXhEJ@ zP!)~mPW|iiE#YEx*VMha2_8HLQ#whU7Ga=y8%saJE4PuVbuxnUQzKMMppk_}_Ho9Y z6kAoQ?8jlN^urTvNFi)4H4kijfxdy4V+ngzrDHhvM0y*8_9MDdDGTSVf1rM8aBwQD z{*6mZ&U5{taG7?fCjCtw<%dqfiY^0B%tR{$DQ#>84VAR) z`Sr};=f({zp*J(Z6l;y@vK4{w@ioyDYXS(vXTRh{ew#$HOARrwKp$6miL`lR=&{pp z@%X-q!cy$K&siH?lv5FGI9bd(oXDo=db(R_7$S17LH3K69KGgXc{xgKNc$Z{=~tnI zRA?b)ws6`^QX9WEFFIO_rE_W{_;oU(Sdk=dNP%sB{e!87@orgOd&SuI9HN7fIk;a- zD=~PYm;HsP~$>^e}@09^7v86-_A16K&Y-v?=4dlg%Xzq0!m%T*8^7*n|KQj_1{Fx}dL>yij|p zG>o>nY*&vE_;WZZ9`Cq7Lcb+V%IedWzHJ4PB5u8RSAQOUW^HX5f!PHo#{8Oi!O5-E z=X!4uc0nLeskFMr`@7gBd}d_GQq+piG_xP9mF6xBSbH@oXsCRUd=GAlmuqV@QDqO{ zkx+p$n|w)tIL5m-9fe~}LzqTL$#zwyqFI^XQVPpq5B^XVrv(bLXA@M$h;}Bgq?_u@ zVUG}Y+oqcONQs{`r6nG>8>O3nq9>qi^3*|4Okk~_=*+C1=S0!xJ)Rh+AzkY#`}i4~ zYv(a^-|v&P*ye!DC$~L=B-Rg_?P*hR^wCF(BxgL)Sps1i?J+THC+gbItL7${#filr z>qeah<@HjBa%#UR1u$ZM)O*GWc&D{!SyKJtcAIa*EoWFB%S}71)Hd$FbV?}PreLX~ zJyCUaIf=8gx5rz*pZc@{?Vh{JF2zJn?#AvP3x31Tc;u>xt-DU9Ei_j?x-@ye>q<3! zP~f$n)t#@d6K)<07E{RN6tVz%4pt$GHfL;)=UE{7JyNZS-d)+;(%T^4=TG?-{%CVP z#o8=>tas-O09GLOv)p`~iOv!!UmqH>dll}a=h}YWLQ}|KYbOTXZ^zu)@pL$Fw>_{8 zzDoj`F*cj*@ah@ZCpMawdQOl&vu_^!nFd%kLLOVrNJ<=t8m*veheO&|S5M+Ni*XRP z`|FE0SI6CjX$BAfj|Thd>-(;;kveZoD8wx|7+xPVv2u~Jf_&3*xPmF!_*4rYPJDl7 zGcd*N%$wab?ClJD?>&><$N!pfqx|#Gnj_MTSNekIn+@8hQI4o08r=_fm{dr`$eiSf z7&|+jlD#H{mo2L3aK`i*2H#a#jbBG1)smu$V`@hLCg{d1u|*%&8TMG?|Bb40+6=+m zJ;t5qFWF2m)MGD>q*(@oHUX53abX?mqjV|#N4kH1}t%%C2?lsD0UjlM|WJr}?H*-RtCUn@xlvX&ld5M6tY_AMue$|(v zZ^)4Fg|UcY?b#8UP(R*#9U4BqcRZdX1#MM+R=6PS3S+H*C5XuJh%if)$WqLoW>pcw zFhz&P6ZK99D+Cj9^}5^DzD`Vj_n&4IP^TAQ0GrmC3nds^hx&h8i=lhv$Dfz6U(LN| zvmXHXavS4HqymxjCY{^Lt71>lI*s(QGxk7=f1=GT_wm@h#*xc(PvmwV#Z)i*>3-1p zJHM@QeAym<(ri?#&pW)xH^j?DSqC_hTE2d+8*EfT>K@wSD!n$@#vu%n(yAaE)qJEf z%Vs>W+Ym6P#L#7DVgBM}gk>3Z9isEsk!V zQe&9qtegfL@9jB*p zh{o|<4GI`WE8bDN{=zjp7BtQa*g@*4fV!|XPz>hBj)R$JqmW;jg*VB^=FKoKmu^ z+KdYyKQo9>pXl~R1s@S!;VB@i?+wfml+6E%?WK#U8Ws2&<>WL(Wrb#Q?K$UqQ4(6X$Y(hG+LZ6v1g#tRM`b-0(y5z=^g8A10d6d;g2X{{GA7374M z1|w_5@`g^h)|Q<(fn>KwT8e-3&UyFian7#Fx8^z4q%5CjIg6ZKCT5nA`X31rN~7(Om>s91e`St{cXC-Nxm? zc|+w*OKHGo<_i^K1^G;+@_8jsC@wh408L?4U>Y%OiEQBC@4I@37N4;ew7i+A68dYj zx*D#q-c?kv`J(P)kzIMt8V@`zQnhWYJSzglX zm)-*kf*=nYAL0KGP|$1BmPB#E!%$bTD&gQ4i`COi`a(Qxu8O(2dH2{<H8 zFLV-_CtSEMDZo5V65hP2KfKn0T;Ah zP1cVuOEBlOn=5+M)U`YMxK)*BQ+VroO)$Ks7A_&2ABS?%8$*n%+?PIA<-Um#xp1NN zJsx|*$q5A6XtTH1-5yfmQV$JXxz~FaJ#wM+wVDAxK7(T2iU~`#9lXn#XS@{{`_dQk z&D;W>#LS(BEXayM?mG~-k9+r{+eERN_)zYC@4^+;eQ`d} z{C3_8aEJCp3yeQQyy!b-EUe|%Xok&dlHsLmS}rt?+^#e11+*`+kK<7&b~+@hUkj7w zpK@EE!u%}&@N7zh6r0d8cYAk3B7do^|z(Vi=`d_S_p-piul$bza~%6CyNMAG;Y7bI{$q_eo`vWDpBt53si- z>~E< zBOY62qED^fWc(k2Lwk_cjYVq{GsYV&)7u$a@{XbF!O(>0?!AoBkk6zOdDdg#;+@;U zpEtKH=&a6oSKJp^RAG1~YklV<7GR#%8OQ+IV1yZA>M1i0j}^- zas*i4XY%yck(2vYu!A!TlS}W>S&Gz4@e7I{YBRaV8!;~VIY7C@2cxjPOZLryR55R$ zTqfzKg1TS-qO0}68BzVS9q!WdV=+C|iZILjLi+q3eQXz`u=^G*kDuL#V0Ruc-sf6F ziycal`MVDF$W{kR_-@pKS`J>j1oVC(4MP#8AO^Be-vunPFqM=4w=ANU)1G9t`&23d z9Pr5c)|-|CSqvCx9N0LndmSBj!6nxxLCP+hqBn)S9K8X zarc+-MEc$H70caR`P*9s&5dbk67r^>ITTQY*}58z$*p$M$_kC0nSmfF88c!y$Z#&u zi!Wc8Vt=KYDQaU7ec`b5*7xJv2_eJe00E?`-TYf^nS0V6$Ia zFX_RzyaH@{H*b2~-bLeQ=o)y6by7+5u_nNdReNYbM-lGtvwqeGT7*EQa;Rm)5rC;D zmJAgX$d@Gsk`SENR=b9hi{Eo8H@H|xnGt${oKH9P*YPdH)JnHL{|~xIc!!fE14WS+ z;Vvq>Y~LD?Z%_Rf4dG$8JPuh&JbV!^0?h4_oo z(>s=jDB1cfMg;6RYwt2rgkDuBsu>V4sn~Vmu?XaK0wTaE%FEM>cqa7At7E|A-u>{Yx@^GuUwKDs>;Le9|78gOfr4E~ zP=NBkeBl2{38wcu3W<11kputt)nIUz!sNpJfKs&xU(ZU*@7DkW+^yHM)rVqEj=5jN zw!r^0;aDO~^$%GLy!??#*EKSq9Uxka^`1W0+m$bTCOcpUoR}`PUH1u!(PgnK+WtB& zzF=`V0o6ju-G5YMFyGGcRJV#j6?}Olo=8a?(&*T2!ZVlwlU(LstpfU4OQiEn!(4=l zS@!>4H|R~dlYfq=KILGZXUnv@|NCN#PL+bQ)cs;ZK86@rQ(IeW?@fB3a^S*vMDfm7 z5}IvVtXW}EDpDG3xqY=Lv1PSRiEvLksDvCyI+xYvIVC^Y@zjs9-1g~>dCTVJ&k2D`PGULuFOcl|v*py;X7S0}z4Vku;)nU#Q_Flw@B?fpa0U;Wb z3S&PF==JJfnPC`gw)kY#yjfk2X5<&b`HTQ3ndPpY8;44evye}{8?kxc$t-ULLgkI2@Xz}dFbx(^ONlRP1$f0eCUIg-m-Mm>@ zf%^sPuTRUSE;9{s?SIxgmPgPUk)VuY{4`taBL7mZVD71^80pk<$Yx<|xhwXpaOn-y)eExKHA?w<83tqV^0E_qb{Jj zY*}KC5hwyB_FCP5uOV+HvrhU0{!sR6P!^oZ`m1{xom_0Wx}@^D=}T*5Z*d=V#}q4; z*w7>0J}ZaSk3!uNB@;mgRF^Y)szR~{czO(*bL_3B9gAxO%9SHxW z7kxh`D2~_VA11b$a$`bIM}K2BwEYG7ys-J6;FgWc)>h*12`FZVIs`gFv!{im)4rsW zvCxUs-l=*G-P+t`mDpyVd=pi*T3sQ62E!x(;R*bEcwfVgW>;rc^n)bwjb}Fa69~RQ zBQbx9uRSz?6)PhdkDd|LC@vhNHU7)JMfq_+oa%{&1= zaOb&7EPouFtn>PTJwyCe;wF_3?k_DXsxDzVD(uFrI9j?p&_VW;6*&)4q&g)NPiTMs zbYv5|a-7iozKK@A4z=a7+zf{s4JB|row#`vfBptTXnx;T1QYNFu~D9C*$_uYI@2#! zki@kirFm~`oyTvNM};U-rSPCN-t!nGRflN>8tCFNLwz*o`)Tq4uQFY7@aV?UBS36& z_oyH-IiDu8)L-`y*C(z%Rj13g{u{a`u2NMzZIyGX4-~d*0%VLqVY`JG@AtC2es=;o zcI*^s%T80X*HYN^)U4kQPxIxaCXTVU_ zH++(Xe5IS_Q?m1q%jq0MS=b!Q!s;tc?9D{pqJf+ItJ|0&1S!;64CkC5mI0__@N)H^ zE5QRE=CRNF!at4{@y&V7ne$%cyVr(KN|(?h_BcV>8Ztt8eH@k?WV9|&#Ryfsb3ZCB zR4i=}FjK9JHX~20!uA-m%foo-AOCJB74}<3*BK`TS6AnovzGD6j4u=h9uTHG9uKqe zJ|sXFp6Dz(CG&bLv;|H(xN;(7P!2O$a~OT0r@?gO@1K5?v{PD|>y6??S?hAaBxmME zx-LHg9gwm%gY*HOU<-F#kRf-KnTy>SYcJftwJ?A^k?i|E6!Z$;y`q0BR}q1NUVPm7 z9OLOVB2W?>&MBvcuyYR4VM<@DYdZed@6y8$5Rn-nI$}Z@*+#1rQd0P{8FXi5_9>%s z0)fEL>3)f25?l{GHF~wr@t7=ZM?iF2+qu6ykr>^;Q@PoEp0|rl#I}r8^!$3>?uKL-uH_* z7|z?NVuu-;CzkjaoPmwK-G)n2 zO>-e2O5Mv0)ZE`19#;w1(%?wO@P;Jbs*{nck@SDir`PIB+wGpIiB<)BusbAYvDMYUz{&Q^v+acRz4nJn1oME6y?u8ZYu zxW~AVkL2tY;XL++4h0#UTk;u9}{He(dL_7xiy`qQsvTo8ag|? zcSG|~DVnL0XNc(fJOHLKGOy~07M*2WVS#!+MW8DExMZ3X`&)A}x4pf6a9G%;W>lGB z0P~jKvB1fQ#DU6%e)?#SxTu1eV#GL&4YVJ8lT$tjp zBCgBb{8v*5WGHmhT9L%+svdfd|HBe0FJX9FA0CTkP>T#Q{9Rzee!4!>yy{~TYFv5y zl#?Id|M`7k1G3vtR7+u+c8LCK6pJQJPsZ6mgHIH{C#;ad#O4sHnO5i;Aj6xy64{k# zCTs4O9Odwah9f>af&Wp;xTykKD}2N#!{-i%zxRS?KV2RS;(mF)pOR{gp7&|WzEnO0 zRS_UHb9<3opvhd8cH*A>WM&vkF=NvH{u2C7P5OdCTgRXRsG`ArqNGlrS-JyAy*#&Z zrk;z>fx_8XuHzFt177Al+q;T0bgJZXtu7W6;vmQ4=i~-$OyTy-P9EoN#uf7yDebnb z52BfMr_19DQ#%iIUU(+?e<%E}QrCmU(4UaQH8 zV}+N#S*vE*5x}h^z)i4}>xc#2lzm)a#8$V5$4Feuc?U zNB(Zi@=7vfv%#@uT1nSw_-FD)et9!Az1Zk9Gc#lL23ux%?c<;9(`N!Xa67Bkyz7*u zCylQs`*jqX=9rM6nJsV3i&N0SiZ3)9(sa}a>L)FZ z%UvB>6x~P)QrKsxlIi>20Z<#bio`4^KO#)rDAx3$`ZeoF>YoMA>!z~ZN-f{wTsW5? zqV^wNm>wjdUi6P=S+_JG(>;bxC%%q0TDAV_u&D6YcS@W?02!u;zD@Cu-S`h>_rJW< zW9C|Tr^-?KD9V-UqQtCVsyWAv6w}ai3GQ@oRI5+WwFu4KtviwR+rLc$~k}%lt8DYqAh=HYZbb&NHo!QhG5T1x_0Twl{C#-g9K=Zki0-qX=%d<*7c7JtPRE6L+**Ve1o>O%}AoIwcScIt)rKcWUH`LPATv z@R}I51g_(IQ@I?{(##NAu1SdpMf(}~q2Pk~C}pJ9Te6!n`PA?h?lbZU$Jt4q+;+6s zRm|PW*j0G;c8%~4>6Zsj|1d#k7|qiIJ|NLbw-VXOu|zMDf|qMy$nh6kfQ;Pgh#w3gfzkw|_#iaw4= z;n-OI^u=EZYOWvU6AewrAN;Ytzl!w%+LkZ<80)80$R6Xkr7PpVwVN-vSPmC7ZeaUX z_(&SP>V#N85caG-`Tr|=R}o750efWty41%Y4*7!opLZcR7)B6s3i!fhYq{>LnFyPG zC)VBb*vG(F^v`KBMzf$R2e2@}=(JcPP3qox$Mc8coodguy)xsX*dNtY2g)G1zL&D? zxge1h%7*tqRhB*M$EpC}ILB z3JHAZQk4vRopNwhB|2@@;mgRfVgZgz7!{vi{NpbSqV{jm?z#J?a^6G2@n(X43G+f^ zxV>Pr?zl?SGCfUS;q@}l`VvHBRw)ZBr-e80y;D=TeLh*Q`46mUqkiE&@HWmJXrMn) z(;wMyrA~yY{){R`wtbsbEQFZ(T7GWY&0 zu(J(u9co01ba%EuBO)AOoTE*|TJDT=UVOa2b!tMF!+}>pcIl->{qRTEOiv=^eE$Lz0 z-_^?G75~O)zce#=UXijU?jg842bbC8`|i7M=Ds)cUe(M{r>Hu` zuEVL_y}SSY>$O&QZOAJtU-4&Rys($2nO=7*yL?R49td;2sI$&N+i0Q5U|GEjWbsnC5{h;t=-t%)m zPaFHW8rps;^aFxa&dLL7kClU=P=P^fq=$6kol~Khv3ko}H=Nrv+B_@_ljV9u-eQT` zWRxMB7OA(=@^>m@P@e#V$d*#A)}OSH!|SyFHLvm>2Sjo^-_v%`1+II8o|D?WjnBmj ze^xfGJ$C1>*sV2|d^(LZ=clU+__2va>-75(?yio)!o$NIr+D%#-69Xgt87(#uZLY{=gbFYH3&A@4}GTblpkp(l?O?DM69bZq+_+aq*a;Kx2-Uh^R zFz73L@Hdj2?sY#teoqpYDB)O9A9d;?rmLTmJr|ZxSGB)x{9CRB0JL21hms=H7_amg2E-SmE6a*9er!R?)CvLBY4frS9b32TZeS5 zxn@en`{q-KzWjBtJ!ujO&=#_WQR06UJb(W-Q^*sbMC$$MzmF2_4HV~#M8{2CQ_>z# zl*s+L$4EPp^kn7Goj*X5l(yesK7;@H*;%YEy;i;LAA6jY=r`7m3A(;eWYM8Gx#A z`RaN9;vOgaSNAwRH!^42rOO*dD9Sv#KQuSa^{b!a65)~!w`((aQv^T$gA`2BY-|Yu zi=^Pdx6tP&9&z}o-!0Vxe;d#pg&9ij8@g7c{QiXKa8mXO4DU?PyXtWCMO#CboLL`5 zqze1>S(CVOwx#VTRHk?Z?qR~GjKAqyv+JFBG&wp})@v5S)GO0K`r3|z|Du()OPpgf z)kzjgo#>lxfd5kJ3agGp|TKHzNQUa?5769Iki z=QR&uJBXw>Vd{c?zhI#*{HN!cIZyZ-bw&HRK+ zCP*If=4;`O)%tOU;mg@Nd>nM+*(OM?jZ|kUF@0Sy3OY!g>PAR?w;0w~u@DUiTj-bM_wRww`PWU$57rEvO5?#nvhBzuXk2sh+87EM5ZM9dCu3d;S8dCis=hHydu3Vu4H%+Qm;%QKQcgtVt%YXAr@obfC$>T zS=eTK*>(G7F?lxcvU6eeJ#^i>cztIm)-l44agR)h{x!H0$`dr^O-N(c#`Hlsr-Hlj zCBXo7HD|x8bdw+4ZWRLkzqm7XdJskb$U&}mmj|E#<1>N_-prcytw8bNdoPNj8oJ3H zzlg$-Y#SP#GdKe1G74l#2NkdD3;B{J@Qak-C8SLjDoS8l}99w z*n(JP?T8GA{5#7mokOuvBeUD;k=MMMTKrAY*^NLm^=9ZTZR!>~sqyVYQg2-@T$t1i zem7B8`&q;KUjn4je*o#VqP{cM{|Q~o%*ewsJgKisICvpVJn@7y#tHgI_9Zpp5m;R3cG*4*vUPp|c757Tvs>39PO+x!(PGc6}yHFFe8-OCBU=DA8$S{tZ4&c;MW zLqVVV5_~q?`pXl0-a+{Zz^oUVC?Zo`@TudC^r;8(B5tn7gy-QI{%@s)(B=_ip2W_6 z%c>V!Qak4W5aorURu9{iy#IehQ7NBSuOQw+L7juBDo*zbGVLz5r4F{unl6^4Mk$gN za9a8Lnv`^2jbf+ivlwrMDhvOBU!f{UG5@a+R7hZjvgKO0*ye9abjU)%N!g-s1wGciZ~SYt<|$0;UFbZSCv{5cwFRQ$06<2)vuAxvCZ+{}b7 zAMSj8=v*dgckbpmS%?3xRE$g@tpo0F;CdTF;5U?pf*@7hq)aHcldZT7$kdl6llzLf z8EZ7wm%kXoAvFK*kSmPGuSj2(x3#8a(=w_5J>uFln^HCMnNwk@u2bt4sbMS>`*=50 z^^bT*?aNJF-b~!%GVNSEn?OX|xV+Y@Xqf^|Z} zWD0QDs|Hte6gbavR-G=my8NGnSY>~xt@D!FD;2==_BA)=8|h28`@Ax98%EMNa-me6 zy>4=w#e_LW>O9C@ZGeaUIdceYAeML+vlF?2|8xTPgB(;XHDpSeh_fKuhY$t%DR_dv-t_vHW&zPH8cXdvkYeq|%H#Wmq3u#Kaiv8rZ{5tv~Menw|zYac?0tTr&c}RMjr^`$q6wB|461EnaK)?bw0Vi{KI6dB* z_=^K=KqW9Z#hUB*N{tpx)#%HjGnNnK-iKaJo)|qYGm(_`r2aG?dW2sTCAn9LFK(Zg z^(h7mZth}>GaUv7#&=wv6yprnzUC%zW5f}m3aW+-3&j}wq*kV?*;uMAVAiQ1a35?Q z=}*jU$}i3Qi`B+Y=Td@ZeEXCzFcZZ+TJ^Rm8|!@sqKzP`6}N@DejFpPJK!12Kt**o zNtD;h6DkPZH^?fXj{ti^lO{E5p0^WUdhXY~R~HnN0G1yHr9v`AX`2-yJNofs@9j@k6CjPHZ~B^^4`rHMY1^Wa=_Dqp8}^pi9`}sZxIJ_ z7RfmuNo3}d&u;EbNJQ0BBNth#9FF+Wk;@!h9Qg$SURSM7GvP6-&fGNw2Us@9a=__F zb+@$Ma6=7y!l{3-C6bxDP&yc!X_Z({{myf>d_EN#_SGCJt!CrSIGxIJ>XCtyWEQd_ zrIEJ>0!=z*4yCGK$J4}S;z2Y5t#0b-=RnE@4Jexafn<3(jjcI%?fTY_^+DsWxT<9m zQtH#ILWu{l8idUhkJ?NUpGZtq97T~0ddvCUj_@8T7?M=P)k%6MX|@y;=fCe@6(6hF zAB5QdN8mR@t@CdACEmpByI)u!kTjaFuNE~FkZ;9aqG_ts%Xp2w?#kwgMkO>Ie?X`A zw%my&6J8N}DwB877MsTvq09*nuW7EkJ~X^hQgXd^Z7>PYBNQG_Hz>un8~j^4je417!zI9@R=OZymK8D0gO3Dv$R5~O@oYd< zJ>Wq9{DupW6dLIq_O*%BHv{BBgkgYrtO6V4+;tj`S5(S|dmJye^-*#XIlPqzh`==> zrj9<~QL=bXpoD>7lElg=p`Re8RCVGmSZCK41FZCo-}^Z!X?qt_X7IKf1x%HZcSFM; zL{{t%I9#YigwRdgZujns_}grheiFH#0%?`kO%d4> zk{LU6&I*$ltI{~=OLxpRwwStfct9-qrB^DIytop}mbW?}-7F47y5J1abvn)NC>G=~ zPZT8CF{II!+#%m`qC_(XH~Q4q+D)B$EqHv5KT4``_KI$mX!^vcK)t}k?F4J}{%&%1 z1wI^*^}CY+vVO~6PSqOssl}CWu{SM9$h$%VzSh*$dDLyML;|sb_5y~fiO46S^u%BO8 zP#d$C5fBh)eSW$pCMKr0Tx5PaPwY?~vs3vGh3#uq;}q*|`ZS4Irk~cRYR;hO6mWjSK4IBT4`Zt-kGS%6fs7)mvj?i3 znGsvN4x6l(4y}&!{~B`3{oC0D^Ju#PAIKi2;w0Jd1O)5T4T4g@=0C~!!N86K#mWHx zM!n~$oL2Tonrh&ZC815sWQQATp(s$nPQ;CH_6_5Ls}#_v0#;6BX$SjBj{!k`1L`Mg(}lv>wqh_S+ZQrW4BR2ObcXHzUi)$)fXrRwgBl}&o}Qe*P%}V{qB)Hr>e~M zrw)v`Z9J0eVT7=~=L_G!r`QM$NtDt&HNZz^PA(%n)B7AK87?oB z6>jcx_;Mr^9Qx1cB83w!{($o@9iab6VqE!KEKbd=@&Os*ub@sZ5rB%29$TiFlk-Ck zbf4que-FJ<2nog80O_$q`-WdOhCh>FetQ@v7}~ zoB~%N;MrJ+`3}~kQhjqkENt^cD+BQnV64E)A9~_+Y)sd<#H;liB`h$$GCy3@sPehX zeZbWQnyIeSy@YOw@8~m63+657i>z4R%%E}A?{4o-sD0rn3%u!0+4A__Yh$vM?EU95 zl)WNg?)(!zx@hx{?9zTkq($Mf?6u6yJj;y^-ADX?$rr^e15~v#RJIDAUJ&+r1{L>F zkMR$}f6uASYDwc?xbMHcxWE6a+LsdNI5GXA4ea5Iub7p5u-an`fX%FgKk{Mo{c|?E z^L7z8?yc$!Q7Nq_ap_<1#I~~ga4#sleAJty;y2V?zaq4(i(Mn_VUn>EZbSdnH zz{@{gDeyX5#jDDo{(aNc!8)+6xOvbb-v55 z{5}f@-87mt8D*6HM$6BPM&*`>Mh{m(V~k8XGE!w1Vvd&X^l!FtssN=n@Kt4^k&#Kk z#FZUrZ(jQbQ%$PDlW~C_zVTp~JY7rqpl#HD%29Y4ZmHkUf`Z@G*5g!ZV6fFibX_=0 zZ7iO8Lqd$%V9e67zUiwCmvRli1!8ZGeecE~n!I|$SUv_ivw@OXwwN$#<7Edu@Yi@2 zn`woba|zR%_%3kwcVlo@LdOD-8usD)uw6F;6$wi%ngWz7Fc0-E5^aHG`G@w9mcqs{ z?qZOn=c8~z4~BhNergh}YTlBrnMl&A14iYmd69ow#2wIn7C+u2FCaB!a5*2VvaPVS z9V4iWd766YcsK4Bbk=M?{;<0_{0@Iipv zdc~t7V#FoekB)5HmEk%GJRNlEbARvgZ1RAsNvV2Of-CXJSg`xct{b6LV0Mg4Q(O4|e8uN(5J?Blpt zb;v(3Q+qX1uPa$-1Lh$GO$>4ZOM=!$RxBcbuV%&bE67jHMG|%!J9F>{#0tlci!at! zJG-m>CwfCpQ>!Y^m({)YyZqX+8qb63;_G)3aOtJBIEcV8rJ)Boxl!Ex*J`y=$2C>f z@tmMOmfNJ~W4G!?j`t0R1ZL*%igWWu~(k;zpBuA=42; zJhWXr*^p8df)_C(HuAlrl}iQba16WqjQq=21*d0iEb5Pc2WlgdEQ!WFjYK6{$d&l~ zL;E{EBmP)|>CBx*@W!1SqHl~{+31~rhUV_b4+y(Tn=5C-T{w7>r6dCw;)vCOc)PY< zMnCu=4-I940ktN1WHNUZI47vLRc+%Ru}f`9sw6X71E`GdHBrj@JNlzSQpvsM!MwW9 zz`L=i+n^=|?J_?)pkf~{zSFsDuQNXw-43U^J!;S?OFbTnuc0Ep2lMq^^KG7NY|mIz zZ@VJ%tn#H83M2+U;TRMBDfVSma7e(iY=K~NVrW6m))AW-+K6~jB`>|UdVP*2K|hlM z`J8ofEM+#s{rN<>5}N+D^yO;of=Y_kTxE@jU~}fEcAV++E0f^18W6KVc{g)?&#|$* zv4%x4rm#wN_>AibLvEWM&bH;=p|cm_YM;19P?5zi<=(rr)YDdw+gG7Er&4}5^S1~_ z5LF%5v3|OguK*Qkg?v_a+~hLp&D9ApURdCpy`?Su0%>tkc{25S6$0yW6gpQ_+q~Rj zBF%qhZ%Q|KG+`A)VvD#LOvH)o7}(mQS}YJjbMn;_QCeWB41qP57<`lOysNy1c)uow zXR%YpplopxM^x!*GHPv;))>0Kd$wo~9k}`G;1+Vg^-DkhNvD*Fnu#k0rTLt)LM0Y$ zm&?5Y`|zQF%}JYSzSa`2%9i2M`m4&Bda+U-ao~6S_QlR>`3N9E4=+Ne`qsbvMFtE` zdw$32d4mbIFh4ZU0ft4bnfVn`dioD^bTYF&)LXML@IboS`b01qu2AOyyDi%Vp9v$J@myHP>8(SVkO$~IK#8U^=bN9QcS&$JIN z9pyr@&*jx?g%~BqKo7EjS;UIMjUg(~OhE5ONF< zk{!$9xGI#D>zYtR=d46wHDh7M9;l=Zy4m)}eXM%KKIZo24Y!mn`F-N|OC2kT^`TVYMx$JD1(jaJXcJ!;Uydc&G%JRJeruNLGt?v9|L7jI7Fjb+$drIg|fYhgXO)vo!=}K#rnhzn_2Ml1Nbc$ zh2RBgD_pnt6c+Uh z*vQS+)WLeNN1-9yTclicu1D?p00XY4LSl=%W-D3~;>jg$pZY zk8fU%jSXgRb>l};CuS@!3>85^dO&>gHmjVgJ# z`Q|lq)9w^}h<(OQtv@DWrA;$Bcotj#lrFS(V$PM1vcdd%RXE;2NNJxOYnHipgCwq$ zSfckffPJCEr?^_!UOZ6ALKB#7%vGQD-ePbbtV!n)kBa9n-T@o=^;bh4B?{x)EQ%*-8wQJ-3WZ@s$3BO)=W!LA^Uv9-7N?l~_NW|kH z0_hG0_GMqPM**$zC#~%Hg>M~2?*=JM#5d63FpPfxp7(F1%8Nra)L+dF+2dw)=xL%) zrIP1Oq@vyseTtW-41_)r6e~3~(fetPO+zJusJVKE8(Z%!xcr3!hRe#FU`wPM1DPCA zEA8KgT4L;M_<LC9r+mjJ@hr9>@AYR^6Y1j0|{{;9ND%V!o)@^ zY+4Ci)=={-KXlM%x5c}&)dxu;~(9^sf?xS3QM)xBvLys5Jo6MT`$TpWamO@CtU9w zwB>*Ct$Ke({8wa`^}&+F>bZK6Tq>ueFFf{dh>N|YN%+ADVC^k+nZ;C-6#d7$2ncF?iQ zM+1AvD3h*J0lFOd5+7+7Ckn#rP=cR?Xfl~u_i^DHPv4|^gC(~j3ZmGUlbmJ+Veo{5 z8ZeIIx@VAw4y$6{2Sq>L*?AnrH_OgO1fj4R&{@uTiJ?JjC{mhm+}R(pwU119uE4@B zOLY?<%yTiv`OzE|AOk9CIgK_Bp6MX4kZt6)bazO$(yLIv@bgrB~C8;NW9wx=wEpcv&tHx;x_v`cC z$OMgT+-|&&WaqnC(P!mA+K4Ss8oBiTrf#B`NFRn-ZLiSy*9&#&gD2t4!kM=$jwCK? zR`t>z;cf*)u8);uC2Yq8th51JJXcIyXOvr*##(gEr#(W4nb>>l#g31Ut@ zr`9diPC3i{`WoxxGkZ~#7VbC&j@tqo5v{z6y;X#lb*YTAhPyA>-Jj z9J}h+`M8-4mdg79M>9FwTYV<<%6iBlxMUTrGUGxT#QF+4DNzE}a_FEJ7bLJWye^hQ zNqbK#_nm;Fz@O0YMyuB#Hz#)+oUboP687$AJ0wC<8=GBjk%Hj?Kdh{j2%jsO{XLb? zY{}jxTjJ@yYPe)kkP=YMK!bBVv*7d}bQx|rBruq4p!z|MqCgez(fFQ;)x$qE28raL z2MbV5G_eE}mYwKdgk#wtKJJ}tUYVb04c z1}@W0(9q`A_E5JllRW$3L_9Fxnf+MdYd$OMjq0$H#JOh#q*o>2hD)r7 z!@P4vY{i!+jpcJh7!6awq@w|)kMwD9B;CW4@8`MDs;;_&DHmT((dhGhXtJ?(zdklx zX@-B>!GjP)I{MPsj}inbV-?jIngWjI3T?~;0fwj;oJN)vj%1c)6d!DXnQzJlP>_f@ ze$7D3+`(jwiaW$U$TIr0Y0t45oi9$jwdgE{juM5f{@cbTlc8m&XYDaC;oc$9QV|rA zPrYSd^ZJyGl_sD(-L+lL*iE%A%b;Ko!{C(&yTf?)LQfWCk0i@`TwFaZxJ#FoVl51rH_k*K#X;a8|iXtx66^wbyHG z?9`HY4y(95CpVup@9cd%BKS?Ev)N}a+ae|SLU(pxnv7w?!77qVw9;SCrP1^(=d*7( zV&a*wSwK(I6sdAqa^PI_l9_Z1sjNyrPJwXx$NsK?-+qr=bsRrLTuePf03eShS2F_D ziihTDfC>sLF~-=KshD+Cun~<1*tAqzTrqLN)mS4MIkmUNizsB}6=j3%H_%)s-C^Kgy|$Ui;2fHNf!Bem^)nVPL(soV8e# zuvmurWoo2S^`oQ9%LFbJPEdYBJ~*8ije-w+1aS#nkQzAWS)a;9anEk}g0v4TJC;hd zdo9_pf6^!N7{u*!oJp}-!|(cpho?B{J6Cbc1`!E*VrUN9v;%K{)d4goi*#Bw$_(%? zSS+FTa}o7T{jL~OV_Q`^OAhTU;F++td8*vH)M@7%x?WhK$xmjY3x4Vp(9!?78(*IE zuE05Mw4c^);t&Et+asdFv~kr_F0=}3j%g}8V?qLD7A1{qWS$rQNA;S)xeZ&l8}FF4 z73jf~Irw+^{jH|j(}xurG$4=DZ`7G4%?s#b#RN|m#_Pxz`MvElvJrWXOUwG8s6oF# z&lPB+WJS8R*%d|hwh4SxNoy;o<^0Y|%6%E7t@3+~5lWY%T8TifP z&HW8VW9j>^Hr{kl9_2*Tlu?24xolcgqkX@sLaKV2O9{N}jeexeqzXK?-ROGLp?>$o zz^V(~x%V6qDfS*r#>!dWW90juXfdrxH=1t(riX&3e{5scJ!Z?-RaFvyH)uYY*0;R? zNw-k{*b&zF%WscyuHj_AA$mO(CS6d<4o-Ih% zIY>hl#jU;O>PV!0rC8;(#86_WsDxJEfd-6g1zut?)n(Aim9aT0mv*P6#0f0eEyWhE zUcK27`y!wi#J%OoaG+uI2@XbsD~t7<1VK)2wZ3Bo zkUQWXl+$dxK?aLYRuN}ZJ{J9g*8mOmQ?DX6b{fXR9oIEW5904RJX%{fck6?})^#?& z$%mZHj0HW0$AxE0>7}P@^eZx$x?BLq;qEdK0VB*ZpY7NuNpZ2XOQbt7s$FyMj%4*~ zx`x&+(J~RzfAVmtBWl3_fYS*}|GHMhl$t601XhH|wwWz9T=g+glU?Lt0Y$ zkDeO#m!Ut?W|(K(-X%cAgPwnm3e#k63~mp32=PI;yxVCm8qygYY>{(S))Iazh~QrB zG(2?9$wY|GXisM-o@alb#W0NX`zIpo36sJzoe{XEU)eLfXK-plMpaw~nrk{woTelg zg89x1I+lp;w`@ii8>HK%JW3$VO{kaD<}InneiAmXkMQ$?z(8Z(X8c|hcFS1`Wsng8 z)v0~u1|KXiXpja~&+!^=+<4nCx#m7-!*aKw)`uZl?l4|z$S6m8CA-xdO;mh`(bn1N zI)o9aZ*%lfnF~CZ=h2wP1}a+52YpL&x|LwE+8E30Iw@W8xJf=PEX9{UMN(uY{cKD; z&?})Op&$<49daHQ)8%7M;do3v)t?kK+J6%B@4#{I@};U>QWBkNZfMD1S}WSve^5Dp zXGP93>0gjsa-mbC)1f``wg{o%WCyRpN$~L%pQWZW{FWQZg4{}wutHp23apsL+`lRh0qq&4T49$?h(tzzdOQk03I27Wl?P0}YQF(C* z+IQp8UVk6^lCl7(j61skB3NN>=%t7sUYw2t)-|IMjR)W!l*(tq*RG?&;bE3q@8o%K z>o8C0Kk7uH^XG`rOIA81L)Pyv%r2j%m=(^v$f>_XiPHnlz!|^0t^1m^uoG*5cxT*t zOPR3k`n;T$=J?P5xMn*@2c2%f^7>pZhQI7J8E}YMfjYd)LxiuQ-BGdb?DyLs!+K?! ze||3g+aj~;2!r0)W5kENGpg&y>au6P*^)ozAK Date: Mon, 14 Jul 2025 15:58:38 -0700 Subject: [PATCH 1060/1212] 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 5641215a9c..d5f07030b9 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 6b78c38d12..35c96d5d19 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 fdba6806a9..3177e3af3d 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 1061/1212] 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 efbd48aaa0..7a13c0f253 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 b28bf3a66d..bdd7ac78c8 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 69bdeb67bf..3eda9ff361 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 1062/1212] 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 7a13c0f253..fcf23eb2ce 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 1063/1212] 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 5eb48e048e..ad2391255c 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 1064/1212] 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 ad2391255c..ff2098ed1c 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 1065/1212] 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 ff2098ed1c..af66c94022 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 1066/1212] 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 bcd354b2fc..75a1bf4ff4 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 a71d88a415..ed31a971b0 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 66e5e748be..3fc796a071 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 242935dcf8..df54aa05d3 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 bc65e65142..d8f050c22a 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 cf56b31a74..89d450172e 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 c4c2161533..e76e5f7de4 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 bc9e05e319..f5b4f95f43 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 0436d94a76..08e323bc30 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 d830da92ac..1b4b9d2335 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 bb5b13eaa6..deaf8d1bef 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 77a93bb632..d2519e1c57 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 59c8c1212f..948aeead5f 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 1067/1212] 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 75a1bf4ff4..cd01d8c718 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 ed31a971b0..10bb751e34 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 3fc796a071..396e7e1b5a 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 df54aa05d3..f751504c26 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 d8f050c22a..67fa66a900 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 89d450172e..475e387324 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 90733559e1..948814f5e2 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 e76e5f7de4..c06820f9c1 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 f5b4f95f43..b18736dbd1 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 08e323bc30..6ce299e1b1 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 1b4b9d2335..00bf1ae4c8 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 deaf8d1bef..5325f43e5a 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 d2519e1c57..71e8e331da 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 e14f1709bf..77019c0ed3 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 948aeead5f..e32ff6b772 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 1068/1212] 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 396e7e1b5a..a46e8a8c79 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 f751504c26..276d6f4de7 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 67fa66a900..30689baf01 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 475e387324..37e799f129 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 b18736dbd1..65a62e0334 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 6ce299e1b1..2e79ffe2bb 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 00bf1ae4c8..eb6ff4869a 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 5325f43e5a..22ce7ae577 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 77019c0ed3..6df0479ed1 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 e32ff6b772..72316738fd 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 1069/1212] 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 cd01d8c718..3c2b477056 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 10bb751e34..31ae2f699a 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 a46e8a8c79..e20cba89e6 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 276d6f4de7..a2d21596f7 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 30689baf01..161c15cfb9 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 37e799f129..5f1fd27161 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 948814f5e2..32855ce431 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 c06820f9c1..0bf9a33074 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 65a62e0334..fbeed35e5b 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 eb6ff4869a..4af1d4f1b4 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 22ce7ae577..283c3c3777 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 71e8e331da..3b597d22ad 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 6df0479ed1..3f09eaac25 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 72316738fd..5d5a064807 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 1070/1212] 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 eefff67b8e..52fac2efa2 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 1071/1212] 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 3177e3af3d..f43f2eecf6 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 1072/1212] 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 4d60eaa7af..2e17d1fe58 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 1073/1212] 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 2e17d1fe58..1953dbdc2f 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 1074/1212] 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 1953dbdc2f..45d1630a09 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 1075/1212] 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 749a96439b..84eb09729b 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 087515c0cd..a19cd5a356 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 e71eb71307..9e9384ef1d 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 9611f4835a..6e1a4609bc 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 1076/1212] 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 a19cd5a356..8c75157b5c 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 6e1a4609bc..72daa26442 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 1077/1212] 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 6b68d4ece1..3ec366c014 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 1078/1212] 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 3ec366c014..2c65ef17c4 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 1079/1212] 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 2c65ef17c4..237546c7b6 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 1080/1212] 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 237546c7b6..f0d916c427 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 1081/1212] 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 056b298349..721879f36a 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 1920a38963..b3430a69a2 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 66f9011fb6..52cbbb59ea 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 d38fac35d8..87627cf85d 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 083cfd7db7..184ceb8e38 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 363bd1c286..50cc42c1a1 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 f2a12bc67b..da2b94d3c1 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 5eede2573b..393f995958 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 9fffa41bf1..52005946ac 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 40c3988ecf..e6ac67fc6c 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 2090da157a..561ea17239 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 a60157128d..add7ed0269 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 d65e37535c..6b55e3c87d 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 3f26c7e32e..d2ddab0f0d 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 5128e4a1b9..3f3fab5b9a 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 9701f65a70..f3d214f0f1 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 70073ebc69..d3926b7dac 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 6353f84bba..1fd6bab2d0 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 1082/1212] 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 721879f36a..52e9dd2448 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 b3430a69a2..3f6949e228 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 52cbbb59ea..750a7b07d8 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 b421b7b1e7..78a2a5536c 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 87627cf85d..bd21fc2532 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 184ceb8e38..23161ba2e9 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 50cc42c1a1..7a476e6d3b 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 da2b94d3c1..16028fd4f5 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 393f995958..1a35e5fd1e 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 3fc67eca0f..e2c64d9b23 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 52005946ac..71ac6bdb30 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 e6ac67fc6c..527f9f69a0 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 561ea17239..12594a50a8 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 add7ed0269..c42c3c4ec8 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 6b55e3c87d..9beb9cb867 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 d2ddab0f0d..5cc7ebb445 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 3f3fab5b9a..9cd18f3855 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 f3d214f0f1..705ee91277 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 d3926b7dac..656e22fc09 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 1fd6bab2d0..b8360877cc 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 1083/1212] 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 52e9dd2448..91cf4c9fe2 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 3f6949e228..67f29e34c9 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 78a2a5536c..3f13bdf80a 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 23161ba2e9..8f2cbec038 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 7a476e6d3b..c465bed955 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 16028fd4f5..362a27f79a 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 1a35e5fd1e..a758a5a47e 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 e2c64d9b23..de57f08a43 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 12594a50a8..3507dbaccb 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 5cc7ebb445..98658c61ae 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 9cd18f3855..cf796efaef 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 705ee91277..e3a8801679 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 656e22fc09..af70354f9c 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 b8360877cc..924fd82c3c 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 1084/1212] 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 91cf4c9fe2..18e160df28 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 67f29e34c9..63c8eae944 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 750a7b07d8..244566a613 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 3f13bdf80a..c50ffbe8bf 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 bd21fc2532..3f0cb125a0 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 8f2cbec038..075f911dfa 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 c465bed955..c282a1e2bd 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 362a27f79a..6caab69051 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 a758a5a47e..e6e64526d8 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 de57f08a43..c1595ba514 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 71ac6bdb30..60f0f9ebea 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 527f9f69a0..fa096f9730 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 3507dbaccb..8f34dce0ad 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 c42c3c4ec8..021703b64e 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 9beb9cb867..7dfb22df0d 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 98658c61ae..8ba7b0a0ca 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 cf796efaef..104d98276b 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 e3a8801679..4372aa7156 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 af70354f9c..1463230715 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 924fd82c3c..1b9174fbe6 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 1085/1212] 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 e497aa5a48..c7fdc19701 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 1086/1212] 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 c7fdc19701..79a0b6e661 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 1087/1212] 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 35c96d5d19..bd0ccd9e31 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 f43f2eecf6..c9a57fe323 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 1088/1212] 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 b0749a32f4..c74b0ddc02 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 014c086606..d1b682c1a9 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 7582ab417c..846721c195 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 1089/1212] 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 c74b0ddc02..fd5ebc478b 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 1090/1212] 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 e552b85448..39de6b4ad2 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 8cf898cc43..5a13cfaf57 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 0938243a68..57571d4302 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 6cc12f0dcc..85fdf065e5 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 04cfdca590..bbdb649706 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 26574e9a1b..07b70732f0 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 a4e5816594..0859494786 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 599a575011..7a4456441f 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 f32ebc62e2..fc1bce5b04 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 8e2992bd81..a7aff4fb95 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 45dc248785..5dfb990cd2 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 bc685baa29..8f780a82f6 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 4f210813ce..95bd5c9e20 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 a69d0bcd35..dd462bae29 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 b9aecbda49..377ea2b6be 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 d1c9b3dc11..ffc0ceaa8b 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 30c5e6e220..d6857d456a 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 1091/1212] 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 39de6b4ad2..7bb6e95892 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 2cd9768016..b76cbb2783 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 5a13cfaf57..aea0a63190 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 57571d4302..e8c7e910b2 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 85fdf065e5..9355bdf328 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 bbdb649706..2c5bb40676 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 07b70732f0..a9eae8322d 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 0859494786..031d6a56e9 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 fc1bce5b04..bdbacd8b32 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 a7aff4fb95..21830a8f6d 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 5dfb990cd2..cc8ed5f830 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 8f780a82f6..0954a45e3b 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 95bd5c9e20..0dc3373cd9 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 dd462bae29..4e4de82229 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 377ea2b6be..81d929a240 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 ffc0ceaa8b..0a149450f0 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 d6857d456a..cd041d4c12 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 1092/1212] 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 7bb6e95892..28d9123305 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 e8c7e910b2..723618b412 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 9355bdf328..63c3aace6c 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 bdbacd8b32..621e0324a6 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 4e4de82229..65da50f11d 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 81d929a240..9d0be77943 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 0a149450f0..1c10c0be99 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 cd041d4c12..5e5109b06b 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 1093/1212] 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 28d9123305..cab1ce7231 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 b76cbb2783..eb2b08aa20 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 aea0a63190..1fd73ce8bd 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 723618b412..5110e09126 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 63c3aace6c..c205d3531e 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 2c5bb40676..f893c4e0ff 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 a9eae8322d..e2fe0f0550 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 031d6a56e9..210ec567bc 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 7a4456441f..a3e73e406f 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 621e0324a6..fb4d42de90 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 21830a8f6d..55e01b5bb3 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 cc8ed5f830..fb92234298 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 0954a45e3b..fe6702545f 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 0dc3373cd9..32d47e23c2 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 65da50f11d..e448186bf1 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 9d0be77943..ce0dfb543f 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 1c10c0be99..2f9baef338 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 5e5109b06b..d9f8803ca2 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 1094/1212] 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 c9a57fe323..659a9f8c91 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 1095/1212] 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 777ea551af..dd804d4df0 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 1096/1212] 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 c9a57fe323..0a4e4850e5 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 1097/1212] 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 ada04edf00..d30dc9febd 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 7889048806..e79f0e6d59 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 1098/1212] 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 d4cd01924b..d9eecb68a1 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 1099/1212] 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 d9eecb68a1..c70f5afc50 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 1100/1212] 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 c70f5afc50..9eff60080b 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 1101/1212] 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 9eff60080b..e8c26762e6 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 1102/1212] 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 e8c26762e6..47382cff0b 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 1103/1212] 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 9777faa45a..b4cc44b5db 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 1104/1212] 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 b4cc44b5db..c0878dac10 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 1105/1212] 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 c0878dac10..bf76bbbc0b 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 1106/1212] 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 bf76bbbc0b..18f6685654 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 1107/1212] 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 8622e00644..5f2b64305d 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 1108/1212] 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 5f2b64305d..05831c0e46 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 1109/1212] 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 05831c0e46..7a4b89b0e8 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 1110/1212] 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 7a4b89b0e8..e05ebacd66 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 1111/1212] 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 b08b50209b..f3d7aecfde 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 fe4da84ea6..54743ab531 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 8b9469c32a..e9ce4d517d 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 1efbd04b7f..e2af72eeba 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 95466b4037..b4c13c1261 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 ccd132b239..9a67088c71 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 ff4116ac64..8cfdfc23d9 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 ac07d50b58..7f45102a51 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 7465c5223e..7747d85ba8 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 1112/1212] 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 f3d7aecfde..8abd76f842 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 54743ab531..3bfbf58eb1 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 e2af72eeba..f85c05baf8 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 b4c13c1261..146d92aecf 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 9a67088c71..d5fc72a6e4 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 8cfdfc23d9..ccbf9e6602 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 1113/1212] 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 e3ca226ad7..10d987bb55 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 6aef2bbc65..1453b5a7f9 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 85d58a5372..a9c73bfc06 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 3d03849634..ec79152586 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 b6db092290..42b513faa4 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 749be6dcbc..8f4c13691e 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 74433b0919..692c261ac2 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 a1a2c41a07..f93d5accb8 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 d55e9b6fc7..ddb04d0e1d 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 3444f6a2d6..3ccc3fbc0f 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 8175641f50..99b7ab7a3d 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 97e108884e..1321ac59fe 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 34f1655447..98affe245b 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 e3e854bae8..a3f56f0e37 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 d59180593b..adc216f444 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 56e12832c9..bd7a75460b 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 74067b233c..dffb6e88b2 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 c01937be6c..ce3e8f512d 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 1114/1212] 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 10d987bb55..fe505fa279 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 1453b5a7f9..15559ac946 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 a9c73bfc06..948095c359 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 ec79152586..4c606c8e6c 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 42b513faa4..26f759d60a 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 8f4c13691e..6507cbbe24 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 692c261ac2..9d63788459 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 f93d5accb8..a1e46a787b 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 ddb04d0e1d..f7f15be9a3 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 3ccc3fbc0f..53d8a43f0a 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 99b7ab7a3d..99234f37dc 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 1321ac59fe..5e4dd8c40a 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 98affe245b..08b67f67bc 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 a3f56f0e37..d81489b152 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 adc216f444..f2fd57fb54 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 bd7a75460b..87c3106397 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 dffb6e88b2..1b2aff2d6f 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 ce3e8f512d..7c5b1dd5cd 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 1115/1212] 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 fe505fa279..8353876884 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 15559ac946..1510f62f67 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 4c606c8e6c..31352df295 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 6507cbbe24..f055231f04 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 a1e46a787b..6861e85bc8 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 f7f15be9a3..dd24446d6b 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 53d8a43f0a..b0542a307c 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 99234f37dc..9c95b5c619 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 5e4dd8c40a..69c6990d73 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 08b67f67bc..79cc228825 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 d81489b152..c6b7500c46 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 f2fd57fb54..595214a0fd 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 87c3106397..facb5ccee2 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 1b2aff2d6f..dd26d25d21 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 7c5b1dd5cd..0ab3a3dc22 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 1116/1212] 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 8353876884..be880ea0e8 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 1510f62f67..86a4d0259c 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 948095c359..95d0ed0a55 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 31352df295..bee34695f9 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 26f759d60a..0137134698 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 f055231f04..e2ad100f3d 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 9d63788459..e6bc3822cd 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 6861e85bc8..b1b5022b24 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 dd24446d6b..26511d59b3 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 b0542a307c..99ad0f1f3c 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 9c95b5c619..3ccc804d02 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 69c6990d73..371a93bf9f 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 79cc228825..04352aa63f 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 c6b7500c46..d36f92c67e 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 595214a0fd..ea6795bcdd 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 facb5ccee2..e200cd4428 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 dd26d25d21..91384b33bd 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 0ab3a3dc22..5ef2473a21 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 1117/1212] 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 648f536790..b2e9bfd7fb 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 1118/1212] 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 b2e9bfd7fb..e68c0ad42a 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 1119/1212] 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 e68c0ad42a..b5d7172a9d 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 1120/1212] 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 b5d7172a9d..d98adc4b44 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 1121/1212] 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 a8123b7203..93457f87c5 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 1122/1212] 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 93457f87c5..4b63d74a76 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 1123/1212] 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 4b63d74a76..f7b6a209b9 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 1124/1212] 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 0ad5df365a..e421e86b5b 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 1125/1212] 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 e421e86b5b..a14c085469 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 1126/1212] 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 6171c53c18..e1aa384e76 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 001aefd823..742337669f 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 933e582806..c1097d75f0 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 ecc111e042..caffc46873 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 1f1fffd0dd..351818ac1a 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 b191a05734..d60434b72d 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 db3551919f..94d1c9e353 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 ef1d970869..f14100ffb1 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 51d2a53818..e9f1f1a5e2 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 009e512bf1..ff2a44a80a 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 eb2fc27f7d..e6ab2c5f05 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 edfa71f27b..d5713a4bb6 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 7d2bc23ae5..2acc13ec3b 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 cc9b730639..ddb5254733 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 7bd87633ef..973fa6b17e 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 5ad3e47775..cb39ac2a2d 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 15613f96e1..770661a8a8 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 d8cc1b4db9..27e80984ce 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 24ce025b2c..fec73b43b7 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 1127/1212] 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 aa9d535631..fa16e96cf0 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 e1aa384e76..074ece82aa 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 742337669f..ae3a56a690 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 c1097d75f0..e1d21362a4 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 caffc46873..657f17fd7a 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 351818ac1a..2f3797ebbd 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 d60434b72d..3298a08661 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 94d1c9e353..81cb9a15b5 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 f14100ffb1..3b81efc8df 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 e9f1f1a5e2..de2d71f978 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 ff2a44a80a..3c77379f25 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 a5f9621240..2015d2bb81 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 e6ab2c5f05..5a12002bc6 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 d5713a4bb6..0b5c251ab2 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 2acc13ec3b..aa3d1675bc 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 ddb5254733..fba2999c33 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 973fa6b17e..e1f675d36f 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 cb39ac2a2d..06e332ed40 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 770661a8a8..39545305f5 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 27e80984ce..11a8a0cdab 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 fec73b43b7..42073aac2b 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 1128/1212] 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 fa16e96cf0..13e76c2b4c 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 074ece82aa..ac7914b2af 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 657f17fd7a..bbfae4ddc0 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 3298a08661..d77aaa48c8 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 3b81efc8df..054648b694 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 de2d71f978..762d80dc56 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 3c77379f25..109b769ac3 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 39545305f5..8a72d93704 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 11a8a0cdab..653d4a5b00 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 42073aac2b..899f5f6d09 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 1129/1212] 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 13e76c2b4c..01983a4cf4 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 ac7914b2af..1850f52d27 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 ae3a56a690..b09f6a116a 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 e1d21362a4..6b073e8cc7 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 bbfae4ddc0..611865407d 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 2f3797ebbd..fab75ec1e1 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 d77aaa48c8..6c3ca30878 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 81cb9a15b5..16a9f9f198 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 054648b694..667f53b64d 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 762d80dc56..5d0d49c0e9 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 109b769ac3..b13e45b5ee 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 2015d2bb81..07e17522d3 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 5a12002bc6..499519f546 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 0b5c251ab2..0660cff0df 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 aa3d1675bc..894171131f 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 fba2999c33..4607f1838a 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 e1f675d36f..7d13d46a0e 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 06e332ed40..7576eab5fe 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 8a72d93704..4c84efc13a 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 653d4a5b00..f0605e69fc 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 899f5f6d09..a77432e3f1 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 1130/1212] 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 e57e115b0b..cfb45113dd 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 1131/1212] 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 cfb45113dd..ba12a44d06 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 1132/1212] 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 ba12a44d06..eee802a7b5 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 1133/1212] 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 eee802a7b5..2f17fe0d62 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 1134/1212] 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 4bcae67303..07495b2ee5 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 1135/1212] 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 07495b2ee5..1394a4e481 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 1136/1212] 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 8864195572..2e3638129f 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 ceb9ff7972..2f11840024 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 4b596fc273..6190f18c57 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 de9ff62f36..972ab5c232 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 eb5282b585..0a46f3cb00 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 b084e0afbd..9ab3109c80 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 2de8ab623c..5368ba8b88 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 1137/1212] 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 2e3638129f..1aa648278b 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 2f11840024..26806b0ec0 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 6190f18c57..3b2cf2a02a 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 0a46f3cb00..9f5a4136d1 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 9ab3109c80..82983a5e29 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 1138/1212] 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 6f95cb15e9..fef278a163 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 46af61cbe1..4a16fb3245 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 cb1b6646bc..3278e951c6 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 2b08baaddf..31a4eb764e 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 fee5e16f05..b90dee51ae 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 26743ab065..38ae6b4c1b 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 f1793fd8d9..67b3ae02b2 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 ccf78a2612..1436efd184 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 e12e7174e7..ec785d8598 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 eed68eeec0..2633ef17f5 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 cf96d1724c..6314e86a1e 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 c2ebd50d80..47203f5c45 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 6fb7fea798..7c4394949b 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 2b33cb4e28..b225f63e4c 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 c4ac513175..71524c1f10 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 77ec80c574..f6f6a32430 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 7eaf55a4a0..9fb28bcc52 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 95a67878c5..555c85cba5 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 0f7436b72b..30629f0d45 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 fa25eb214a..63f0eae7a1 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 c0c1e5daac..7ff7ca5837 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 1e31e3d767..6f3adc5275 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 1139/1212] 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 fef278a163..3c7345b293 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 4a16fb3245..39c0057dbf 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 3278e951c6..8c581360ac 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 31a4eb764e..9f686d1fd6 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 b90dee51ae..306c49f7d9 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 38ae6b4c1b..674669a1ac 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 67b3ae02b2..7de089058f 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 1436efd184..b7a50c92c2 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 ec785d8598..f2a2c48e8d 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 2633ef17f5..fce7ac39bb 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 6314e86a1e..2fb00bc883 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 47203f5c45..a85d17f359 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 7c4394949b..f2bb4a1484 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 81f0232666..cd7e67afa4 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 b225f63e4c..8a31cd7ff7 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 71524c1f10..845fa9125c 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 f6f6a32430..132a488f38 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 9fb28bcc52..602d3a755f 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 555c85cba5..414abda3d3 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 30629f0d45..bc9676e95a 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 63f0eae7a1..2d6ea4932d 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 7ff7ca5837..99a1f00550 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 6f3adc5275..3c070b3c21 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 11c96f2b72..74270c48a8 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 1140/1212] 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 3c7345b293..2893c93d89 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 39c0057dbf..0799d5ac34 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 8c581360ac..eae29aa23d 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 9f686d1fd6..e298f86f35 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 306c49f7d9..521223e641 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 674669a1ac..94325929da 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 f2a2c48e8d..4a73edc659 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 fce7ac39bb..24cb988822 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 2fb00bc883..65d6142671 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 a85d17f359..cfc2d82413 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 f2bb4a1484..e9343220f1 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 cd7e67afa4..a925b2c310 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 8a31cd7ff7..711bf675bd 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 845fa9125c..b1152ea8b5 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 132a488f38..382966e5ed 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 602d3a755f..75c4cdbe26 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 414abda3d3..427ffaded0 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 bc9676e95a..a0740739bc 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 2d6ea4932d..d4e1904686 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 99a1f00550..281491a512 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 3c070b3c21..c6c5b8400d 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 74270c48a8..974025e237 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 1141/1212] 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 2893c93d89..a3ab0edc00 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 0799d5ac34..58ab4d67d2 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 eae29aa23d..941d8ee870 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 e298f86f35..df26be2eea 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 521223e641..4fc2c582fb 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 94325929da..36610cb8a8 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 7de089058f..1b3217d46f 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 b7a50c92c2..d7401ce758 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 4a73edc659..036a1ae997 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 24cb988822..d0ae19f328 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 65d6142671..585fe22556 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 cfc2d82413..3c6e5d4c2e 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 e9343220f1..e658316482 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 a925b2c310..6a240fa1ff 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 711bf675bd..08b0242691 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 b1152ea8b5..90762d9a52 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 382966e5ed..f3be89655f 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 75c4cdbe26..a26bb54ffd 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 427ffaded0..10af621f45 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 a0740739bc..675b084392 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 d4e1904686..99711de628 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 281491a512..2c40773e23 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 c6c5b8400d..8b04f7d245 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 974025e237..9bcb2e62f8 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 1142/1212] 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 eb8bd54da2..bf0b5fdb84 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 8aa445522b..4e684dc673 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 e2e1dd617e..b4156cb684 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 9fc181b416..6c01dee721 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 4018e13c8c..f1e87ee546 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 8be9311197..b9b75aac53 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 b19c40b8b2..5be147eb53 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 cb79055f4c..e23a47bd36 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 a47e01e02a..a6fe45a754 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 2000e990c3..2c78a44387 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 52cd5d4fca..b670f40347 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 5398ae9154..0948c93d6a 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 f1aef2b07f..7de82b48d4 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 b7df615fbd..a2593950f7 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 c438dc7138..0ffdaaac91 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 cb7c1d60c9..dad0f15a6c 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 8479291e54..da5d13bb9f 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 178c7c0076..6a4c765554 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 485af60194..2141e920db 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 f69fdf273c..5b12572999 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 1143/1212] 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 bf0b5fdb84..4de84ccc6e 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 4e684dc673..ea89e15d34 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 b4156cb684..03b2a6fc83 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 6c01dee721..32e2c9840b 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 f1e87ee546..b1616b6fba 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 b9b75aac53..378638e69e 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 5be147eb53..b92e5ca856 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 e23a47bd36..f4078a960c 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 a6fe45a754..a6d77a74cc 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 2c78a44387..6f7d722211 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 b670f40347..e3d3bbf516 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 0948c93d6a..7a482e8873 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 b6fe542bb7..d564a81429 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 7de82b48d4..8f613cea95 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 a2593950f7..46fd1de9e7 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 0ffdaaac91..f909de6644 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 52b1375800..457c2ac518 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 dad0f15a6c..4b095d4fca 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 da5d13bb9f..38f2682e63 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 6a4c765554..90eba186ca 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 2141e920db..85b9002aaf 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 5b12572999..6d040d3b2a 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 1144/1212] 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 4de84ccc6e..4c31a13530 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 ea89e15d34..759b176be2 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 03b2a6fc83..a5afdee353 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 b1616b6fba..0bce7e93ff 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 378638e69e..e7e8fa4de7 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 b92e5ca856..5370292d09 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 f4078a960c..b0d632d3f2 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 a6d77a74cc..8e8057c810 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 6f7d722211..a52ccb9bf4 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 e3d3bbf516..fc8d2e9f3d 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 7a482e8873..57a53d295a 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 d564a81429..3c9410edcd 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 8f613cea95..e04c0ddce2 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 46fd1de9e7..7a4f33b9e5 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 457c2ac518..f399bc8b8a 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 38f2682e63..e8288d18f0 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 90eba186ca..1fa625d536 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 85b9002aaf..b2db59cb3f 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 1145/1212] 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 4c31a13530..3c27593063 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 759b176be2..752d2409f8 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 a5afdee353..915f27a906 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 32e2c9840b..ecd97db4e0 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 0bce7e93ff..2393a3ecdb 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 e7e8fa4de7..6c77ca44b4 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 5370292d09..d6400d6643 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 b0d632d3f2..5cd706b293 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 8e8057c810..b8915aeab7 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 a52ccb9bf4..c1bc46a2c6 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 fc8d2e9f3d..67e054c561 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 57a53d295a..b4a3a21d31 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 3c9410edcd..e583d2541c 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 e04c0ddce2..1f56b60b30 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 7a4f33b9e5..0591321c48 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 f909de6644..c952f212b5 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 f399bc8b8a..8f402a366e 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 4b095d4fca..d11de7e744 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 e8288d18f0..81e52facd8 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 1fa625d536..5028b594ce 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 b2db59cb3f..dd43552c14 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 6d040d3b2a..5742c5e234 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 1146/1212] 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 0e523fb9bf..7c70aab623 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 708f741e6a..5848e0a8ce 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 c1a892c54b..b281c6123e 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 800fe8605f..e17456a642 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 1147/1212] 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 5848e0a8ce..86c167a0fb 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 b281c6123e..b5cd351176 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 e17456a642..a35a3a2af9 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 1148/1212] [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 57c03deb47..48e8963904 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 1149/1212] [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 48e8963904..e9455ef10a 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 1150/1212] [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 e9455ef10a..b167daf235 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 1151/1212] 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 bd76e3b6f3..c97e8c3d0c 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 a336049731..4f5a100c3a 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 4a56c8107b..2f728d94ae 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 c7400192b6..861fd7f512 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 4c87768cbf..f5ac9540c1 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 389e03c230..14baffd00a 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 336706d3f9..9395bda740 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 776d8b5da6..0bfa38327b 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 cd1709709b..f6b35149a9 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 afa6499a17..7a11ed48c8 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 266e984099..e5a9761077 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 9be7549e0e..be23f0f5b0 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 f9dd7af32e..22ea3970ae 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 1152/1212] 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 c97e8c3d0c..89e332528b 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 4f5a100c3a..db453f19ce 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 2f728d94ae..30e85cc003 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 861fd7f512..3a614d2184 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 14baffd00a..6d8ef3944f 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 9395bda740..5e3a65200e 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 0bfa38327b..5a632e0931 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 f6b35149a9..f580355a8e 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 e5a9761077..c522bcbcd3 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 be23f0f5b0..a61bd4e8bb 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 22ea3970ae..ab97e69048 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 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 1153/1212] 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 444ec54501..40514a7514 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 cfd26f82ed..13334cd6b4 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 4eb9c708b3..926d9dd23f 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 35e1c6921a..1c9d0872d8 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 4446b6541f..22771c639f 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 01279ba35c..b948c79311 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 ed8722eb60..acb65fcdd5 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 224ea3f49a..49961e1320 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 c208f599e6..0b58b7607e 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 eb04364ed4..0c9053c8c3 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 eff745b744..691f07b181 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 a2121985ad..4535a25eb6 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 da06070882..40f30f1268 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 1154/1212] 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 abb153a846..bf4a575b47 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 37f9edb380..a780106d81 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 0fb47aa4e2..ad2e8ebae4 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 2e841d2138..ef1fd1944d 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 ddcd04b833..f8dd4c9625 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 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 1155/1212] 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 aaa1c15a1e..f4cb0ff24b 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 77c5673825..8f19545516 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 cca7a68bf2..423efc65b3 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 cc504bb490..1cf21be284 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 72e07ffd0f..74b22dfcf9 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 019f17fbdf..50750abc3c 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 f8700a2718..d38deedd40 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 6b72d3b25f..eec84497e3 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 04f2bd984a..9be97bd769 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 c3e9b3a0aa..2ea72da9b5 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 9d253c5cf2..541b23cf3e 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 591f849267..53d162606f 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 457e01bac4..1122ea1144 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 d792657cd2..b71004540e 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 17e5da3112..f92ee99c25 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 9ed1835bcf..635fddc23d 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 4d06719b10..9113738138 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 238ae3dfb0..f83cef3e6b 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 083ac66a0f..51f3f37046 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 665db8ecdf..0dda0b13f2 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 227bdd1cf2..f927b0de41 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 f7b4922791..01756ffc80 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 3d16c77f89..105a773e48 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 b535d8ccdd..de3b9ea594 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 2b22401550..6a91e72bb9 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 1156/1212] 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 f4cb0ff24b..bae1313137 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 8f19545516..bcd7ca93c1 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 423efc65b3..5a646ce54d 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 1cf21be284..f2eb26888e 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 74b22dfcf9..8f61550b6c 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 50750abc3c..b503212b6c 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 d38deedd40..25a6e84f5d 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 eec84497e3..13237079ca 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 2ea72da9b5..8d57455bb2 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 541b23cf3e..92cf4ff91e 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 53d162606f..2e26ebc728 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 1122ea1144..69c1c4ca01 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 b71004540e..2ed8923362 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 f92ee99c25..9512ed71b3 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 635fddc23d..dbb3ab65dd 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 f83cef3e6b..0ca9c55341 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 51f3f37046..aabdc570be 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 0dda0b13f2..308dcd2575 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 f927b0de41..66191b5c26 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 01756ffc80..e05adbbaf9 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 105a773e48..29b8e759bf 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 2de1428b311cad63d3a033fdf521fc5b2c2b1382 Mon Sep 17 00:00:00 2001 From: David Justo Date: Tue, 29 Jul 2025 13:59:11 -0700 Subject: [PATCH 1157/1212] 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 49ded7146c..a01d23c484 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 1158/1212] 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 22b21114a4..80ee69c7bd 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 1159/1212] 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 a01d23c484..3da467b258 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 1160/1212] 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 80ee69c7bd..6903538cac 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 1161/1212] 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 3da467b258..3686347b4f 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 1162/1212] 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 1c72d7d397..910c96cad2 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 f797f3006e..41d1292a40 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 1163/1212] 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 d2d2f03f8a..87d3fd7146 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 69b1bc18ee..b56efcce7e 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 1ffb0fb6d2..b2f59a7381 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 f6e9b8cea0..5ce61195dc 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 e4830eee92..1337c29d01 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 ad06919a0c..e777914ccd 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 57ef6e6390..319b56d17d 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 65b0c66fcd..4e7f878b3a 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 3c08f7c6a1..8667ed4993 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 e83271fca5..ee3884e6da 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 3d50ed3c85..2b1694ea7c 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 542a3dffab..8fb9c33eab 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 d05de7876d..d5f545e3bb 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 8904350293..5818498c6e 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 8e4f8167f9..ba16a0f8a2 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 88ef152274..ac65f32b52 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 5803f75c49..0ffc8a5aba 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 e52bfcd132..999f3e19c0 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 b358186376..0faf68ed87 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 a59cea4963..f1b5b85af3 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 5ad89da173..8e9f63fcc5 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 777678f429..0f1ddba2a6 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 77fb3fd71c..7258c18594 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 02a2e7b506..c17812d54a 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 099c9706ec..84b4dd4274 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 51538ad0a2..cebb586d5d 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 4b5d1ff5a7..d54e30f8a4 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 e245d89aa4..17de2a0e82 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 a3b89d0b50..e156b5e7b4 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 2cd6fb5630276abcc18ec440e55181a50be2a544 Mon Sep 17 00:00:00 2001 From: Dennis Rea Date: Wed, 30 Jul 2025 09:39:11 -0700 Subject: [PATCH 1164/1212] 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 3686347b4f..5c5c46173d 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 d95ce3e135aa25f862927cd9e3be97a1fd7f9939 Mon Sep 17 00:00:00 2001 From: Mark Rotteveel Date: Fri, 1 Aug 2025 10:28:08 +0200 Subject: [PATCH 1165/1212] 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 ccdd3a65e3..99711c0b89 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 023338c378..c8b4c50b84 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 b79483f914..16f0f248d2 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 2501899487..70f1e92ac5 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 cf14b63ea6..4384443ba2 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 1dc0b113bf..0e4688cdc2 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 d082e56681..0a5af3152a 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 159c8cbfb0..c426b63f2a 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 ea77c9e0df..57e0b75a4c 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 d0ff131460..e4dd895932 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 8dfc40ae41..5438faa1eb 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 1bd6192adc..658adfea02 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 7659d01250..3ab549beac 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 d1a07d1b8d..30c44cf0d1 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 818d76d22d..d889960eee 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 556e26de75..e71f09e956 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 9543595243..96726440aa 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 230352b2e9..d417983a03 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 4b78314a6d..ded200ef16 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 f78b894e0a..31a482a974 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 0bdfe9d173..03e26c7b2f 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 ab4ec78c93..ec4fd01356 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 222d58fb20..ef07743865 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 e6c696ca31..2317d81513 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 edeb1db827..bf4207b1f0 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 090995ebda..5b9b55f44b 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 2602c8bfa5..e81beeba28 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 39091ddfde..c63bb166bf 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 8c4c2ef820..daf04cf103 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 6173ec82b5..3da19b9eca 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 0067e42718..3a2246a977 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 0abedce51b..d027fb7be1 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 e1a5560feb..4502798370 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 2307b0d592..008786d1a0 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 85cd180b56..eb18934fd4 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 f39a230769..376f861615 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 a23cd9d028..432d73548e 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 c96634aba1..f380a3b654 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 d6b7fa8316..1ca3fee5d1 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 13c4d70db4..786d95159b 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 e525394288..f44d8335af 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 3a18f09f0e..814fae7c91 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 6ff7913be8..6cd55d5897 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 30fbf70bef..ca1e986741 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 b3856c661f..da0daf01af 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 d942009432..b07cb80eea 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 fe713f5618..7da0611abf 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 051b2c96ee..31249a98f1 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 e360a51d10..5f278d8008 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 5e031b2448..73a447ebd4 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 e0aa010236..ef77b05790 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 48e766138e..0a74626fc4 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 b55c5b0f32..760762e2bf 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 2e6ede538f..f59114cba8 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 34d7225070..8f93b4f497 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 f99e5697b8..e318171fe7 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 b5ad576328..91c0d1f88b 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 7a7cd3fc6c..36b52d3bfe 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 f5b54e1086..434ffe7fb3 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 0727406c7d..f446f2644b 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 aed557b6ad..db6965b105 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 2bde55b76a..33c4a8e91e 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 ecae8ba0d0..63877154ba 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 39c416ac32..7c2a7c05f3 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 5b242bc21f..0010cfda98 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 09444a7cc0..b53334fff2 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 3c29ebebb8..ca4cb394b9 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 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 1166/1212] 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 c6e7b9a608..18e774904d 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 82484c7c1a..adf0764e41 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 e63ec9e054..49251f08bf 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 7ced014cea..58f4a8a551 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 a5767ea958..5316ceef8c 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 dd0b86bde4..bdc62e9435 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 97560fa93c..3e6351e475 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 e712be3b26..104f1ef0e2 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 637edee978..c0e8112dc7 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 b12f1563fd..69bdbd3a6b 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 a68fd0ce54..82733c55eb 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 1c77cfc600..68b6986a65 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 017757d46f..24d581910a 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 4d8490f277..e2a970b0c4 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 75038e37b8..e57b37e3c4 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 dabc0048be..ebf89c4a8d 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 a11f99a7a3..9ce7c9cf13 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 1167/1212] 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 18e774904d..8ba2753809 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 adf0764e41..5c6c69f0b1 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 49251f08bf..e17ad5bb8e 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 58f4a8a551..d9924073e8 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 5316ceef8c..1fc9cf28c7 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 bdc62e9435..92d214cc1a 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 3e6351e475..ca7c81a230 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 104f1ef0e2..e2e291b566 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 c0e8112dc7..2f168e2886 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 69bdbd3a6b..1c6b265ad9 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 82733c55eb..1e218bf85d 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 68b6986a65..f87638db0c 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 24d581910a..032e9ee4dc 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 e2a970b0c4..71a706d08d 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 e57b37e3c4..2377173869 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 ebf89c4a8d..9d31fc7a1e 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 c66a5ff3e1..81a653f3a7 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 9ce7c9cf13..635e018ec3 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 1168/1212] 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 8ba2753809..752ff03597 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 5c6c69f0b1..6c656c04c2 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 e17ad5bb8e..91e968e338 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 1fc9cf28c7..70c18f83de 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 92d214cc1a..a70bbab981 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 ca7c81a230..4fc0aac25a 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 e2e291b566..cfe6404b42 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 1c6b265ad9..b1731e7dcb 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 1e218bf85d..e2e6c88017 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 f87638db0c..7e498a0a86 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 032e9ee4dc..7ae9783e6f 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 71a706d08d..268b2f0a21 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 2377173869..9afbef58ab 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 9d31fc7a1e..c4c3c71ec2 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 635e018ec3..045432c28c 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 1169/1212] 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 752ff03597..9097b0b6b3 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 6c656c04c2..2a57df672e 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 91e968e338..8164ce8b38 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 d9924073e8..32c34f271a 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 70c18f83de..412a45f14d 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 a70bbab981..f70167f35f 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 4fc0aac25a..774f364b96 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 cfe6404b42..3f7e4fa6da 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 2f168e2886..054f08281e 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 b1731e7dcb..b31ff336de 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 e2e6c88017..c962231113 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 7e498a0a86..ed1bcf191c 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 7ae9783e6f..9e996c4837 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 268b2f0a21..56a13a45ee 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 9afbef58ab..63dcc2d64a 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 c4c3c71ec2..bc32d316af 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 81a653f3a7..c4700923f0 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 045432c28c..ee73a6aa64 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 1170/1212] 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 31a482a974..20d866f966 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 03e26c7b2f..197a57cbcf 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 ec4fd01356..61b57161dc 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 5b9b55f44b..e07e15b419 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 63877154ba..b5baf2cc33 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 1171/1212] 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 99711c0b89..e4819ceeaa 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 c8b4c50b84..0029e443d5 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 70f1e92ac5..801e33dce9 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 4384443ba2..8c8d2b45eb 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 0e4688cdc2..3027afd728 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 0a5af3152a..79022356f0 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 c426b63f2a..423b99d972 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 a0dc4a4f3d..459ce8cf92 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 57e0b75a4c..6a8429c1ec 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 e4dd895932..cf66a21b4d 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 d33427adcb..704a57d4e8 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 5438faa1eb..93c445fc29 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 658adfea02..c658471dc4 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 3ab549beac..b8138b42ab 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 30c44cf0d1..d29c62c865 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 d889960eee..15289f08c7 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 e71f09e956..5586e4d46a 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 96726440aa..857bffecf9 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 d417983a03..92fa6af1ec 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 ded200ef16..ae48a3ac66 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 b9de0b8929..98a45f3475 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 ef07743865..f2c433854f 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 2f96db0776..1ec3dbc432 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 2317d81513..dd7f16b4eb 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 85e7499a1e..385f65ca54 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 bf4207b1f0..62a9c87e53 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 c2f5dc91b8..a91a41ff87 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 cc020442fe..cca16a240b 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 e81beeba28..2269f7e065 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 c63bb166bf..c8e7f37213 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 daf04cf103..1835053be8 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 85de9ef0c3..594025669c 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 66044efb23..2f4d1f351d 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 0f529f60ce..14a7f7d727 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 32a7064209..f7a44f29ab 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 77b21092ec..59e6c58c51 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 617f0cedd5..756871cae8 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 d027fb7be1..74456141ad 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 4502798370..17430f1830 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 376f861615..8f9adfd83d 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 432d73548e..1da69c4f32 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 f380a3b654..aa5d02d128 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 814fae7c91..67a2f80fd1 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 6cd55d5897..410129d326 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 ca1e986741..fd62d069f6 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 da0daf01af..b44baae8a8 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 ddaff2f01b..47dc1d62bf 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 4612d6fea0..130adb11af 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 5f278d8008..9fafb3b912 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 73a447ebd4..45fb0f2471 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 0a74626fc4..141a6a1941 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 760762e2bf..109c4dae5a 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 f59114cba8..33735543dc 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 8f93b4f497..c67d9ffdd5 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 7ed21fb002..447b03a4c4 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 e318171fe7..5bfc3c1685 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 91c0d1f88b..9fd6800df5 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 e495372145..417a425427 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 434ffe7fb3..d7a3ef1038 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 5a8c319b65..8778703ae4 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 f60d02ef09..f01ea3bc00 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 3e66b660cf..470b699dd2 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 db6965b105..52adf70f5b 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 fea652f765..2e2007c9ff 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 133edaf130..291f3abc21 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 47fd2d9e8d..8c0f827e9d 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 b5baf2cc33..82158f2233 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 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 1172/1212] 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 faa1b927d7..7792c1feda 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 b122a1aabb..762c381043 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 6f86c485aa..16263cd27c 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 4bd9416580..e256c1589b 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 e5e8937b49..8c14e1730e 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 3c56b110b0..9febb975b8 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 41762a92db..32e40394a1 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 de9fce157a..625d75eaa8 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 36739b9507..cb6db3a203 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 09a250de79..2da2ecc141 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 27edb0c552..8bd16ce09d 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 9284b359bc..8df00339cf 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 ddad95bbbf..199432503f 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 82ab8e83b9..b26e83ce44 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 8d9cf9f82a..a9cd31387f 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 9a6d9a67d9..7de70d5b51 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 cfeedd4078..b27e4fd3fb 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 d26adbe71c..181a17a9a9 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 c093639deb..f739bea83e 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 5b24ca30b5..2184a0f6db 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 4939dc9978..eb8f96f9c7 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 efdb26599f..d03fd78e18 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 d843b7d0d8..66d4ca729c 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 1173/1212] 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 7792c1feda..d133fc8654 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 a43ddf67cc..d88fc22d35 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 762c381043..50a6c762e7 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 16263cd27c..8d32ee39a9 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 e256c1589b..34b5400c1d 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 8c14e1730e..7bc9e69b04 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 9febb975b8..de4186fb50 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 32e40394a1..ffbe2780e1 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 625d75eaa8..98c2bb56a5 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 cb6db3a203..d2926a448a 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 2da2ecc141..81712cc6b1 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 8bd16ce09d..27143e499b 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 8df00339cf..be27a741e9 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 199432503f..cd78550485 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 b26e83ce44..dbe836241b 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 a9cd31387f..636019fb18 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 7de70d5b51..b207f9a996 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 b27e4fd3fb..480cf0de7b 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 181a17a9a9..2cb222390c 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 f739bea83e..0486e75ae9 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 2184a0f6db..80d124f911 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 eb8f96f9c7..921c2aa9bf 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 d03fd78e18..aa56f166aa 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 66d4ca729c..b1a400565d 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 1174/1212] 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 d133fc8654..8195a90329 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 50a6c762e7..4fb9ca3aac 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 8d32ee39a9..f89a9e7d94 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 34b5400c1d..05d53f12ce 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 c2368b92a6..a4d5256bf6 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 7bc9e69b04..bc94ad8fee 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 de4186fb50..b9675c6db0 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 ffbe2780e1..5dea528d0b 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 98c2bb56a5..cc925a38fb 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 d2926a448a..1be75b3147 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 81712cc6b1..00375c03ca 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 27143e499b..46677faca1 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 be27a741e9..cc47a106ce 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 cd78550485..56140fe8e0 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 dbe836241b..f44a9aa8f0 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 b207f9a996..3617dad801 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 0486e75ae9..1b2d626c7b 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 80d124f911..d1d785f68d 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 aa56f166aa..478d4e26f5 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 1175/1212] 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 8195a90329..fd2c623dd4 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 d88fc22d35..8af88f3464 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 4fb9ca3aac..bd53c6d983 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 f89a9e7d94..25f5455582 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 05d53f12ce..44d681044b 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 a4d5256bf6..f12d12d14d 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 bc94ad8fee..665726d4c0 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 b9675c6db0..6719229f6e 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 5dea528d0b..88f7498add 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 cc925a38fb..29a2effd88 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 1be75b3147..8920a1c75f 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 00375c03ca..6dbf392b6f 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 46677faca1..a2b7b04276 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 cc47a106ce..d61bb9d910 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 56140fe8e0..438291e981 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 f44a9aa8f0..0fb3674eb2 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 636019fb18..9885b8a0b1 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 3617dad801..b2ff8c3044 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 480cf0de7b..a415df2551 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 2cb222390c..3cbf3814c9 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 1b2d626c7b..3b33248c16 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 d1d785f68d..4e2b58d981 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 921c2aa9bf..27d130d222 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 478d4e26f5..464373f145 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 b1a400565d..9032db0796 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 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 1176/1212] 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 476dd46228..7205c45ac0 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 ff081cdf34..3ed6aa213b 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 72031e762a..5a2c8b82c6 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 8412aaff02..d06b72efe2 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 5b2ddea861..c40d0161df 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 137e67e933..d3e889d0ef 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 1321f85ca9..c4f985c864 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 6b67c1f933..f483336182 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 3b367a25ba..6954b6bd4e 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 0bafc693b2..55ddccc19b 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 0240cca6d4..817b3296f4 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 48dad9d850..348cfbc15c 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 8860220e66..7fe9c7fc72 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 b362cad13e..695283a829 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 1cf7c3f939..634d19c64d 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 79660264d0..ea61c2b994 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 b7a014e42c..38563bc9ea 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 1177/1212] 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 7db2a0789f..b887f887dd 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 8ab3ce78de..d391cb4cec 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 7205c45ac0..eaac6df6c7 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 c21375885e..c602b969a4 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 3ed6aa213b..ac228a5eff 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 5a2c8b82c6..9b6bc30afe 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 d06b72efe2..d87b78d38a 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 c40d0161df..fc132c7070 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 d3e889d0ef..588566439a 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 59ee0bf0a9..dfd1e05581 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 95d86859dc..1b2fb857e7 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 c4f985c864..29d1a4e99d 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 f483336182..2563220a7f 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 6954b6bd4e..f550d5e45e 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 40b1afaa4e..fb564ba7d5 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 55ddccc19b..385dfe0d34 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 817b3296f4..59a0101902 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 348cfbc15c..930165606e 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 7fe9c7fc72..562f7791ed 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 695283a829..7e52f9f01a 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 634d19c64d..f359bc0926 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 ea61c2b994..08eed488b8 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 38563bc9ea..e33bac443c 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 1178/1212] 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 b887f887dd..6672028e0c 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 d391cb4cec..d2b3d54a2d 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 113bf49c70..623d6ac1c2 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 39fdf0029a..e9ec12edaa 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 c602b969a4..7209a54325 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 ac228a5eff..76a5a20823 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 fc132c7070..6d8e73d942 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 588566439a..c27eaf12be 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 8b1b715cb0..926c02efbc 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 1b2fb857e7..7511bd218a 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 2563220a7f..7f2c2f1387 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 f550d5e45e..2e1062c399 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 fb564ba7d5..6e0cbaab44 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 930165606e..6d2a1a70dd 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 562f7791ed..21e3b41693 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 7e52f9f01a..e500613b2c 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 f359bc0926..42a2a207ce 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 08eed488b8..6aa45f9c90 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 1179/1212] 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 6672028e0c..6d038a0270 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 d2b3d54a2d..d552a51215 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 623d6ac1c2..87adbc9051 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 eaac6df6c7..4d231d20a9 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 e9ec12edaa..d080e7a213 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 7209a54325..0490d7807c 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 76a5a20823..3bfc8a90ae 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 9b6bc30afe..a8b2f3d650 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 d87b78d38a..36a2376616 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 6d8e73d942..3019c67c1c 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 c27eaf12be..a0b44f3827 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 926c02efbc..b1caf1ca2d 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 dfd1e05581..65eeed13bd 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 7511bd218a..c876015451 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 29d1a4e99d..86f7e5ce73 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 7f2c2f1387..180afef6ea 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 2e1062c399..6df11d9414 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 6e0cbaab44..66fd999f7a 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 385dfe0d34..2bfd272ae2 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 59a0101902..892e345c5c 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 6d2a1a70dd..b878410fa1 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 e500613b2c..ef72d45e28 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 42a2a207ce..22aa1b5240 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 6aa45f9c90..8300ece356 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 e33bac443c..f06cf3b7fe 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 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 1180/1212] 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 05fbacbc02..48049558c6 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 658cfdad71..2417ad92e7 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 750e6301a9..fae1128437 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 bf606fcf34..c57a1f3a43 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 1181/1212] 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 48049558c6..d406921ec9 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 2417ad92e7..238e11d971 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 fae1128437..0e585769a5 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 c57a1f3a43..fdc629b0e2 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 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 1182/1212] 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 55418b0ad2..1d39021b00 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 0c80a6f068..3dc9149a34 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 87dac808b6..9a686228d9 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 aeaaad8adc..3bbde03daf 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 82d45dd775..742895fddb 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 61bf1a4ace..96bdf20147 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 188c2ee2e7..77b7351a95 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 c9c6b7ad6f..c3293873c8 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 9ddb84d87b..c622fb7cba 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 571445fb63..36295f2490 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 3d89e65caa..290a8c64bd 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 cdbce0d93f..f85edc9742 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 5c15bfbf42..42c44c2c9e 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 5a40fed9d7..d110402b8a 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 236d8685be..0bffc074e8 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 1183/1212] 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 1d39021b00..8dfe11ae63 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 9a686228d9..7ca544e88b 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 3bbde03daf..4f2d069a7c 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 742895fddb..08a4ff83ac 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 96bdf20147..91400665f6 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 77b7351a95..6463db7893 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 c3293873c8..9165a4f7b2 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 c622fb7cba..68fa48a070 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 36295f2490..743ae0d823 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 290a8c64bd..fe9bfbf45f 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 f85edc9742..2876650091 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 42c44c2c9e..1564dabc49 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 d110402b8a..9910375760 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 1184/1212] 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 3140f55a23..eed56b56a8 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 a8c934d69a..b4453ea4c3 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 926b55a676..7e653ed687 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 c3549dc46d..008da716a8 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 b013580668..1efa45e48e 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 b640ef4a01..5a0c689bf8 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 15c3f8b0ea..49025c6f19 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 82d0b04f29..83b9c98068 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 efa92f63c9..1fd02ee31e 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 df42079389..f398794448 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 293ce1aaab..9073cde5a8 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 f38c917907..b1ba0909d0 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 6a466cdf6a..2dc760cb0e 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 62770f9602..cc224302cf 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 ba0897b0d1..ad73979605 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 fafd439fa4..ff0a83a399 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 99a5290a5f..6c9f435c92 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 429fa87ea1..b4cac8973f 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 5a863c1b73..96e1413bcc 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 534c621993..0809685065 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 1185/1212] 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 eed56b56a8..7452dc6319 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 b4453ea4c3..2a75b2fe7a 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 03a7ae6bf2..b4fc45f5eb 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 7e653ed687..2806335ae6 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 008da716a8..fcaab3f1e2 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 1efa45e48e..db2c66c0d5 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 5a0c689bf8..14f992ad73 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 49025c6f19..e663e146ba 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 83b9c98068..1fd2bd3933 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 1fd02ee31e..5af41285bd 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 f398794448..9c70e234df 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 9073cde5a8..332bc762dd 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 b1ba0909d0..2a13bf39c5 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 2dc760cb0e..85220ac36f 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 cc224302cf..8a3e8e78d9 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 ad73979605..ddefd79b0f 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 ff0a83a399..0d1a2204ad 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 6c9f435c92..5c1455ab07 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 b4cac8973f..6e21f7d0dc 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 96e1413bcc..c1de5fa31b 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 0809685065..63106491a7 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 e33c5a9552..4a8aca5246 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 1186/1212] 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 7452dc6319..2a666957af 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 2a75b2fe7a..b735900309 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 b4fc45f5eb..66e1c979cb 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 2806335ae6..c729dec5b6 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 fcaab3f1e2..a66fe52c51 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 db2c66c0d5..24d47588a1 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 14f992ad73..a5a05f1c14 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 e663e146ba..1b88c544ed 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 1fd2bd3933..61036f4a2f 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 5af41285bd..edcc728469 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 9c70e234df..038fc55863 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 332bc762dd..90a890f605 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 2a13bf39c5..b88e10482a 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 85220ac36f..4727177cc8 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 8a3e8e78d9..c21aa8ba3d 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 ddefd79b0f..2413b20028 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 0d1a2204ad..291f6a75a3 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 5c1455ab07..eaf3cff334 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 6e21f7d0dc..60d1ee73ae 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 c1de5fa31b..c56b011f50 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 63106491a7..3b5c2bed46 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 4a8aca5246..c2a60c82c6 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 1187/1212] 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 2a666957af..beb1635390 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 b735900309..6984e65b41 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 66e1c979cb..ba6d27d475 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 c729dec5b6..c11247bd75 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 a66fe52c51..91def172aa 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 24d47588a1..a17c5de2ad 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 a5a05f1c14..4eeec6e77a 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 1b88c544ed..3125f5102b 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 61036f4a2f..0f2118ff29 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 edcc728469..4fbbf13bcc 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 038fc55863..c7a99b6794 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 90a890f605..c2bc309d83 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 b88e10482a..55899400da 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 4727177cc8..ef7c77075c 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 c21aa8ba3d..5c0d2337ce 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 2413b20028..9f68e28261 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 291f6a75a3..8b391baaa3 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 eaf3cff334..adabdd70a8 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 60d1ee73ae..5f7089c236 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 c56b011f50..a759aa5196 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 c2a60c82c6..619d63d8c4 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 1188/1212] 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 37ebee5979..24b6a8c927 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 91d6fe19fa..6ec436875f 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 1189/1212] 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 24b6a8c927..7101967bd2 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 6ec436875f..8c68550f07 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 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 1190/1212] 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 1e8e60e233..b96797f41f 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 6b64d52ba5..83aa82101f 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 cc1c8e9494..da4a5f0259 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 08850d7647..5a653696ce 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 765ffaba7d..4a5d32492a 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 0e37e78340..617f7bc801 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 93734f5356..791dca1d75 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 f6d00ce5b5..78a985a4c7 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 a5269df8cb..b6bf105936 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 83bb2f1f57..105c1bad50 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 0997247f83..efd84ad276 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 9414508043..259e19ea59 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 cff4aef538..886e7579f5 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 febe7f24c8..7f6739f358 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 a5cceba3ae..881ec6e458 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 e1d639ffdf..8d8ee7ae9e 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 e7ac58ef5a..2d0e2b2b8e 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 0b25340147..a9cb848143 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 c44ff86dbb..764f2d72f7 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 a8b82581e8..9c1052a9bd 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 db69f33c9f..f93d675198 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 f8befff1ee..55e73a6493 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 f6e3c1e6f5..1936e4201b 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 688823ae54..9919fec7ce 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 7fa8d57c9b..bbf6547442 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 1191/1212] 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 b96797f41f..4109c387e0 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 83aa82101f..51e06ab18c 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 da4a5f0259..1bc89ef44e 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 5a653696ce..be918132f7 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 4a5d32492a..ccbdafdd12 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 617f7bc801..a94755dd97 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 791dca1d75..892cd7a855 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 78a985a4c7..d31cf00eec 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 b6bf105936..138dd245bb 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 105c1bad50..2c53ed6f7d 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 efd84ad276..5d09b2da00 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 259e19ea59..c7304738f2 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 886e7579f5..89a896e7b4 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 7f6739f358..eb021823c2 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 881ec6e458..9fa794e8ff 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 8d8ee7ae9e..8328124370 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 2d0e2b2b8e..43c3b8d29f 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 a9cb848143..e2e4820ef1 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 764f2d72f7..38aafbb8c4 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 9c1052a9bd..9805fb7257 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 f93d675198..feac08b5fe 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 55e73a6493..a10cb7d413 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 1936e4201b..bbc7a22de7 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 9919fec7ce..c13088fb14 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 bbf6547442..5b9a680a0b 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 1192/1212] 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 4109c387e0..63ae44b1da 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 51e06ab18c..7d5e0ae06c 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 1bc89ef44e..3feffc1249 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 be918132f7..46067a15fc 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 ccbdafdd12..5b30a1aa0a 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 a94755dd97..4482375489 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 c8ae01c2c0..64bed60ba9 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 892cd7a855..f4124ec3b2 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 2c53ed6f7d..e68947b151 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 5d09b2da00..86834667cd 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 c7304738f2..5e18b92d1f 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 89a896e7b4..096cc46923 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 eb021823c2..4873bda099 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 9fa794e8ff..6641f04745 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 8328124370..6671fbd1b8 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 43c3b8d29f..927f23387d 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 e2e4820ef1..088e90a558 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 38aafbb8c4..3e47e7fab4 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 9805fb7257..56f8a2d465 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 feac08b5fe..2ec516b957 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 a10cb7d413..5170b1a656 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 bbc7a22de7..ccfe3ba841 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 c13088fb14..778d244d79 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 5b9a680a0b..9226bdf4e0 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 1193/1212] 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 63ae44b1da..ab82d98def 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 7d5e0ae06c..6892019ad3 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 3feffc1249..52a87747fd 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 5b30a1aa0a..f683b8433a 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 4482375489..07706df7ad 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 64bed60ba9..472b925a5e 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 f4124ec3b2..0e0d7839fd 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 d31cf00eec..beafafe99d 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 138dd245bb..01ca898623 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 e68947b151..6ad8e6659e 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 86834667cd..00654e73f7 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 5e18b92d1f..a1844454df 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 096cc46923..5b624a0afe 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 4873bda099..5988f1aa52 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 6641f04745..8e0b8797e1 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 6671fbd1b8..6c5c901d40 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 927f23387d..8af20a38e2 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 088e90a558..1437c8068c 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 3e47e7fab4..d906f0cd87 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 56f8a2d465..289c373362 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 2ec516b957..07589c43d2 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 5170b1a656..3cdd52ad9a 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 ccfe3ba841..e7e92cd8d3 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 778d244d79..f45b911703 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 9226bdf4e0..bf32485d81 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 1194/1212] 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 86f7e5ce73..266c4e4c71 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 1195/1212] 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 266c4e4c71..ddb31bc681 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 2050d226bcf920db1de13a11dc57a9012470d89a Mon Sep 17 00:00:00 2001 From: Tyler Whitney Date: Sat, 9 Aug 2025 14:15:21 -0700 Subject: [PATCH 1196/1212] 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 8c75157b5c..e36658b739 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 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 1197/1212] 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 19767ebd32..f6b11d3d2e 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 1198/1212] 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 f6b11d3d2e..5c47728979 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 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 1199/1212] 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 830e14b086..184908ef9f 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 cd9019d1f1..e24b4b609d 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 6f59ffd243..7f753b9204 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 cbc3d828a3..c5cb3b1181 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 ef990e16bb..20d461bc7c 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 35ffc5aecf..23f6a183d7 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 9843c07518..1451896ed8 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 72a6e03a16..96ce0b9966 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 4f67e28e54..c465b030a0 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 5a016f5608..64cdebd628 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 ca6749b8ab..91aca931e2 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 5cc79ab4b5..d0a4b21be8 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 a9c91358b3..c906fc8ca2 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 ef52fb5415..2f289eb5a3 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 cf7c548723..a646594517 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 8276f6de60..1066399f1c 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 d64d33f200..9c18838cbd 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 8b2b019ed4..9b7d863271 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 daf295ebe7..5d197ced09 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 1200/1212] 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 184908ef9f..27ca8b1ad4 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 8754ce80f9..c0e3ad5038 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 e24b4b609d..2c8d9745f1 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 7f753b9204..66db6d4d0a 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 c5cb3b1181..395e5bf21b 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 20d461bc7c..eebec69cde 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 23f6a183d7..cc236ebc24 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 1451896ed8..7e0760e031 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 96ce0b9966..5e26f0053a 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 c465b030a0..4dd37d8ea9 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 64cdebd628..4ce78cd3f7 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 91aca931e2..ca958d5229 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 d0a4b21be8..dc55a9ee9e 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 c906fc8ca2..33f5f906d8 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 2f289eb5a3..7b7b120976 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 a646594517..e80366db2f 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 1066399f1c..be2f51da20 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 9c18838cbd..9ea3e8e09b 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 9b7d863271..584966be5d 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 5d197ced09..c7adbe2808 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 1201/1212] 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 27ca8b1ad4..db0c349c4c 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 c0e3ad5038..2948a59c08 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 2c8d9745f1..ecd9bae656 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 66db6d4d0a..e245421fe5 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 395e5bf21b..a169793ab6 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 eebec69cde..b601657146 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 cc236ebc24..54cc4adfc1 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 7e0760e031..6d90acaad6 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 5e26f0053a..5fe8229786 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 4dd37d8ea9..300cdf6c83 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 4ce78cd3f7..968c628c7a 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 ca958d5229..7c352d250d 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 dc55a9ee9e..f99d1ac39e 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 33f5f906d8..0f6864ed9c 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 7b7b120976..619083a1f1 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 e80366db2f..102e9ef052 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 be2f51da20..3a36d706f3 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 9ea3e8e09b..953ff6ac40 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 584966be5d..399a2bf04f 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 c7adbe2808..2bb0c9c44f 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 1202/1212] 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 db0c349c4c..65e8f9cd82 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 2948a59c08..e6abf61a31 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 ecd9bae656..744d28b348 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 e245421fe5..b57685ca12 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 a169793ab6..57be2b65cd 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 b601657146..4da397545b 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 54cc4adfc1..5a9bcff846 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 6d90acaad6..4dc33cbf6a 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 5fe8229786..ad39fe669a 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 300cdf6c83..ca7e3d3f78 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 968c628c7a..c144f99147 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 7c352d250d..a833519ab1 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 f99d1ac39e..76419763f3 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 0f6864ed9c..4fd7152b8f 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 619083a1f1..5f8148aa80 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 102e9ef052..458980db4a 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 3a36d706f3..853563e4b6 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 953ff6ac40..c4a24a6afb 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 399a2bf04f..a92c60fda2 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 2bb0c9c44f..96dde7dad6 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 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 1203/1212] 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 f80f790e6b..e20123508d 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 0a6ae8b11e..d8d09f1ec6 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 ffdbc286a2..594dd01637 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 6e7e9dbe75..e69f0fbcf7 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 b40ab656fc..68161f69e8 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 edd640d730..f22bddca96 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 f051c32753..5812da5a58 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 f32ad44b44..55e237683c 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 73d326827f..613e6e3d74 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 4b97bea6db..2c35ac62ec 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 345783c0e1..582fbd665b 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 98298a38e2..ede887604c 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 58c67af4f7..4cda0e3dd3 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 4c45c0a6ea..8da9d17dda 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 1711df90e8..91ce5a45bd 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 96fbcf90c5..f209848268 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 4def91d259..663e5dca04 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 453ced5d66..8e0d41e10a 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 2f1b223aa9..faf02207e2 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 05af0ad696..ab6612626f 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 62e82fd913..be90bee5ab 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 e45fb32a38..790b564a83 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 a487c4e889..758f0fd8ad 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 261faca8ab..c970a90b76 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 1204/1212] 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 e20123508d..af2fef6438 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 3fc2bcb631..4628a74f9f 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 d8d09f1ec6..0b2121841b 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 594dd01637..ac97c365ed 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 e69f0fbcf7..8213335625 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 68161f69e8..fadee495aa 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 f22bddca96..a63ec87155 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 5812da5a58..f32b69c58e 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 55e237683c..47c3ef98d1 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 613e6e3d74..98b8c04eb8 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 2c35ac62ec..fbf417ec4c 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 582fbd665b..4af142f2f4 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 ede887604c..628f915439 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 4cda0e3dd3..9efb6ceb0d 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 8da9d17dda..15a9db450f 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 91ce5a45bd..fc70d1b34c 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 f209848268..89e1cdb147 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 663e5dca04..2bbc916577 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 8e0d41e10a..ee62fb4652 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 faf02207e2..388a253eb4 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 ab6612626f..4cb0758565 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 be90bee5ab..0a53403737 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 790b564a83..7591100ec6 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 758f0fd8ad..fabcbfa4ea 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 c970a90b76..08162d54df 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 1205/1212] 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 af2fef6438..cdc579a65f 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 4628a74f9f..c797df5068 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 0b2121841b..17008c480f 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 ac97c365ed..3c845a4550 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 8213335625..cf4730e1d1 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 fadee495aa..3a21f15cdd 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 a63ec87155..db00cabe18 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 f32b69c58e..d9d08cf5c5 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 47c3ef98d1..13b86851c1 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 fbf417ec4c..dc7ffe0c88 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 4af142f2f4..91cb6118b6 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 628f915439..d011066886 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 9efb6ceb0d..1529a7c765 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 15a9db450f..3cfda7fc45 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 fc70d1b34c..342153306c 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 89e1cdb147..214d73195a 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 2bbc916577..2c69155da2 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 ee62fb4652..bd0a359033 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 388a253eb4..a9bbb5a9d8 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 4cb0758565..adc2cec0ed 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 0a53403737..2b842a0fb0 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 7591100ec6..80e7a7bc06 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 fabcbfa4ea..71f1d4cfed 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 1206/1212] 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 cdc579a65f..d3c41e7bda 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 c797df5068..7add75b031 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 17008c480f..46fe4603c2 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 3c845a4550..1b8c1d6bf6 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 cf4730e1d1..17b42bf6a5 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 3a21f15cdd..4a112bc393 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 db00cabe18..d04287ade5 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 d9d08cf5c5..c7034d1663 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 13b86851c1..5cdd85744c 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 98b8c04eb8..996bf27c05 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 91cb6118b6..a6d8238079 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 d011066886..4c8ad60d6f 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 1529a7c765..e002f487f9 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 3cfda7fc45..9c801ba167 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 342153306c..1c48adb2f4 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 214d73195a..e2b9d5fff2 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 2c69155da2..684c143ea6 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 bd0a359033..b49fc9e1f2 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 a9bbb5a9d8..9183287145 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 adc2cec0ed..4b253247f2 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 2b842a0fb0..fcde4b999d 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 80e7a7bc06..3977e7f2c5 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 71f1d4cfed..ebbbfbe209 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 08162d54df..a032ea4e1b 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 1207/1212] 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 1621b18044..1dd4d169a4 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 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 1208/1212] 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 fcde4b999d..e101a28857 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 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 1209/1212] 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 45784ec91f..1b9d0e238d 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 6e0833a07e..d5eb84b0f5 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 484d1908b7..f67e522223 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 bdd1b4b3d2..a37e7a959b 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 97ed907a34..8ce344ccd8 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 529c6f15eb..cddce97fed 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 16cf37d4d9..ae1494b403 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 38fcc87e79..5727f9ee37 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 d95b81771a..95225fd76a 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 b496d9de75..18abffb5de 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 469a7facd9..69e3890ef3 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 83af91881d..60d5d48ec7 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 631119862e..e2d392ca6a 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 b66045af5f..401f545625 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 1593deabd6..8b13232259 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 39b2968286..81b15ceb6f 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 01c0b6c573..2d71495167 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 fc0b04c563..d6ea11e2f9 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 6163529aca..4e208a5fc5 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 79f823cb0e..fc575b588a 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 b5482c8358..5a67e8cb5a 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 0a9d138184..87a4c1537f 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 1b9cf5a105..ea08646bec 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 1210/1212] 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 e552d6a30e..e1d0795232 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 8f01f044f2..df402a7015 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 0f56baaed5..e34ddaab59 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 c2e2f9d98f..7426af0346 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 0c1deff9db..61d030c081 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 7bc387dcf5..c9027012f2 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 3defab99e3..02c71317a5 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 e65e5a00d0..3f8c51279b 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 98293ee2a4..55be6dfec9 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 b3e9699bb7..ced560abe3 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 a4eefa4180..a50befaede 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 aee174c784..d19042b921 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 eb82ea21e7..260ed1245f 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 1211/1212] 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 1dd4d169a4..23b40c4fd3 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 1212/1212] 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 52cd5d4fca..1724a0006e 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 485af60194..25fe25f0f2 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