Skip to content

Commit 785c2c1

Browse files
authored
Merge pull request #5835 from MicrosoftDocs/FromPublicMasterBranch
Confirm merge from FromPublicMasterBranch to main to sync with https://github.com/MicrosoftDocs/cpp-docs (branch main)
2 parents c4cd0a9 + 49abb91 commit 785c2c1

10 files changed

+31
-29
lines changed

docs/build/arm64-exception-handling.md

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -299,14 +299,20 @@ The unwind codes are encoded according to the table below. All unwind codes are
299299
| `save_fregp_x` | 1101101x'xxzzzzzz: save pair `d(8+#X)` at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 |
300300
| `save_freg` | 1101110x'xxzzzzzz: save reg `d(8+#X)` at `[sp+#Z*8]`, offset \<= 504 |
301301
| `save_freg_x` | 11011110'xxxzzzzz: save reg `d(8+#X)` at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -256 |
302+
| `alloc_z` | 11011111'zzzzzzzz: allocate stack with size `z * SVE-VL` |
302303
| `alloc_l` | 11100000'xxxxxxxx'xxxxxxxx'xxxxxxxx: allocate large stack with size \< 256M (2^24 * 16) |
303304
| `set_fp` | 11100001: set up `x29` with `mov x29,sp` |
304305
| `add_fp` | 11100010'xxxxxxxx: set up `x29` with `add x29,sp,#x*8` |
305306
| `nop` | 11100011: no unwind operation is required. |
306307
| `end` | 11100100: end of unwind code. Implies `ret` in epilog. |
307308
| `end_c` | 11100101: end of unwind code in current chained scope. |
308-
| `save_next` | 11100110: save next non-volatile Int or FP register pair. |
309-
| | 11100111: reserved |
309+
| `save_next` | 11100110: save next register pair. |
310+
| `save_any_xreg` | 11100111'0pxrrrrr'00oooooo: save register(s)<ul><li>`p`: 0/1 => single `X(#r)` vs pair `X(#r)` + `X(#r+1)`</li><li>`x`: 0/1 => positive vs negative pre-indexed stack offset</li><li>`o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8</li></ul>(Windows >= 11 required) |
311+
| `save_any_dreg` | 11100111'0pxrrrrr'01oooooo: save register(s)<ul><li>`p`: 0/1 => single `D(#r)` vs pair `D(#r)` + `D(#r+1)`</li><li>`x`: 0/1 => positive vs negative pre-indexed stack offset</li><li>`o`: offset = `o` * 16, if x=1 or p=1, else `o` * 8</li></ul>(Windows >= 11 required) |
312+
| `save_any_qreg` | 11100111'0pxrrrrr'10oooooo: save register(s)<ul><li>`p`: 0/1 => single `Q(#r)` vs pair `Q(#r)` + `Q(#r+1)`</li><li>`x`: 0/1 => positive vs negative pre-indexed stack offset</li><li>`o`: offset = `o` * 16</li></ul>(Windows >= 11 required) |
313+
| `save_zreg` | 11100111'0oo0rrrr'11oooooo: save reg `Z(#r+8)` at `[sp + #o * VL]`, (`Z8` through `Z23`)
314+
| `save_preg` | 11100111'0oo1rrrr'11oooooo: save reg `P(#r+8)` at `[sp + #o * (VL / 8)]`, (`P4` through `P15`; `r` values `[0, 3]` are reserved)
315+
| | 11100111'1yyyyyyy': reserved |
310316
| | 11101xxx: reserved for custom stack cases below only generated for asm routines |
311317
| | 11101000: Custom stack for `MSFT_OP_TRAP_FRAME` |
312318
| | 11101001: Custom stack for `MSFT_OP_MACHINE_FRAME` |
@@ -330,7 +336,7 @@ In instructions with large values covering multiple bytes, the most significant
330336

331337
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).
332338

333-
`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.
339+
`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.
334340

335341
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.
336342

