diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md
index 4b67a8a84a7..eb170880b5d 100644
--- a/docs/build/reference/compiler-options-listed-alphabetically.md
+++ b/docs/build/reference/compiler-options-listed-alphabetically.md
@@ -150,6 +150,7 @@ The following is a comprehensive alphabetical list of compiler options. For a ca
|[/Ze](za-ze-disable-language-extensions.md)|Deprecated. Enables language extensions.|
|[/Zf](zf.md)|Improves PDB generation time in parallel builds.|
|[/Zg](zg-generate-function-prototypes.md)|Removed in Visual Studio 2015. Generates function prototypes.|
+|[/ZH](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.|
|[/Zi](z7-zi-zi-debug-information-format.md)|Generates complete debugging information.|
|[/Zl](zl-omit-default-library-name.md)|Removes default library name from .obj file (x86 only).|
diff --git a/docs/build/reference/compiler-options-listed-by-category.md b/docs/build/reference/compiler-options-listed-by-category.md
index 7a1aac979e5..e6941a167e1 100644
--- a/docs/build/reference/compiler-options-listed-by-category.md
+++ b/docs/build/reference/compiler-options-listed-by-category.md
@@ -115,6 +115,7 @@ This article contains a categorical list of compiler options. For an alphabetica
|[/Zc](zc-conformance.md)|Specifies standard behavior under [/Ze](za-ze-disable-language-extensions.md).|
|[/Ze](za-ze-disable-language-extensions.md)|Deprecated. Enables C89 language extensions.|
|[/Zf](zf.md)|Improves PDB generation time in parallel builds.|
+|[/ZH](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/linker-options.md b/docs/build/reference/linker-options.md
index d8fec4af1c2..c36c31b4e87 100644
--- a/docs/build/reference/linker-options.md
+++ b/docs/build/reference/linker-options.md
@@ -1,11 +1,12 @@
---
-title: "MSVC Linker Options"
-ms.date: "08/20/2018"
+title: "MSVC Linker options"
+description: A list of the options supported by the Microsoft LINK linker.
+ms.date: "09/24/2019"
f1_keywords: ["link"]
helpviewer_keywords: ["linker [C++]", "linker [C++], options listed", "libraries [C++], linking to COFF", "LINK tool [C++], linker options"]
ms.assetid: c1d51b8a-bd23-416d-81e4-900e02b2c129
---
-# Linker Options
+# Linker options
LINK.exe links Common Object File Format (COFF) object files and libraries to create an executable (.exe) file or a dynamic-link library (DLL).
@@ -23,6 +24,8 @@ On the command line, linker options are not case-sensitive; for example, /base a
You can use the [comment](../../preprocessor/comment-c-cpp.md) pragma to specify some linker options.
+## Linker options listed alphabetically
+
|Option|Purpose|
|------------|-------------|
|[@](at-specify-a-linker-response-file.md)|Specifies a response file.|
@@ -73,6 +76,8 @@ You can use the [comment](../../preprocessor/comment-c-cpp.md) pragma to specify
|[/KEYFILE](keyfile-specify-key-or-key-pair-to-sign-an-assembly.md)|Specifies a key or key pair to sign an assembly.|
|[/LARGEADDRESSAWARE](largeaddressaware-handle-large-addresses.md)|Tells the compiler that the application supports addresses larger than two gigabytes|
|[/LIBPATH](libpath-additional-libpath.md)|Specifies a path to search before the environmental library path.|
+|[/LINKREPRO](linkrepro.md)|Specifies a path to generate link repro artifacts in.|
+|[/LINKREPROTARGET](linkreprotarget.md)|Generates a link repro only when producing the specified target.|
|[/LTCG](ltcg-link-time-code-generation.md)|Specifies link-time code generation.|
|[/MACHINE](machine-specify-target-platform.md)|Specifies the target platform.|
|[/MANIFEST](manifest-create-side-by-side-assembly-manifest.md)|Creates a side-by-side manifest file and optionally embeds it in the binary.|
@@ -125,5 +130,5 @@ For more information, see [Compiler-Controlled LINK Options](compiler-controlled
## See also
-[C/C++ Building Reference](c-cpp-building-reference.md)
+[C/C++ Building Reference](c-cpp-building-reference.md)\
[MSVC linker reference](linking.md)
diff --git a/docs/build/reference/linkrepro.md b/docs/build/reference/linkrepro.md
new file mode 100644
index 00000000000..9d00525a14d
--- /dev/null
+++ b/docs/build/reference/linkrepro.md
@@ -0,0 +1,47 @@
+---
+title: "/LINKREPRO (Link repro directory name)"
+description: Linker or library tool option to set the directory for a link repro.
+ms.date: "09/24/2019"
+f1_keywords: ["/LINKREPRO"]
+helpviewer_keywords: ["LINKREPRO linker option", "/LINKREPRO linker option", "-LINKREPRO linker option", "linker repro reporting"]
+---
+# /LINKREPRO (Link repro directory name)
+
+Tells the linker or library tool to generate a link repro in a specified directory.
+
+## Syntax
+
+> **/LINKREPRO:**_directory-name_
+
+### Arguments
+
+**/LINKREPRO:**_directory-name_\
+The user-specified directory to store the link repro in. Directory names that include spaces must be enclosed in double quotes.
+
+## Remarks
+
+The **/LINKREPRO** option is used to create a *link repro*. It's a set of build artifacts that allow Microsoft to reproduce a problem that occurs at link time, or during library operations. It's useful for problems such as a backend crash involving Link-Time Code Generation (LTCG), an LNK1000 linker error, or a linker crash. The tool produces a link repro when you specify the **/LINKREPRO** linker option, or when you set the `link_repro` environment variable in your command-line build environment. For more information, see the [Link repros](../../overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md#link-repros) section of [How to report a problem with the Microsoft C++ toolset](../../overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md).
+
+Both the **/LINKREPRO** linker option and the `link_repro` environment variable require you to specify an output directory for the link repro. On the command line or in the IDE, specify the directory by using a **/LINKREPRO:**_directory-name_ option. The _directory-name_ you specify may be an absolute or relative path, but the directory must exist. The command-line option overrides any directory value set in the `link_repro` environment variable.
+
+For information on how to limit link repro generation to a specific target file name, see the [/LINKREPROTARGET](linkreprotarget.md) option. This option can be used to specify a specific target to generate a link repro for. It's useful in complex builds that invoke the linker or library tool more than once.
+
+### 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 **Configuration Properties** > **Linker** > **Command Line** property page.
+
+1. Enter the **/LINKREPRO:**_directory-name_ option in the **Additional Options** box. The _directory-name_ value you specify must exist. Choose **OK** to apply the change.
+
+Once you've generated the link repro, open this property page again to remove the **/LINKREPRO** option from your builds.
+
+### To set this linker option programmatically
+
+- See .
+
+## See also
+
+[MSVC linker reference](linking.md)\
+[MSVC linker options](linker-options.md)\
+[/LINKREPROTARGET](linkreprotarget.md)
diff --git a/docs/build/reference/linkreprotarget.md b/docs/build/reference/linkreprotarget.md
new file mode 100644
index 00000000000..441cd08bf7a
--- /dev/null
+++ b/docs/build/reference/linkreprotarget.md
@@ -0,0 +1,47 @@
+---
+title: "/LINKREPROTARGET (Link repro file name)"
+description: Linker or library tool option to set a target file name for a link repro.
+ms.date: "09/24/2019"
+f1_keywords: ["/LINKREPROTARGET"]
+helpviewer_keywords: ["LINKREPROTARGET linker option", "/LINKREPROTARGET linker option", "-LINKREPROTARGET linker option", "linker repro reporting"]
+---
+# /LINKREPROTARGET (Link repro file name)
+
+Tells the linker or library tool to generate a link repro only when the target has the specified file name.
+
+## Syntax
+
+> **/LINKREPROTARGET:**_file-name_
+
+### Arguments
+
+**/LINKREPROTARGET:**_file-name_\
+The target file name to filter on. A link repro is only generated when the named file is the output target. File names that include spaces must be enclosed in double quotes. The file name should include the base name and the extension, but not the path.
+
+## Remarks
+
+The **/LINKREPROTARGET** option is used to specify a target file name to generate a *link repro* for. A link repro is a set of build artifacts that allow Microsoft to reproduce a problem that occurs at link time, or during library operations. The linker or library tool produces a link repro when you specify the [/LINKREPRO](linkrepro.md) option, or when you set the `link_repro` environment variable in your command-line build environment.
+
+The **/LINKREPROTARGET** option is useful in complex builds that invoke the linker or library tool more than once. It lets you specify a specific target for the link repro, such as *problem.dll*. It lets you generate the link repro only when the tool produces a specific file.
+
+For more information about how and when to create a link repro, see the [Link repros](../../overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md#link-repros) section of [How to report a problem with the Microsoft C++ toolset](../../overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md).
+
+The **/LINKREPRO** and [/OUT](out-output-file-name.md) options must be set for the **/LINKREPROTARGET** option to have any effect.
+
+### 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 **Configuration Properties** > **Linker** > **Command Line** property page.
+
+1. Enter the **/LINKREPROTARGET:**_file-name_ option in the **Additional Options** box. Choose **OK** to apply the change.
+
+### To set this linker option programmatically
+
+- See .
+
+## See also
+
+[MSVC linker reference](linking.md)\
+[MSVC linker options](linker-options.md)\
+[/LINKREPRO](linkrepro.md)
diff --git a/docs/build/reference/media/solution-explorer-filters.png b/docs/build/reference/media/solution-explorer-filters.png
new file mode 100644
index 00000000000..d35e98a1d14
Binary files /dev/null and b/docs/build/reference/media/solution-explorer-filters.png differ
diff --git a/docs/build/reference/overview-of-lib.md b/docs/build/reference/overview-of-lib.md
index 842443d46f6..edf4bda831c 100644
--- a/docs/build/reference/overview-of-lib.md
+++ b/docs/build/reference/overview-of-lib.md
@@ -1,13 +1,14 @@
---
title: "Overview of LIB"
-ms.date: "11/04/2016"
+description: Overview of the use and options of the library tool, lib.exe.
+ms.date: "09/25/2019"
f1_keywords: ["Lib"]
helpviewer_keywords: ["LIB [C++], modes"]
ms.assetid: e997d423-f574-434f-8b56-25585d137ee0
---
# Overview of LIB
-LIB creates standard libraries, import libraries, and export files you can use with [LINK](linker-options.md) when building a program. LIB runs from a command prompt.
+LIB (lib.exe) creates standard libraries, import libraries, and export files you can use with [LINK](linker-options.md) when building a program. LIB runs from a command prompt.
You can use LIB in the following modes:
@@ -19,29 +20,31 @@ You can use LIB in the following modes:
These modes are mutually exclusive; you can use LIB in only one mode at a time.
-## Lib Options
+## LIB options
The following table lists the options for lib.exe, with a link to more information.
|Option|Description|
|-|-|
-|**/DEF**|Create an import library and an export file.
For more information see [Building an Import Library and Export File](building-an-import-library-and-export-file.md).|
-|**/ERRORREPORT**| Send information to Microsoft about internal errors with lib.exe.
For more information see [Running LIB](running-lib.md).|
-|**/EXPORT**| Exports a function from your program.
For more information see [Building an Import Library and Export File](building-an-import-library-and-export-file.md).|
-|**/EXTRACT**| Create an object (.obj) file that contains a copy of a member of an existing library.
For more information see [Extracting a Library Member](extracting-a-library-member.md).|
-|**/INCLUDE**| Adds a symbol to the symbol table.
For more information see [Building an Import Library and Export File](building-an-import-library-and-export-file.md).|
-|**/LIBPATH**| Overrides the environment library path.
For more information see [Managing a Library](managing-a-library.md).|
-|**/LIST**| Displays information about the output library to standard output.
For more information see [Managing a Library](managing-a-library.md).|
-|**/LTCG**| Causes the library to be built using link-time code generation.
For more information see [Running LIB](running-lib.md).|
-|**/MACHINE**| Specifies the target platform for the program.
For more information see [Running LIB](running-lib.md).|
-|**/NAME**| When building an import library, specifies the name of the DLL for which the import library is being built.
For more information see [Managing a Library](managing-a-library.md).|
-|**/NODEFAULTLIB**| Removes one or more default libraries from the list of libraries it searches when resolving external references.
For more information see [Managing a Library](managing-a-library.md).|
-|**/NOLOGO**| Suppresses display of the LIB copyright message and version number and prevents echoing of command files.
For more information see [Running LIB](running-lib.md).|
-|**/OUT**| Overrides the default output filename.
For more information see [Managing a Library](managing-a-library.md).|
-|**/REMOVE**| Omits an object from the output library.
For more information see [Managing a Library](managing-a-library.md).|
-|**/SUBSYSTEM**| Tells the operating system how to run a program created by linking to the output library.
For more information see [Managing a Library](managing-a-library.md).|
-|**/VERBOSE**| Displays details about the progress of the session, including names of the .obj files being added.
For more information see [Running LIB](running-lib.md).|
-|**/WX**| Treat warnings as errors.
For more information see [Running LIB](running-lib.md).|
+|**/DEF**|Create an import library and an export file.
For more information, see [Building an Import Library and Export File](building-an-import-library-and-export-file.md).|
+|**/ERRORREPORT**| Send information to Microsoft about internal errors with lib.exe.
For more information, see [Running LIB](running-lib.md).|
+|**/EXPORT**| Exports a function from your program.
For more information, see [Building an Import Library and Export File](building-an-import-library-and-export-file.md).|
+|**/EXTRACT**| Create an object (.obj) file that contains a copy of a member of an existing library.
For more information, see [Extracting a Library Member](extracting-a-library-member.md).|
+|**/INCLUDE**| Adds a symbol to the symbol table.
For more information, see [Building an Import Library and Export File](building-an-import-library-and-export-file.md).|
+|**/LIBPATH**| Overrides the environment library path.
For more information, see [Managing a Library](managing-a-library.md).|
+|**/LINKREPRO**| Creates artifacts needed to reproduce a lib.exe crash or internal error.
For more information, see [Running LIB](running-lib.md).|
+|**/LINKREPROTARGET**| Only generates the **/LINKREPRO** artifacts when lib.exe is used with a specified file.
For more information, see [Running LIB](running-lib.md).|
+|**/LIST**| Displays information about the output library to standard output.
For more information, see [Managing a Library](managing-a-library.md).|
+|**/LTCG**| Causes the library to be built using link-time code generation.
For more information, see [Running LIB](running-lib.md).|
+|**/MACHINE**| Specifies the target platform for the program.
For more information, see [Running LIB](running-lib.md).|
+|**/NAME**| When building an import library, specifies the name of the DLL for which the import library is being built.
For more information, see [Managing a Library](managing-a-library.md).|
+|**/NODEFAULTLIB**| Removes one or more default libraries from the list of libraries it searches when resolving external references.
For more information, see [Managing a Library](managing-a-library.md).|
+|**/NOLOGO**| Suppresses display of the LIB copyright message and version number and prevents echoing of command files.
For more information, see [Running LIB](running-lib.md).|
+|**/OUT**| Overrides the default output filename.
For more information, see [Managing a Library](managing-a-library.md).|
+|**/REMOVE**| Omits an object from the output library.
For more information, see [Managing a Library](managing-a-library.md).|
+|**/SUBSYSTEM**| Tells the operating system how to run a program created by linking to the output library.
For more information, see [Managing a Library](managing-a-library.md).|
+|**/VERBOSE**| Displays details about the progress of the session, including names of the .obj files being added.
For more information, see [Running LIB](running-lib.md).|
+|**/WX**| Treat warnings as errors.
For more information, see [Running LIB](running-lib.md).|
## See also
diff --git a/docs/build/reference/running-lib.md b/docs/build/reference/running-lib.md
index 83a8866a7de..b88ae152601 100644
--- a/docs/build/reference/running-lib.md
+++ b/docs/build/reference/running-lib.md
@@ -1,6 +1,7 @@
---
title: "Running LIB"
-ms.date: "09/28/2018"
+description: Describes the command-line options you can use with lib.exe.
+ms.date: "09/25/2019"
f1_keywords: ["VC.Project.VCLibrarianTool.TargetMachine", "Lib", "VC.Project.VCLibrarianTool.PrintProgress", "VC.Project.VCLibrarianTool.SuppressStartupBanner"]
helpviewer_keywords: ["-MACHINE target platform option", "command files, LIB", "MACHINE target platform option", "colon command files", "VERBOSE library manager option", "/NOLOGO library manager option", "dash option specifier", "/MACHINE target platform option", "forward slash option specifier", "-NOLOGO library manager option", "LIB [C++], running LIB", "-VERBOSE library manager option", "/VERBOSE library manager option", "command files", "NOLOGO library manager option", "slash (/)", "semicolon, command files", "/ command files"]
ms.assetid: d54f5c81-7147-4b2c-a8db-68ce6eb1eabd
@@ -13,44 +14,46 @@ Various command-line options can be used to control LIB.
To run LIB, type the command `lib` followed by the options and file names for the task you are using LIB to perform. LIB also accepts command-line input in command files, which are described in the following section. LIB does not use an environment variable.
-> [!NOTE]
-> If you are accustomed to the LINK32.exe and LIB32.exe tools provided with the Microsoft Win32 Software Development Kit for Windows NT, you may have been using either the command `link32 -lib` or the command `lib32` for managing libraries and creating import libraries. Be sure to change your makefiles and batch files to use the `lib` command instead.
-
## LIB Command Files
You can pass command-line arguments to LIB in a command file using the following syntax:
-> **LIB \@**commandfile
+> **LIB \@**command-file
-The file *commandfile* is a text file. No space or tab is allowed between the at sign (**\@**) and the file name. There is no default extension; you must specify the full file name, including any extension. Wildcards cannot be used. You can specify an absolute or relative path with the file name.
+The file *command-file* is a text file. No spaces or tabs are allowed between the at sign (**\@**) and the file name. The *command-file* name has no default extension; you must specify the full file name, including any extension. Wildcards can't be used. You can specify an absolute or relative path with the file name.
-In the command file, arguments can be separated by spaces or tabs, as they can on the command line; they can also be separated by newline characters. Use a semicolon (**;**) to mark a comment. LIB ignores all text from the semicolon to the end of the line.
+In the command file, arguments can be separated by spaces or tabs, as they can on the command line. Arguments can also be separated by newline characters. Use a semicolon (**;**) to mark a comment. LIB ignores all text from the semicolon to the end of the line.
-You can specify either all or part of the command line in a command file, and you can use more than one command file in a LIB command. LIB accepts the command-file input as if it were specified in that location on the command line. Command files cannot be nested. LIB echoes the contents of command files unless the /NOLOGO option is used.
+You can specify either all or part of the command line in a command file, and you can use more than one command file in a LIB command. LIB accepts the command-file input as if it's specified in that location on the command line. Command files can't be nested. LIB echoes the contents of command files unless the **/NOLOGO** option is used.
## Using LIB Options
-An option consists of an option specifier, which is either a dash (**-**) or a forward slash (**/**), followed by the name of the option. Option names cannot be abbreviated. Some options take an argument, specified after a colon (**:**). No spaces or tabs are allowed within an option specification. Use one or more spaces or tabs to separate option specifications on the command line. Option names and their keyword or file name arguments are not case sensitive, but identifiers used as arguments are case sensitive. LIB processes options in the order specified on the command line and in command files. If an option is repeated with different arguments, the last one to be processed takes precedence.
+An option consists of an option specifier, which is either a dash (**-**) or a forward slash (**/**), followed by the name of the option. Option names can't be abbreviated. Some options take an argument, specified after a colon (**:**). No spaces or tabs are allowed within an option specification. Use one or more spaces or tabs to separate option specifications on the command line. Option names and their keyword or file name arguments aren't case-sensitive, but identifiers used as arguments are case-sensitive. LIB processes options in the order specified on the command line and in command files. If an option is repeated with different arguments, the last one to be processed takes precedence.
The following options apply to all modes of LIB:
-> **/ERRORREPORT** [**NONE** | **PROMPT** | **QUEUE** | **SEND**]
+> **/ERRORREPORT** \[**NONE** | **PROMPT** | **QUEUE** | **SEND**]
If lib.exe fails at runtime, you can use **/ERRORREPORT** to send information to Microsoft about these internal errors.
For more information about **/ERRORREPORT**, see [/errorReport (Report Internal Compiler Errors)](errorreport-report-internal-compiler-errors.md).
+> **/LINKREPRO:**_directory-path_ \
+> **/LINKREPROTARGET:**_filename_
+
+To help Microsoft diagnose lib.exe crashes and internal errors, you can use the [/LINKREPRO](linkrepro.md) option. It generates a *link repro*, a set of build artifacts that allow Microsoft to reproduce a problem that occurs during library operations. The [/LINKREPROTARGET](linkreprotarget.md) option can be used with the **/LINKREPRO** option. It only generates link repro artifacts when lib.exe produces the specified file. For more information, see [How to report a problem with the Microsoft C++ toolset](../../overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md).
+
> **/LTCG**
"LTCG" stands for *link-time code generation*. This feature requires cooperation between the compiler ([cl.exe](compiler-options.md)), LIB, and the linker ([LINK](linker-options.md)) in order to optimize code beyond what any component can do by itself.
-For LIB, the **/LTCG** option specifies that the inputs from cl.exe include object files that were generated by using the [/GL](gl-whole-program-optimization.md) compiler option. If LIB encounters such inputs and **/LTCG** is not specified, it will restart with /LTCG enabled after displaying an informational message. In other words, it is not necessary to explicitly set this option, but it speeds up build performance to do so because LIB does not have to restart itself.
+For LIB, the **/LTCG** option specifies that the inputs from cl.exe include object files that were generated by using the [/GL](gl-whole-program-optimization.md) compiler option. If LIB encounters such inputs and **/LTCG** isn't specified, it will restart with /LTCG enabled after displaying an informational message. In other words, it isn't necessary to explicitly set this option, but it speeds up build performance to do so because LIB doesn't have to restart itself.
-In the build process, the output from LIB is sent to LINK. LINK has its own separate **/LTCG** option which is used to perform various optimizations, including whole-program optimization and profile-guided optimization (PGO) instrumentation. For more information about the LINK option, see [/LTCG](ltcg-link-time-code-generation.md).
+In the build process, the output from LIB is sent to LINK. LINK has its own separate **/LTCG** option. It's used to perform various optimizations, including whole-program optimization and profile-guided optimization (PGO) instrumentation. For more information about the LINK option, see [/LTCG](ltcg-link-time-code-generation.md).
> **/MACHINE**
-Specifies the target platform for the program. Usually, you do not need to specify /MACHINE. LIB infers the machine type from the .obj files. However, in some circumstances, LIB cannot determine the machine type and issues an error message. If such an error occurs, specify /MACHINE. In /EXTRACT mode, this option is for verification only. Use `lib /?` at the command line to see available machine types.
+Specifies the target platform for the program. Usually, you don't need to specify **/MACHINE**. LIB infers the machine type from the .obj files. However, in some circumstances, LIB can't determine the machine type and issues an error message. If such an error occurs, specify **/MACHINE**. In **/EXTRACT** mode, this option is for verification only. Use `lib /?` at the command line to see available machine types.
> **/NOLOGO**
@@ -62,7 +65,7 @@ Displays details about the progress of the session, including names of the .obj
> **/WX**[**:NO**]
-Treat warnings as errors. See [/WX (Treat Linker Warnings as Errors)](wx-treat-linker-warnings-as-errors.md) for more information.
+Treat warnings as errors. For more information, see [/WX (Treat Linker Warnings as Errors)](wx-treat-linker-warnings-as-errors.md).
Other options apply only to specific modes of LIB. These options are discussed in the sections describing each mode.
diff --git a/docs/build/reference/vcxproj-filters-files.md b/docs/build/reference/vcxproj-filters-files.md
new file mode 100644
index 00000000000..b26b57aa62a
--- /dev/null
+++ b/docs/build/reference/vcxproj-filters-files.md
@@ -0,0 +1,103 @@
+---
+title: "Vcxproj.filters files"
+ms.date: "09/25/2019"
+description: "Use filters files in Visual Studio C++ projects to define custom logical folders for files in Solution Explorer"
+helpviewer_keywords: ["vcxproj.filters", "filters file [C++]"]
+---
+
+# vcxproj.filters files
+
+The *filters* file (\*.vcxproj.filters) is an XML file in MSBuild format that is located in the root project folder. It specifies which file types go into which logical folder in **Solution Explorer**. In the following illustration, the *.cpp* files are under the **Source Files** node. the *.h* files are under the **Header Files** node, and *.ico* and *.rc* files are under **Resource Files**. This placement is controlled by the filters file.
+
+
+
+## Creating a custom filters file
+
+Visual Studio creates this file automatically. For desktop applications, the predefined logical folders (filters) are: **Source Files**, **Header Files** and **Resource Files**. Other project types such as UWP might have a different set of default folders. Visual Studio automatically assigns known file types to each folder. If you want to create a filter with a custom name or a filter that holds custom file types, you can create your own filters file in the root folder of the project, or under an existing filter. (**References** and **External Dependencies** are special folders that do not participate in filtering.)
+
+## Example
+
+The following example shows the filters file for the example show previously. It has a flat hierarchy; in other words, there are no nested logical folders. The `UniqueIdentifier` node is optional. It enables Visual Studio automation interfaces to find the filter. `Extensions` is also optional. When a new file is added to a project, it is added to the topmost filter with a matching file extension. To add a file to a specific filter, right-click on the filter and choose **Add New Item**.
+
+The `ItemGroup` that contains the `ClInclude` nodes is created when the project is first launched. If you are generating your own vcxproj files, make sure that all project items also have an entry in the filters file. Values in a `ClInclude` node override the default filtering based on file extensions. When you use Visual Studio to add a new item to the project, the IDE will add an individual file entry in the filters file. The filter is not automatically reassigned if you change the file's extension.
+
+```xml
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
+
+
+ {67DA6AB6-F800-4c08-8B7A-83BB121AAD01}
+ rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav;mfcribbon-ms
+
+
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+ Header Files
+
+
+
+
+ Source Files
+
+
+ Source Files
+
+
+ Source Files
+
+
+
+
+ Resource Files
+
+
+
+
+ Resource Files
+
+
+
+
+ Resource Files
+
+
+
+```
+
+To create nested logical folders, declare all nodes in filters `ItemGroup` as shown below. Each child node must declare the full logical path to the topmost parent. In the following example, an empty `ParentFilter` must be declared because it is referenced in later nodes.
+
+```xml
+
+
+
+
+ {4FC737F1-C7A5-4376-A066-2A32D752A2FF}
+ cpp;c;cc;cxx;def;odl;idl;hpj;bat;asm;asmx
+
+
+ {93995380-89BD-4b04-88EB-625FBE52EBFB}
+ h;hh;hpp;hxx;hm;inl;inc;ipp;xsd
+
+
+```
+
diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md
new file mode 100644
index 00000000000..728569bc3c5
--- /dev/null
+++ b/docs/build/reference/zh.md
@@ -0,0 +1,50 @@
+---
+title: "/ZH (Hash algorithm for calculation of file checksum in debug info)"
+description: "Use the /ZH compiler option to enable MD5, SHA-1, or SHA-256 source file checksums in debug info"
+ms.date: "09/16/2019"
+f1_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256"]
+helpviewer_keywords: ["/ZH", "/ZH:MD5", "/ZH:SHA1", "/ZH:SHA_256", "/ZH compiler option", "/ZH:MD5 compiler option", "/ZH:SHA1 compiler option", "/ZH:SHA_256 compiler option", "Hash algorithm for file checksum in debug info"]
+---
+# /ZH (Hash algorithm for calculation of file checksum in debug info)
+
+Specifies which cryptographic hash algorithm to use to generate a checksum of each source file.
+
+## Syntax
+
+> **/ZH:**{**MD5**|**SHA1**|**SHA_256**}
+
+## Arguments
+
+**/ZH:MD5**\
+Use an MD5 hash for the checksum. This option is the default.
+
+**/ZH:SHA1**\
+Use an SHA-1 hash for the checksum.
+
+**/ZH:SHA_256**\
+Use an SHA-256 hash for the checksum.
+
+## Remarks
+
+PDB files store a checksum for each source file compiled into the object code in the associated executable. The checksum allows the debugger to verify that the source code it loads matches the executable. The compiler and debugger support MD5, SHA-1, and SHA-256 hash algorithms. By default, the compiler uses an MD5 hash to generate the checksum. You can specify this option explicitly by using the **/ZH:MD5** option.
+
+Because of a risk of collision problems in MD5 and SHA-1, Microsoft recommends you use the **/ZH:SHA_256** option. The SHA-256 hash may result in a small increase in compile times.
+
+When more than one **/ZH** option is specified, the last option is used.
+
+The **/ZH** option is available starting in Visual Studio 2019 version 16.4.
+
+### 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++** > **Command Line** property page.
+
+1. Modify the **Additional options** property to add a **/ZH:MD5**, **/ZH:SHA1**, or **/ZH:SHA_256** option, and then choose **OK**.
+
+## See also
+
+[Compiler options](compiler-options.md)\
+[Source server](/windows/win32/debug/source-server-and-source-indexing)
diff --git a/docs/c-runtime-library/reference/calloc.md b/docs/c-runtime-library/reference/calloc.md
index c2030e17f97..ab5e5c67992 100644
--- a/docs/c-runtime-library/reference/calloc.md
+++ b/docs/c-runtime-library/reference/calloc.md
@@ -1,6 +1,7 @@
---
title: "calloc"
-ms.date: "11/04/2016"
+description: The C runtime library function calloc allocates zero-initialized memory.
+ms.date: "09/27/2019"
api_name: ["calloc"]
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"]
api_type: ["DLLExport"]
@@ -17,7 +18,7 @@ Allocates an array in memory with elements initialized to 0.
```C
void *calloc(
- size_t num,
+ size_t number,
size_t size
);
```
@@ -40,17 +41,19 @@ The **calloc** function allocates storage space for an array of *number* element
**calloc** sets **errno** to **ENOMEM** if a memory allocation fails or if the amount of memory requested exceeds **_HEAP_MAXREQ**. For information on this and other error codes, see [errno, _doserrno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md).
-**calloc** calls **malloc** to use the C++ [_set_new_mode](set-new-mode.md) function to set the new handler mode. The new handler mode indicates whether, on failure, **malloc** is to call the new handler routine as set by [_set_new_handler](set-new-handler.md). By default, **malloc** does not call the new handler routine on failure to allocate memory. You can override this default behavior so that, when **calloc** fails to allocate memory, **malloc** calls the new handler routine in the same way that the **new** operator does when it fails for the same reason. To override the default, call
+In the Microsoft implementation, if *number* or *size* is zero, **calloc** returns a pointer to an allocated block of non-zero size. An attempt to read or write through the returned pointer leads to undefined behavior.
+
+**calloc** uses the C++ [_set_new_mode](set-new-mode.md) function to set the *new handler mode*. The new handler mode indicates whether, on failure, **calloc** is to call the new handler routine as set by [_set_new_handler](set-new-handler.md). By default, **calloc** doesn't call the new handler routine on failure to allocate memory. You can override this default behavior so that, when **calloc** fails to allocate memory, it calls the new handler routine in the same way that the **new** operator does when it fails for the same reason. To override the default, call
```C
_set_new_mode(1);
```
-early in your program, or link with NEWMODE.OBJ (see [Link Options](../../c-runtime-library/link-options.md)).
+early in your program, or link with *NEWMODE.OBJ* (see [Link Options](../../c-runtime-library/link-options.md)).
When the application is linked with a debug version of the C run-time libraries, **calloc** resolves to [_calloc_dbg](calloc-dbg.md). For more information about how the heap is managed during the debugging process, see [The CRT Debug Heap](/visualstudio/debugger/crt-debug-heap-details).
-**calloc** is marked `__declspec(noalias)` and `__declspec(restrict)`, meaning that the function is guaranteed not to modify global variables, and that the pointer returned is not aliased. For more information, see [noalias](../../cpp/noalias.md) and [restrict](../../cpp/restrict.md).
+**calloc** is marked `__declspec(noalias)` and `__declspec(restrict)`, meaning that the function is guaranteed not to modify global variables, and that the pointer returned isn't aliased. For more information, see [noalias](../../cpp/noalias.md) and [restrict](../../cpp/restrict.md).
## Requirements
diff --git a/docs/ide/how-to-set-preferences.md b/docs/ide/how-to-set-preferences.md
new file mode 100644
index 00000000000..32efda235fb
--- /dev/null
+++ b/docs/ide/how-to-set-preferences.md
@@ -0,0 +1,78 @@
+---
+title: "Set your C++ coding preferences in Visual Studio"
+ms.description: "Customize C++ formatting, colors, layout, line numbers, menus and more in the Visual Studio IDE."
+ms.topic: "overview"
+ms.date: "09/27/2019"
+---
+
+# Set your C++ coding preferences in Visual Studio
+
+You can make your C++ coding experience more convenient, productive and pleasurable by personalizing Visual Studio. You can customize the menus and toolbars, arrange the window layout, set color themes, specify C++ formatting rules, including several flavors of ClangFormat, and create custom keyboard shortcuts. You can synchronize your preferences across multiple machines, and create and store multiple sets of preferences and share them with teammates. You can install extensions from the Visual Studio Marketplace which provide additional custom behavior. Many of these options are documented under [Personalize the Visual Studio IDE](/visualstudio/ide/personalizing-the-visual-studio-ide).
+
+## Arrange window layout
+
+Within the Visual Studio window, the space is divided into the main menu, the toolbar, the code editor (or document window), and tool windows (**Solution Explorer**, **Error List**, and so on). Some windows overlap each other in the same position. For example, **Solution Explorer**, **Class View**, **Resource View**, and **Source Control Explorer** all share the same default position. You switch between them by clicking on the tabs at the bottom of the frame. To make two or more of these windows visible at the same time, just drag one of them by its title bar to a new position. You can dock it against one of the Visual Studio main window borders, or you can float it. The following illustration shows the **Team Explorer** window in the process of being dragged from its default position to a new docked position on the left side of the code editor. The blue shaded area shows where the window will be placed when the mouse button is released.
+
+
+
+In the document window, each open file is contained in a tabbed frame. You can float or lock these tabs just like tool windows. For more information, see [Customize window layouts in Visual Studio](/visualstudio/ide/customizing-window-layouts-in-visual-studio).
+
+To hide all the tool windows and maximize the Code Editor window, press **Alt** + **Shift** + **Enter** to toggle *full-screen mode*.
+
+## Set C++ coding styles and formatting
+
+You can specify many individual code formatting options such as indentation and brace positions by navigating to **Tools** > **Options** > **Text Editor** > **C/C++** > **Formatting** (or type **Ctrl + Q** and search for "Formatting"). Alternatively, you can specify one of the [ClangFormat](https://clang.llvm.org/docs/ClangFormat.html) styles (or your own custom ClangFormat style):
+
+
+
+For more information about all the formatting options, see [Options, Text Editor, C/C++, Formatting](/visualstudio/ide/reference/options-text-editor-c-cpp-formatting).
+
+## Set the color theme
+
+To set a light or dark background, type **Ctrl + Q** and search for "Color Theme". You can also get there via **Tools** > **Options** > **Environment** and choose **Color Theme**:
+
+
+
+The following image shows the dark theme:
+
+
+
+## Customize code colorization
+
+In Visual Studio 2019 you can choose from three predefined *color schemes* which specify how code elements are colorized in the editor. To choose a theme, navigate to **Tools** > **Options** > **Text Editor** > **C/C++** > **View** and choose **Color Scheme**:
+
+
+
+In the **Visual Studio 2017** color scheme, most code elements are simply black. In the **Enhanced** color scheme, functions, local variables, macros, and other elements are colorized. In the **Enhanced (Globals vs. Members)** scheme, global functions and variables are colorized to contrast with class members. The default mode is **Enhanced** and it looks like this:
+
+
+
+Regardless of which theme or color scheme is active, you can customize the font and colors for individual code elements by navigating to **Tools** > **Options** > **Environment** > **Fonts and Colors** (or type **Ctrl + Q** and search for "Fonts"). Scroll down the list of display items until you see the C++ options:
+
+
+
+Colors that you set here override the values defined for the color schemes. You have to set a color back to **Default** if you have changed it but want to use the default colors for the color scheme.
+
+## Customize the toolbars
+
+The toolbars provide a convenient way to issue commands with a single mouse-click, rather than using the menus or keyboard shortcuts. Visual Studio includes a standard set of toolbars. For standard C++ development, the most useful toolbars are probably Standard, Text Editor, Build, Debug, Source Control, and possibly Compare Files. For Windows development, the Dialog Editor and Image Editor are useful for laying out dialogs and editing icons.
+
+Hover over the icons in the toolbar to see which command it represents:
+
+
+
+You can add or remove commands or create a custom toolbar by clicking the down-arrow. To move the toolbar to a new location, drag it by the dotted bar on the left:
+
+.
+
+For more information, see [How to: Customize menus and toolbars in Visual Studio](/visualstudio/ide/how-to-customize-menus-and-toolbars-in-visual-studio).
+
+## Show or hide line numbers
+
+To specify whether line numbers show on the left of the editor windows, navigate to and check or un-check **Line Numbers**:
+
+
+
+## Create keyboard shortcuts
+
+All commands in Visual Studio can be made with keyboard shortcuts using various combinations of keys with the Ctrl, Alt and Shift keys. You can create your own shortcuts by navigating to **Tools** > **Options** > **Environment** > **Keyboard** (or type **Ctrl + Q** and search for "shortcuts"). For more information, see [Identify and customize keyboard shortcuts in Visual Studio](/visualstudio/ide/identifying-and-customizing-keyboard-shortcuts-in-visual-studio).
diff --git a/docs/ide/media/clang-format-ide.png b/docs/ide/media/clang-format-ide.png
new file mode 100644
index 00000000000..569bc675239
Binary files /dev/null and b/docs/ide/media/clang-format-ide.png differ
diff --git a/docs/ide/media/color-scheme-enhanced.png b/docs/ide/media/color-scheme-enhanced.png
new file mode 100644
index 00000000000..cfe05d3a59e
Binary files /dev/null and b/docs/ide/media/color-scheme-enhanced.png differ
diff --git a/docs/ide/media/color-schemes.png b/docs/ide/media/color-schemes.png
new file mode 100644
index 00000000000..e0a106e27db
Binary files /dev/null and b/docs/ide/media/color-schemes.png differ
diff --git a/docs/ide/media/toolbar-mouse-hover.png b/docs/ide/media/toolbar-mouse-hover.png
new file mode 100644
index 00000000000..4e52a3cfc35
Binary files /dev/null and b/docs/ide/media/toolbar-mouse-hover.png differ
diff --git a/docs/ide/media/toolbar-move-edit.png b/docs/ide/media/toolbar-move-edit.png
new file mode 100644
index 00000000000..6ee17d601e6
Binary files /dev/null and b/docs/ide/media/toolbar-move-edit.png differ
diff --git a/docs/ide/media/tools-options-color-theme.png b/docs/ide/media/tools-options-color-theme.png
new file mode 100644
index 00000000000..be8bc1b0d1d
Binary files /dev/null and b/docs/ide/media/tools-options-color-theme.png differ
diff --git a/docs/ide/media/tools-options-cpp-colors.png b/docs/ide/media/tools-options-cpp-colors.png
new file mode 100644
index 00000000000..1fb89973703
Binary files /dev/null and b/docs/ide/media/tools-options-cpp-colors.png differ
diff --git a/docs/ide/media/tools-options-dark-theme.png b/docs/ide/media/tools-options-dark-theme.png
new file mode 100644
index 00000000000..320580a841f
Binary files /dev/null and b/docs/ide/media/tools-options-dark-theme.png differ
diff --git a/docs/ide/media/tools-options-line-numbers.png b/docs/ide/media/tools-options-line-numbers.png
new file mode 100644
index 00000000000..3194b06b357
Binary files /dev/null and b/docs/ide/media/tools-options-line-numbers.png differ
diff --git a/docs/ide/media/window-layout-2.png b/docs/ide/media/window-layout-2.png
new file mode 100644
index 00000000000..93a444d4972
Binary files /dev/null and b/docs/ide/media/window-layout-2.png differ
diff --git a/docs/ide/media/window-layout-default.png b/docs/ide/media/window-layout-default.png
new file mode 100644
index 00000000000..2e32b906d7b
Binary files /dev/null and b/docs/ide/media/window-layout-default.png differ
diff --git a/docs/ide/media/window-layout-move-team-explorer.png b/docs/ide/media/window-layout-move-team-explorer.png
new file mode 100644
index 00000000000..0f7fb11387c
Binary files /dev/null and b/docs/ide/media/window-layout-move-team-explorer.png differ
diff --git a/docs/mfc/closing-the-dialog-box.md b/docs/mfc/closing-the-dialog-box.md
index d8828424460..cc6df7e4470 100644
--- a/docs/mfc/closing-the-dialog-box.md
+++ b/docs/mfc/closing-the-dialog-box.md
@@ -12,4 +12,4 @@ To arrange for closing and deleting a modeless dialog box, override `PostNcDestr
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/common-dialog-classes.md b/docs/mfc/common-dialog-classes.md
index ef161ed002a..34420f59124 100644
--- a/docs/mfc/common-dialog-classes.md
+++ b/docs/mfc/common-dialog-classes.md
@@ -26,5 +26,5 @@ Three other classes in MFC have dialog-like characteristics. For information abo
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[Dialog Boxes in OLE](../mfc/dialog-boxes-in-ole.md)
diff --git a/docs/mfc/commonly-added-member-functions.md b/docs/mfc/commonly-added-member-functions.md
index 16722614623..dd2266c3a48 100644
--- a/docs/mfc/commonly-added-member-functions.md
+++ b/docs/mfc/commonly-added-member-functions.md
@@ -11,5 +11,5 @@ If your dialog box contains pushbuttons other than OK or Cancel, you need to wri
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[Commonly Overridden Member Functions](../mfc/commonly-overridden-member-functions.md)
diff --git a/docs/mfc/commonly-overridden-member-functions.md b/docs/mfc/commonly-overridden-member-functions.md
index caa2fe43df9..d1568666185 100644
--- a/docs/mfc/commonly-overridden-member-functions.md
+++ b/docs/mfc/commonly-overridden-member-functions.md
@@ -24,7 +24,7 @@ The following table lists the most likely member functions to override in your `
`OnCancel` is usually overridden for modeless dialog boxes.
-For more information about these member functions, see class [CDialog](../mfc/reference/cdialog-class.md) in the *MFC Reference* and the discussion on [Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md).
+For more information about these member functions, see class [CDialog](../mfc/reference/cdialog-class.md) in the *MFC Reference* and the discussion on [Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md).
## See also
diff --git a/docs/mfc/creating-a-dialog-class-with-code-wizards.md b/docs/mfc/creating-a-dialog-class-with-code-wizards.md
index da5b4196108..5c554e63a00 100644
--- a/docs/mfc/creating-a-dialog-class-with-code-wizards.md
+++ b/docs/mfc/creating-a-dialog-class-with-code-wizards.md
@@ -29,4 +29,4 @@ The following table lists dialog-related tasks that Code Wizards help you manage
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/creating-a-modeless-property-sheet.md b/docs/mfc/creating-a-modeless-property-sheet.md
index 16f24353c36..f75526bda2b 100644
--- a/docs/mfc/creating-a-modeless-property-sheet.md
+++ b/docs/mfc/creating-a-modeless-property-sheet.md
@@ -22,4 +22,4 @@ There are many user-interface alternatives for determining when the settings of
[Property Sheets](../mfc/property-sheets-mfc.md)
[Exchanging Data](../mfc/exchanging-data.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/creating-and-displaying-dialog-boxes.md b/docs/mfc/creating-and-displaying-dialog-boxes.md
index a0ef28de277..9441f4adeae 100644
--- a/docs/mfc/creating-and-displaying-dialog-boxes.md
+++ b/docs/mfc/creating-and-displaying-dialog-boxes.md
@@ -19,4 +19,4 @@ You can, if you want, create your dialog box from an [in-memory dialog template]
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/creating-modal-dialog-boxes.md b/docs/mfc/creating-modal-dialog-boxes.md
index 24f51f7e415..eaab3ddd0e4 100644
--- a/docs/mfc/creating-modal-dialog-boxes.md
+++ b/docs/mfc/creating-modal-dialog-boxes.md
@@ -10,4 +10,4 @@ To create a modal dialog box, call either of the two public constructors declare
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/creating-modeless-dialog-boxes.md b/docs/mfc/creating-modeless-dialog-boxes.md
index 341bcf2c5f0..be12d98c84d 100644
--- a/docs/mfc/creating-modeless-dialog-boxes.md
+++ b/docs/mfc/creating-modeless-dialog-boxes.md
@@ -10,4 +10,4 @@ For a modeless dialog box, you must provide your own public constructor in your
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/creating-the-dialog-resource.md b/docs/mfc/creating-the-dialog-resource.md
index 8ffca6d96ef..1378a9339d4 100644
--- a/docs/mfc/creating-the-dialog-resource.md
+++ b/docs/mfc/creating-the-dialog-resource.md
@@ -23,4 +23,4 @@ When the dialog box's appearance suits you, create a dialog class and map its me
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/creating-your-dialog-class.md b/docs/mfc/creating-your-dialog-class.md
index 2ce2cb9150d..1611bdfb0c3 100644
--- a/docs/mfc/creating-your-dialog-class.md
+++ b/docs/mfc/creating-your-dialog-class.md
@@ -25,4 +25,4 @@ In the .cpp file:
## See also
[Creating a Dialog Class with Code Wizards](../mfc/creating-a-dialog-class-with-code-wizards.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/destroying-the-dialog-box.md b/docs/mfc/destroying-the-dialog-box.md
index 8b16061e292..2986e8a92eb 100644
--- a/docs/mfc/destroying-the-dialog-box.md
+++ b/docs/mfc/destroying-the-dialog-box.md
@@ -12,4 +12,4 @@ Modeless dialog boxes are normally created and owned by a parent view or frame w
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/dialog-box-components-in-the-framework.md b/docs/mfc/dialog-box-components-in-the-framework.md
index 46068990607..d70c978c948 100644
--- a/docs/mfc/dialog-box-components-in-the-framework.md
+++ b/docs/mfc/dialog-box-components-in-the-framework.md
@@ -19,4 +19,4 @@ In the MFC framework, a dialog box has two components:
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/dialog-boxes-in-ole.md b/docs/mfc/dialog-boxes-in-ole.md
index fc5f5e0f7d5..c2bb70205da 100644
--- a/docs/mfc/dialog-boxes-in-ole.md
+++ b/docs/mfc/dialog-boxes-in-ole.md
@@ -29,5 +29,5 @@ The Server Busy dialog box is displayed when the user attempts to activate an it
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[OLE](../mfc/ole-in-mfc.md)
diff --git a/docs/mfc/dialog-boxes.md b/docs/mfc/dialog-boxes.md
index 1890e04d3b4..8842f6ba952 100644
--- a/docs/mfc/dialog-boxes.md
+++ b/docs/mfc/dialog-boxes.md
@@ -34,7 +34,7 @@ Most dialog boxes are modal, which require the user to close the dialog box befo
- [Creating a dialog class with Code Wizards](../mfc/creating-a-dialog-class-with-code-wizards.md)
-- [Life cycle of a dialog box](../mfc/life-cycle-of-a-dialog-box.md)
+- [Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
- [Dialog data exchange (DDX) and validation (DDV)](../mfc/dialog-data-exchange-and-validation.md)
diff --git a/docs/mfc/dialog-data-exchange-and-validation.md b/docs/mfc/dialog-data-exchange-and-validation.md
index 63840d4b0e1..d1b59a80c70 100644
--- a/docs/mfc/dialog-data-exchange-and-validation.md
+++ b/docs/mfc/dialog-data-exchange-and-validation.md
@@ -17,4 +17,4 @@ Dialog data exchange (DDX) is an easy way to initialize the controls in your dia
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/dialog-data-exchange.md b/docs/mfc/dialog-data-exchange.md
index 09fe285f7ba..2a5a9f8a71f 100644
--- a/docs/mfc/dialog-data-exchange.md
+++ b/docs/mfc/dialog-data-exchange.md
@@ -30,5 +30,5 @@ If the user cancels a modal dialog box, the `OnCancel` member function terminate
## See also
[Dialog Data Exchange and Validation](../mfc/dialog-data-exchange-and-validation.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[Dialog Data Validation](../mfc/dialog-data-validation.md)
diff --git a/docs/mfc/dialog-data-validation.md b/docs/mfc/dialog-data-validation.md
index f6e7077f7a0..ef9d2ca0bf6 100644
--- a/docs/mfc/dialog-data-validation.md
+++ b/docs/mfc/dialog-data-validation.md
@@ -15,5 +15,5 @@ The [Add Member Variable Wizard](../ide/add-member-variable-wizard.md) will writ
## See also
[Dialog Data Exchange and Validation](../mfc/dialog-data-exchange-and-validation.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[Dialog Data Exchange](../mfc/dialog-data-exchange.md)
diff --git a/docs/mfc/handling-windows-messages-in-your-dialog-box.md b/docs/mfc/handling-windows-messages-in-your-dialog-box.md
index c13bc9b3bc1..3e9c670e263 100644
--- a/docs/mfc/handling-windows-messages-in-your-dialog-box.md
+++ b/docs/mfc/handling-windows-messages-in-your-dialog-box.md
@@ -12,4 +12,4 @@ See [Mapping Windows Messages to Your Dialog Class](../mfc/mapping-windows-messa
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/initializing-the-dialog-box.md b/docs/mfc/initializing-the-dialog-box.md
index 3113dd293e1..5229bfd198a 100644
--- a/docs/mfc/initializing-the-dialog-box.md
+++ b/docs/mfc/initializing-the-dialog-box.md
@@ -12,4 +12,4 @@ If you want to set your dialog box's background color (and that of all other dia
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/life-cycle-of-a-dialog-box.md b/docs/mfc/life-cycle-of-a-dialog-box.md
index 5ea132c6898..5f07087e5d0 100644
--- a/docs/mfc/life-cycle-of-a-dialog-box.md
+++ b/docs/mfc/life-cycle-of-a-dialog-box.md
@@ -1,12 +1,12 @@
---
-title: "Life Cycle of a Dialog Box"
-ms.date: "11/04/2016"
+title: "Working with Dialog Boxes in MFC"
+ms.date: "09/27/2019"
helpviewer_keywords: ["dialog boxes [MFC], life cycle", "modal dialog boxes [MFC], life cycle", "modeless dialog boxes [MFC], life cycle", "MFC dialog boxes [MFC], life cycle", "life cycle of dialog boxes [MFC]"]
ms.assetid: e16fd78e-238d-4f31-8c9d-8564f3953bd9
---
-# Life Cycle of a Dialog Box
+# Working with Dialog Boxes in MFC
-During the life cycle of a dialog box, the user invokes the dialog box, typically inside a command handler that creates and initializes the dialog object, the user interacts with the dialog box, and the dialog box closes.
+During the life cycle of a dialog box, the user invokes the dialog box, typically inside a command handler that creates and initializes the dialog object, the user interacts with the dialog box, then dialog box closes.
For modal dialog boxes, your handler gathers any data the user entered once the dialog box closes. Since the dialog object exists after its dialog window has closed, you can simply use the member variables of your dialog class to extract the data.
diff --git a/docs/mfc/mapping-windows-messages-to-your-class.md b/docs/mfc/mapping-windows-messages-to-your-class.md
index 2e421cad5cd..5c8ab66bf31 100644
--- a/docs/mfc/mapping-windows-messages-to-your-class.md
+++ b/docs/mfc/mapping-windows-messages-to-your-class.md
@@ -21,4 +21,4 @@ You can also override member functions of [CDialog](../mfc/reference/cdialog-cla
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/modal-and-modeless-dialog-boxes.md b/docs/mfc/modal-and-modeless-dialog-boxes.md
index 35595fa3a4c..e14370768d9 100644
--- a/docs/mfc/modal-and-modeless-dialog-boxes.md
+++ b/docs/mfc/modal-and-modeless-dialog-boxes.md
@@ -27,4 +27,4 @@ Creating a dialog box for your program requires the following steps:
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/property-sheets-and-property-pages-mfc.md b/docs/mfc/property-sheets-and-property-pages-mfc.md
index 39eb51e6201..148bcf45765 100644
--- a/docs/mfc/property-sheets-and-property-pages-mfc.md
+++ b/docs/mfc/property-sheets-and-property-pages-mfc.md
@@ -17,7 +17,7 @@ For information on creating and working with property sheets, see the topic [Pro
## See also
[Dialog Boxes](../mfc/dialog-boxes.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[Property Sheets and Property Pages in MFC](../mfc/property-sheets-and-property-pages-in-mfc.md)
[Exchanging Data](../mfc/exchanging-data.md)
[Creating a Modeless Property Sheet](../mfc/creating-a-modeless-property-sheet.md)
diff --git a/docs/mfc/retrieving-data-from-the-dialog-object.md b/docs/mfc/retrieving-data-from-the-dialog-object.md
index 118276c4eff..1cd0a4b3fb0 100644
--- a/docs/mfc/retrieving-data-from-the-dialog-object.md
+++ b/docs/mfc/retrieving-data-from-the-dialog-object.md
@@ -18,4 +18,4 @@ For a modal dialog box, you can retrieve any data the user entered when `DoModal
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/mfc/setting-the-dialog-boxs-background-color.md b/docs/mfc/setting-the-dialog-boxs-background-color.md
index 0115cf07d29..51fb22ec851 100644
--- a/docs/mfc/setting-the-dialog-boxs-background-color.md
+++ b/docs/mfc/setting-the-dialog-boxs-background-color.md
@@ -12,5 +12,5 @@ See [codexpert blog](https://codexpert.ro/blog/2013/03/13/painting-the-dialog-ba
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[Handling Windows Messages in Your Dialog Box](../mfc/handling-windows-messages-in-your-dialog-box.md)
diff --git a/docs/mfc/toc.yml b/docs/mfc/toc.yml
index c0615b2c5b8..d09d72d38df 100644
--- a/docs/mfc/toc.yml
+++ b/docs/mfc/toc.yml
@@ -1023,7 +1023,7 @@
- name: Life cycle of a dialog box
expanded: false
items:
- - name: Life cycle of a dialog box
+ - name: Working with Dialog Boxes in MFC
href: life-cycle-of-a-dialog-box.md
- name: Creating and displaying dialog boxes
href: creating-and-displaying-dialog-boxes.md
diff --git a/docs/mfc/type-safe-access-to-controls-with-code-wizards.md b/docs/mfc/type-safe-access-to-controls-with-code-wizards.md
index 2fd92c2adc9..fa412b68b3f 100644
--- a/docs/mfc/type-safe-access-to-controls-with-code-wizards.md
+++ b/docs/mfc/type-safe-access-to-controls-with-code-wizards.md
@@ -26,5 +26,5 @@ For more information about controls, see [Controls](../mfc/controls-mfc.md).
## See also
[Type-Safe Access to Controls in a Dialog Box](../mfc/type-safe-access-to-controls-in-a-dialog-box.md)
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
[Type-Safe Access to Controls Without Code Wizards](../mfc/type-safe-access-to-controls-without-code-wizards.md)
diff --git a/docs/mfc/using-a-dialog-template-in-memory.md b/docs/mfc/using-a-dialog-template-in-memory.md
index 62a9983b3e7..3766639077f 100644
--- a/docs/mfc/using-a-dialog-template-in-memory.md
+++ b/docs/mfc/using-a-dialog-template-in-memory.md
@@ -10,4 +10,4 @@ Instead of using the methods given in the [Dialog Creation table](../mfc/creatin
## See also
-[Life Cycle of a Dialog Box](../mfc/life-cycle-of-a-dialog-box.md)
+[Working with Dialog Boxes in MFC](../mfc/life-cycle-of-a-dialog-box.md)
diff --git a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md
index d19ac500c5c..fe1e4657014 100644
--- a/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md
+++ b/docs/overview/how-to-report-a-problem-with-the-visual-cpp-toolset.md
@@ -1,6 +1,7 @@
---
title: "How to report a problem with the Microsoft C++ toolset"
-ms.date: "06/21/2019"
+description: How to create a good problem report and repro information for the Microsoft C++ toolset.
+ms.date: "09/24/2019"
ms.technology: "cpp-ide"
author: "corob-msft"
ms.author: "corob"
@@ -311,9 +312,9 @@ Finally, attach the preprocessed repro files (*filename*.i and *modulename*.i) a
### Link repros
-A *Link repro* is the linker-generated contents of a directory specified by the **link\_repro** environment variable. It contains build artifacts that collectively demonstrate a problem that occurs at link time. Examples include a backend crash involving Link-Time Code Generation (LTCG), or a linker crash. These build artifacts are the ones needed as linker input so that the problem can be reproduced. A Link repro can be created easily by using this environment variable. It enables the linker's built-in repro generation capability.
+A *link repro* is the linker-generated contents of a directory, specified either by the **link\_repro** environment variable, or as an argument to the [/LINKREPRO](../build/reference/linkrepro.md) linker option. It contains build artifacts that collectively demonstrate a problem that occurs at link time. Examples include a backend crash involving Link-Time Code Generation (LTCG), or a linker crash. These build artifacts are the ones needed as linker input so the problem can be reproduced. A link repro can be created easily by using this environment variable. It enables the linker's built-in repro generation capability.
-#### To generate a Link repro
+#### To generate a link repro using the link_repro environment variable
1. Capture the command-line arguments used to build your repro, as described in [To report the contents of the command line](#to-report-the-contents-of-the-command-line).
@@ -321,9 +322,9 @@ A *Link repro* is the linker-generated contents of a directory specified by the
1. In the developer command prompt console window, change to the directory that contains your repro project.
-1. Enter **mkdir linkrepro** to create a directory for the Link repro.
+1. Enter **mkdir linkrepro** to create a directory named *linkrepro* for the link repro. You can use a different name to capture another link repro.
-1. Enter the command **set link\_repro=linkrepro** to set the **link\_repro** environment variable to the directory you created. If your build is run from a different directory, as is often the case for more complex projects, then set **link\_repro** to the full path to your linkrepro directory instead.
+1. Enter the command **set link\_repro=linkrepro** to set the **link\_repro** environment variable to the directory you created. If your build is run from a different directory, as is often the case for more complex projects, then set **link\_repro** to the full path to your link repro directory instead.
1. To build the repro project in Visual Studio, in the developer command prompt console window, enter the command **devenv**. It ensures that the value of the **link\_repro** environment variable is visible to Visual Studio. To build the project at the command line, use the command-line arguments captured above to duplicate the repro build.
@@ -333,11 +334,23 @@ A *Link repro* is the linker-generated contents of a directory specified by the
1. In the developer command prompt console window, enter the command **set link\_repro=** to clear the **link\_repro** environment variable.
-Finally, package the repro by compressing the entire linkrepro directory into a .zip file or similar and attach it to your report.
+Finally, package the repro by compressing the entire linkrepro directory into a .zip file or similar, and attach it to your report.
+
+The **/LINKREPRO** linker option has the same effect as the **link\_repro** environment variable. You can use the [/LINKREPROTARGET](../build/reference/linkreprotarget.md) option to specify the name to filter on for the generated link repro. To use **/LINKREPROTARGET**, you must also specify the **/OUT** linker option.
+
+#### To generate a link repro using the /LINKREPRO option
+
+1. Create a directory to hold the link repro. We'll refer to the full directory path you create as _directory-path_. Use double quotes around the path if it includes spaces.
+
+1. Add the **/LINKREPRO:**_directory-path_ command to the linker command line. In Visual Studio, open the **Property Pages** dialog for your project. Select the **Configuration Properties** > **Linker** > **Command Line** property page. Then, enter the **/LINKREPRO:**_directory-path_ option in the **Additional Options** box. Choose **OK** to save your changes.
+
+1. Build your repro project, and confirm that the expected problem has occurred.
+
+Finally, package the repro by compressing the entire _directory-path_ link repro directory into a .zip file or similar, and attach it to your report.
### Other repros
-If you can't reduce the problem to a single source file or preprocessed repro, and the problem doesn't require a Link repro, we can investigate an IDE project. All the guidance on how to create a good repro still applies: The code ought to be minimal and self-contained. The problem should occur in our most recent tools, and if relevant, shouldn't be seen in other compilers.
+If you can't reduce the problem to a single source file or preprocessed repro, and the problem doesn't require a link repro, we can investigate an IDE project. All the guidance on how to create a good repro still applies: The code ought to be minimal and self-contained. The problem should occur in our most recent tools, and if relevant, shouldn't be seen in other compilers.
Create your repro as a minimal IDE project, then package it by compressing the entire directory structure into a .zip file or similar and attach it to your report.
diff --git a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md
index 8cdefe6c1a7..ddcca504846 100644
--- a/docs/preprocessor/compiler-warnings-that-are-off-by-default.md
+++ b/docs/preprocessor/compiler-warnings-that-are-off-by-default.md
@@ -6,7 +6,7 @@ ms.assetid: 69809cfb-a38a-4035-b154-283a61938df8
---
# Compiler warnings that are off by default
-The compiler supports warnings that are turned off by default, because most developers don't find them useful. In some cases, they warn about a stylistic choice, or about common idioms in older code. Other warnings are about use of a Microsoft extension to the language. In other cases, they indicate an area where programmers often make incorrect assumptions, which may lead to unexpected or undefined behavior. If enabled, some of these warnings may appear many times in library headers. The C runtime libraries and the C++ standard libraries are intended to emit no warnings only at warning level [/W4](../build/reference/compiler-option-warning-level.md).
+The compiler supports warnings that are turned off by default, because most developers don't find them useful. In some cases, they warn about a stylistic choice, or about common idioms in older code. Other warnings are about use of a Microsoft extension to the language. Some warnings indicate an area where programmers often make incorrect assumptions, which may lead to unexpected or undefined behavior. If all of these warnings are enabled, some of them may appear many times in library headers. The C runtime libraries and the C++ standard libraries are intended to emit no warnings only at warning level [/W4](../build/reference/compiler-option-warning-level.md).
## Enable warnings that are off by default
@@ -81,7 +81,7 @@ The following warnings are turned off by default in Visual Studio 2015 and later
|C4587 (level 1)|'*anonymous_structure*': behavior change: constructor is no longer implicitly called|
|C4588 (level 1)|'*anonymous_structure*': behavior change: destructor is no longer implicitly called|
|[C4596](../error-messages/compiler-warnings/c4596.md) (level 4)|'*identifier*': illegal qualified name in member declaration 14.3 Perm|
-|C4598 (level 1 and level 3)|'#include "*header*"': header number *number* in the precompiled header does not match current compilation at that position 14.3|
+|C4598 (level 1 and level 3)|'#include "*header*"': header number *header-number* in the precompiled header does not match current compilation at that position 14.3|
|C4599 (level 3)|'*option* *path*': command-line argument number *number* does not match pre-compiled header 14.3|
|C4605 (level 1)|'/D*macro*' specified on current command line, but was not specified when precompiled header was built|
|[C4608](../error-messages/compiler-warnings/compiler-warning-level-3-c4608.md) (level 3)|'*union_member*' has already been initialized by another union member in the initializer list, '*union_member*' Perm|
@@ -134,21 +134,21 @@ The following warnings are turned off by default in Visual Studio 2015 and later
|C5029 (level 4)|nonstandard extension used: alignment attributes in C++ apply to variables, data members and tag types only|
|C5031 (level 4)|#pragma warning(pop): likely mismatch, popping warning state pushed in different file 14.1|
|C5032 (level 4)|detected #pragma warning(push) with no corresponding #pragma warning(pop) 14.1|
-|C5034|use of intrinsic '*intrinsic*' causes function *function* to be compiled as guest code 15.3|
-|C5035|use of feature '*feature*' causes function *function* to be compiled as guest code 15.3|
+|C5034|use of intrinsic '*intrinsic*' causes function *function-name* to be compiled as guest code 15.3|
+|C5035|use of feature '*feature*' causes function *function-name* to be compiled as guest code 15.3|
|C5036 (level 1)|varargs function pointer conversion when compiling with /hybrid:x86arm64 '*type1*' to '*type2*' 15.3|
|[C5038](../error-messages/compiler-warnings/c5038.md) (level 4)|data member '*member1*' will be initialized after data member '*member2*' 15.3|
|C5039 (level 4)|'*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. 15.5|
|C5042 (level 3)|'*function*': function declarations at block scope cannot be specified 'inline' in standard C++; remove 'inline' specifier 15.5|
|[C5045](../error-messages/compiler-warnings/c5045.md)|Compiler will insert Spectre mitigation for memory load if /Qspectre switch specified 15.7|
-14.1 This warning is available starting in Visual Studio 2015 Update 1.\\
-14.3 This warning is available starting in Visual Studio 2015 Update 3.\\
-15.3 This warning is available starting in Visual Studio 2017 version 15.3.\\
-15.5 This warning is available starting in Visual Studio 2017 version 15.5.\\
-15.7 This warning is available starting in Visual Studio 2017 version 15.7.\\
-15.8 This warning is available starting in Visual Studio 2017 version 15.8.\\
-16.0 This warning is available starting in Visual Studio 2019 RTM.\\
+14.1 This warning is available starting in Visual Studio 2015 Update 1.
+14.3 This warning is available starting in Visual Studio 2015 Update 3.
+15.3 This warning is available starting in Visual Studio 2017 version 15.3.
+15.5 This warning is available starting in Visual Studio 2017 version 15.5.
+15.7 This warning is available starting in Visual Studio 2017 version 15.7.
+15.8 This warning is available starting in Visual Studio 2017 version 15.8.
+16.0 This warning is available starting in Visual Studio 2019 RTM.
Perm This warning is off unless the [/permissive-](../build/reference/permissive-standards-conformance.md) compiler option is set.
## Warnings off by default in earlier versions
diff --git a/docs/toc.yml b/docs/toc.yml
index 9b6c3d33b7b..12ede66c3e9 100644
--- a/docs/toc.yml
+++ b/docs/toc.yml
@@ -409,6 +409,8 @@
href: build/reference/vcxproj-file-structure.md
- name: Example project file
href: build/reference/project-files.md
+ - name: .vcxproj.filters file structure
+ href: build/reference/vcxproj-filters-files.md
- name: C++ project property pages
expanded: false
items:
@@ -794,6 +796,8 @@
href: build/reference/zf.md
- name: /Zg (Generate function prototypes)
href: build/reference/zg-generate-function-prototypes.md
+ - name: "/ZH (Hash algorithm for checksum in debug info)"
+ href: build/reference/zh.md
- name: /Zl (Omit default library name)
href: build/reference/zl-omit-default-library-name.md
- name: /Zm (Specify precompiled header memory allocation limit)
@@ -952,6 +956,10 @@
href: build/reference/largeaddressaware-handle-large-addresses.md
- name: /LIBPATH (Additional libpath)
href: build/reference/libpath-additional-libpath.md
+ - name: /LINKREPRO (Link repro directory name)
+ href: build/reference/linkrepro.md
+ - name: /LINKREPROTARGET (Link repro file name)
+ href: build/reference/linkreprotarget.md
- name: /LTCG (Link-time code generation)
href: build/reference/ltcg-link-time-code-generation.md
- name: /MACHINE (Specify target platform)
@@ -1521,6 +1529,8 @@
href: ide/writing-and-refactoring-code-cpp.md
- name: Navigate C++ code
href: ide/navigate-code-cpp.md
+ - name: Set your C++ coding preferences
+ href: ide/how-to-set-preferences.md
- name: Collaborate using Live Share for C++
href: ide/live-share-cpp.md
- name: Change signature