docs/error-messages/compiler-errors-1/compiler-error-c2283.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
---
2-
description: "Learn more about: Compiler Error C2283"
32
title: "Compiler Error C2283"
3+
description: "Learn more about: Compiler Error C2283"
44
ms.date: "11/04/2016"
55
f1_keywords: ["C2283"]
66
helpviewer_keywords: ["C2283"]
7-
ms.assetid: 8a5b3175-b480-4598-a1f7-0b50504c5caa
87
---
98
# Compiler Error C2283
109

11-
'identifier' : pure specifier or abstract override specifier not allowed on unnamed struct
10+
> '*identifier*': pure specifier or abstract override specifier not allowed on unnamed struct
1211
1312
A member function of an unnamed class or structure is declared with a pure specifier, which is not permitted.
1413

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
---
2-
description: "Learn more about: Compiler Error C2466"
32
title: "Compiler Error C2466"
4-
ms.date: "11/04/2016"
3+
description: "Learn more about: Compiler Error C2466"
4+
ms.date: "03/19/2025"
55
f1_keywords: ["C2466"]
66
helpviewer_keywords: ["C2466"]
7-
ms.assetid: 75b251d1-7d0b-4a86-afca-26adedf74486
87
---
98
# Compiler Error C2466
109

11-
cannot allocate an array of constant size 0
10+
> cannot allocate an array of constant size 0
1211
1312
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)).
1413

@@ -17,7 +16,6 @@ The following sample generates C2466:
1716
```cpp
1817
// C2466.cpp
1918
// compile with: /c
20-
int i[0]; // C2466
21-
int j[1]; // OK
22-
char *p;
19+
int arr1[0]; // C2466
20+
int arr2[1]; // OK
2321
```

docs/error-messages/compiler-errors-1/compiler-errors-c2200-through-c2299.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
description: "Learn more about: Compiler errors C2200 through C2299"
32
title: "Compiler errors C2200 through C2299"
3+
description: "Learn more about: Compiler errors C2200 through C2299"
44
ms.date: "04/21/2019"
55
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"]
66
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
9898
|[Compiler error C2280](compiler-error-c2280.md)|'*class*::*function*': attempting to reference a deleted function|
9999
|Compiler error C2281|'*class*::*function*': a function can only be deleted on the first declaration|
100100
|Compiler error C2282|'*function1*' cannot override '*function2*'|
101-
|[Compiler error C2283](compiler-error-c2283.md)|'*identifer*': pure specifier or abstract override specifier not allowed on unnamed class/struct|
101+
|[Compiler error C2283](compiler-error-c2283.md)|'*identifier*': pure specifier or abstract override specifier not allowed on unnamed struct|
102102
|Compiler error C2284|'*function*': illegal argument to intrinsic function, parameter *number*|
103103
|[Compiler error C2285](compiler-error-c2285.md)|pointers to members representation has already been determined - pragma ignored|
104104
|[Compiler error C2286](compiler-error-c2286.md)|pointers to members of '*identifier*' representation is already set to *inheritance* - declaration ignored|

docs/error-messages/compiler-warnings/compiler-warning-level-1-c4251.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
---
2-
description: "Learn more about: Compiler Warning (level 2) C4251"
32
title: "Compiler Warning (level 2) C4251"
3+
description: "Learn more about: Compiler Warning (level 2) C4251"
44
ms.date: 12/01/2023
55
f1_keywords: ["C4251"]
66
helpviewer_keywords: ["C4251"]
77
---
88
# Compiler Warning (level 2) C4251
99

10-
> '*type*' : class '*type1*' needs to have dll-interface to be used by clients of class '*type2*'
10+
> '*type*': '*type1*' needs to have dll-interface to be used by clients of '*type2*'
1111
1212
## Remarks
1313

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,13 @@
11
---
2-
description: "Learn more about: Compiler Warning (level 2) C4099"
32
title: "Compiler Warning (level 2) C4099"
3+
description: "Learn more about: Compiler Warning (level 2) C4099"
44
ms.date: "11/04/2016"
55
f1_keywords: ["C4099"]
66
helpviewer_keywords: ["C4099"]
7-
ms.assetid: 00bb803d-cae7-4ab8-8969-b46f54139ac8
87
---
98
# Compiler Warning (level 2) C4099
109

11-
'identifier' : type name first seen using 'objecttype1' now seen using 'objecttype2'
10+
> '*identifier*': type name first seen using '*object_type1*' now seen using '*object_type2*'
1211
1312
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.
1413

@@ -20,5 +19,5 @@ The following sample generates C4099.
2019
// C4099.cpp
2120
// compile with: /W2 /c
2221
struct A;
23-
class A {}; // C4099, use different identifer or use same object type
22+
class A {}; // C4099, use different identifier or use same object type
2423
```

docs/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
---
2-
description: "Table of Microsoft C/C++ compiler (MSVC) warning messages C4000 through C4199"
32
title: "Microsoft C/C++ compiler (MSVC) warnings C4000 through C4199"
3+
description: "Table of Microsoft C/C++ compiler (MSVC) warning messages C4000 through C4199"
44
ms.date: "04/21/2019"
55
f1_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"]
66
helpviewer_keywords: ["C4023", "C4035", "C4051", "C4060", "C4063", "C4064", "C4065", "C4069", "C4123", "C4137", "C4181", "C4188", "C4193", "C4194", "C4195", "C4196", "C4199"]

docs/error-messages/compiler-warnings/compiler-warnings-c4200-through-c4399.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ The articles in this section describe Microsoft C/C++ compiler warning messages
5555
|[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|
5656
|[Compiler warning (level 4) C4245](compiler-warning-level-4-c4245.md)|'*conversion_type*': conversion from '*type1*' to '*type2*', signed/unsigned mismatch|
5757
|[Compiler warning (level 2) C4250](compiler-warning-level-2-c4250.md)|'*classname*': inherits '*base_classname*::*member*' via dominance|
58-
|[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*'|
58+
|[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*'|
5959
|[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|
6060
|[Compiler warning (level 4, off) C4255](compiler-warning-level-4-c4255.md)|'*function*': no function prototype given: converting '()' to '(void)'|
6161
|[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++|

docs/overview/cpp-conformance-improvements.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ To fix this warning, either use an equality operator, `value == 9`, if this is w
300300

301301
Visual Studio 2022 version 17.9 contains the following conformance improvements, bug fixes, and behavior changes in the Microsoft C/C++ compiler.
302302

303-
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).
303+
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).
304304

305305
### Application of `_Alignas` on a structured type in C
306306

@@ -389,7 +389,7 @@ The C compiler used to accept the `/FU` option, even though it hasn't support ma
389389

390390
The C++23 named modules `std` and `std.compat` are now available when compiling with `/std:c++20`.
391391

392-
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).
392+
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).
393393

394394
## <a name="improvements_177"></a> Conformance improvements in Visual Studio 2022 version 17.7
395395

@@ -405,7 +405,7 @@ The `<print>` library is now supported. See [P2093R14 Formatted output](https://
405405

406406
Implemented `views::cartesian_product`.
407407

408-
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).
408+
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).
409409

410410
### `using` conformance
411411

docs/overview/what-s-new-for-visual-cpp-in-visual-studio.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ A partial list of new features:
261261
| For more information about | See |
262262
|---|---|
263263
| 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/) |
264-
| 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) |
264+
| 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) |
265265
| New features in the Visual Studio 17.9 IDE |[Visual Studio 2022 version 17.9 Release Notes](/visualstudio/releases/2022/release-notes-v17.9) |
266266
| 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) |
267267
| 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:
294294
| For more information about | See |
295295
|---|---|
296296
| 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/) |
297-
| 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) |
297+
| 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) |
298298
| New features in the Visual Studio 17.8 IDE |[Visual Studio 2022 version 17.8 Release Notes](/visualstudio/releases/2022/release-notes-v17.8) |
299299
| 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) |
300300
| 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
554554

555555
### Standard Library improvements
556556

557-
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).
557+
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).
558558

559559
- 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`
560560
- Added `[[nodiscard]]` to the `stoi()` family of functions in `<string>` and to various functions in `<locale>` such as the `collate` member functions, `has_facet()`, and the `isalnum()` and `tolower()` families.

0 commit comments

Comments
 (0)