diff --git a/.markdownlint.json b/.markdownlint.json
new file mode 100644
index 0000000000..936a59e0e8
--- /dev/null
+++ b/.markdownlint.json
@@ -0,0 +1,12 @@
+{
+ "default": true,
+ "MD002": false,
+ "DOCSMD006": false,
+ "MD013": false,
+ "MD024": { "siblings_only": true },
+ "MD025": { "front_matter_title": "" },
+ "MD026": false,
+ "MD028": false,
+ "MD038": false,
+ "MD033": { "allowed_elements": ["a", "br", "em", "strong", "sub", "sup"] }
+}
\ No newline at end of file
diff --git a/.openpublishing.publish.config.json b/.openpublishing.publish.config.json
index 6867ee793e..87f6e7c300 100644
--- a/.openpublishing.publish.config.json
+++ b/.openpublishing.publish.config.json
@@ -7,7 +7,10 @@
"build_output_subfolder": "vcppdocs",
"locale": "en-us",
"monikers": [],
- "moniker_ranges": [">= vs-2015"],
+ "moniker_ranges": [
+ ">= vs-2015"
+ ],
+ "xref_query_tags": ["/dotnet", "/uwp/api"],
"open_to_public_contributors": true,
"type_mapping": {
"Conceptual": "Content",
@@ -56,5 +59,8 @@
}
},
"need_generate_pdf": false,
- "need_generate_intellisense": false
-}
\ No newline at end of file
+ "need_generate_intellisense": false,
+ "docs_build_engine": {
+ "name": "docfx_v3"
+ }
+}
diff --git a/.openpublishing.redirection.json b/.openpublishing.redirection.json
index b1a30518f6..9332cbbbb4 100644
--- a/.openpublishing.redirection.json
+++ b/.openpublishing.redirection.json
@@ -1,13174 +1,13419 @@
{
- "redirections": [
- {
- "source_path": "docs/cpp-conformance-improvements-2017.md",
- "redirect_url": "/cpp/overview/cpp-conformance-improvements",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/how-to-report-a-problem-with-the-visual-cpp-toolset.md",
- "redirect_url": "/cpp/overview/how-to-report-a-problem-with-the-visual-cpp-toolset",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/overview-of-cpp-development.md",
- "redirect_url": "/cpp/overview/overview-of-cpp-development",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/supported-platforms-visual-cpp.md.md",
- "redirect_url": "/cpp/overview/supported-platforms-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/visual-cpp-help-and-community.md",
- "redirect_url": "/cpp/overview/visual-cpp-help-and-community",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/visual-cpp-in-visual-studio.md",
- "redirect_url": "/cpp/overview/visual-cpp-in-visual-studio",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/visual-cpp-language-conformance.md",
- "redirect_url": "/cpp/overview/visual-cpp-language-conformance",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/visual-cpp-samples.md",
- "redirect_url": "/cpp/overview//visual-cpp-samples",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/what-s-new-for-visual-cpp-in-visual-studio.md",
- "redirect_url": "/cpp/overview/what-s-new-for-visual-cpp-in-visual-studio",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/navigating-the-class-structure-visual-cpp.md",
- "redirect_url": "/cpp/ide/navigate-code-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/visual-cpp-tools-and-features-in-visual-studio-editions.md",
- "redirect_url": "/cpp/overview/visual-cpp-tools-and-features-in-visual-studio-editions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/vcpkg.md",
- "redirect_url": "/cpp/build/vcpkg",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/universal-windows-apps-cpp.md",
- "redirect_url": "/cpp/cppcx/universal-windows-apps-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/adding-files-to-an-empty-win32-applications.md",
- "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-an-empty-windows-desktop-application.md",
- "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/win32-application-wizard.md",
- "redirect_url": "/cpp/windows/windows-desktop-wizard",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/creating-a-console-application.md",
- "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/application-settings-win-32-project-wizard.md",
- "redirect_url": "/cpp/windows/windows-desktop-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/console-applications-in-visual-cpp.md",
- "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/walkthrough-creating-and-using-a-static-library-cpp.md",
- "redirect_url": "/cpp/build/walkthrough-creating-and-using-a-static-library-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/assembler/arm/index.md",
- "redirect_url": "/cpp/assembler/arm/arm-assembler-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/index.md",
- "redirect_url": "/cpp/assembler/masm/microsoft-macro-assembler-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/inline/index.md",
- "redirect_url": "/cpp/assembler/inline/inline-assembler",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/index.md",
- "redirect_url": "/cpp/assembler/masm/microsoft-macro-assembler-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-fatal-errors.md",
- "redirect_url": "/cpp/assembler/masm/ml-fatal-error-a1000",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-nonfatal-errors.md",
- "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2004",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2000-a2049.md",
- "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2004",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2050-a2099.md",
- "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2050",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2100-a2149.md",
- "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2107",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2150-a2199.md",
- "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2189",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-nonfatal-errors-A2200-A2901.md",
- "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2206",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/ml-warnings.md",
- "redirect_url": "/cpp/assembler/masm/ml-warning-a4004",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/operators-masm.md",
- "redirect_url": "/cpp/assembler/masm/operators-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/assembler/masm/run-time-operators.md",
- "redirect_url": "/cpp/assembler/masm/operator-equal-masm-run-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/index.md",
- "redirect_url": "/cpp/atl/atl-com-desktop-components",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/understanding-backus-nauer-form-bnf-syntax.md",
- "redirect_url": "/cpp/atl/understanding-backus-naur-form-bnf-syntax",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/atl/which-atl-classes-facilitate-activex-control-containment-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/what-is-the-atl-control-hosting-api-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/what-is-atlaxwin100-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/when-do-i-need-to-call-atlaxwininit-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/what-is-a-host-object-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/can-i-host-more-than-one-control-in-a-single-window-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/can-i-reuse-a-host-window-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/when-do-i-need-to-call-atlaxwinterm-q.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/hosting-activex-controls-using-atl-axhost.md",
- "redirect_url": "/cpp/atl/atl-control-containment-faq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/reference/index.md",
- "redirect_url": "/cpp/atl/reference/atl-classes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/reference/atl-archetypes.md",
- "redirect_url": "/cpp/atl/reference/worker-archetype",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/reference/atl-structures.md",
- "redirect_url": "/cpp/atl/reference/atl-classes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl/reference/patlmodule.md",
- "redirect_url": "/cpp/atl/reference/atl-global-variables",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/index.md",
- "redirect_url": "/cpp/atl-mfc-shared/atl-mfc-shared-classes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/current-time-automation-classes.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/current-time-general-purpose-classes.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/date-and-time-automation-support.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/date-and-time-database-support.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/date-and-time-general-purpose-classes.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/date-and-time-systemtime-support.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/elapsed-time-automation-classes.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/elapsed-time-general-purpose-classes.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/formatting-time-automation-classes.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/formatting-time-values-general-purpose-classes.md",
- "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/atl-mfc-shared/reference/index.md",
- "redirect_url": "/cpp/atl-mfc-shared/reference/classes-shared-by-mfc-and-atl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/building-c-cpp-programs.md",
- "redirect_url": "/cpp/build/projects-and-build-systems-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/batch-mode-rules.md",
- "redirect_url": "/cpp/build/reference/batch-mode-rules",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/command-macros-and-options-macros.md",
- "redirect_url": "/cpp/build/reference/command-macros-and-options-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/command-modifiers.md",
- "redirect_url": "/cpp/build/reference/command-modifiers",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/commands-in-a-makefile.md",
- "redirect_url": "/cpp/build/reference/commands-in-a-makefile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/comments-in-a-makefile.md",
- "redirect_url": "/cpp/build/reference/comments-in-a-makefile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/contents-of-a-makefile.md",
- "redirect_url": "/cpp/build/reference/contents-of-a-makefile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/creating-inline-file-text.md",
- "redirect_url": "/cpp/build/reference/creating-inline-file-text",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/cumulative-dependencies.md",
- "redirect_url": "/cpp/build/reference/cumulative-dependencies",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/defining-a-rule.md",
- "redirect_url": "/cpp/build/reference/defining-a-rule",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/defining-an-nmake-macro.md",
- "redirect_url": "/cpp/build/reference/defining-an-nmake-macro",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/dependency-side-effects.md",
- "redirect_url": "/cpp/build/reference/dependency-side-effects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/dependents.md",
- "redirect_url": "/cpp/build/reference/dependents",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/description-blocks.md",
- "redirect_url": "/cpp/build/reference/description-blocks",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/dot-directives.md",
- "redirect_url": "/cpp/build/reference/dot-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/environment-variable-macros.md",
- "redirect_url": "/cpp/build/reference/environment-variable-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/executing-a-program-in-preprocessing.md",
- "redirect_url": "/cpp/build/reference/executing-a-program-in-preprocessing",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/exit-codes-from-nmake.md",
- "redirect_url": "/cpp/build/reference/running-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/exit-codes-from-nmake.md",
- "redirect_url": "/cpp/build/reference/running-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/expressions-in-makefile-preprocessing.md",
- "redirect_url": "/cpp/build/reference/expressions-in-makefile-preprocessing",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/filename-macros.md",
- "redirect_url": "/cpp/build/reference/filename-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/filename-parts-syntax.md",
- "redirect_url": "/cpp/build/reference/filename-parts-syntax",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/inference-rules.md",
- "redirect_url": "/cpp/build/reference/inference-rules",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/inferred-dependents-and-rules.md",
- "redirect_url": "/cpp/build/reference/inferred-dependents-and-rules",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/inferred-dependents.md",
- "redirect_url": "/cpp/build/reference/inferred-dependents",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/inline-files-in-a-makefile.md",
- "redirect_url": "/cpp/build/reference/inline-files-in-a-makefile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/long-filenames-in-a-makefile.md",
- "redirect_url": "/cpp/build/reference/long-filenames-in-a-makefile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/macro-substitution.md",
- "redirect_url": "/cpp/build/reference/macro-substitution",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/macros-and-nmake.md",
- "redirect_url": "/cpp/build/reference/macros-and-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/makefile-preprocessing-directives.md",
- "redirect_url": "/cpp/build/reference/makefile-preprocessing-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/makefile-preprocessing-operators.md",
- "redirect_url": "/cpp/build/reference/makefile-preprocessing-operators",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/makefile-preprocessing.md",
- "redirect_url": "/cpp/build/reference/expressions-in-makefile-preprocessing",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/msbuild-visual-cpp-overview.md",
- "redirect_url": "/cpp/build/reference/msbuild-visual-cpp-overview",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/multiple-inline-files.md",
- "redirect_url": "/cpp/build/reference/multiple-inline-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/multiple-targets.md",
- "redirect_url": "/cpp/build/reference/multiple-targets",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/nmake-options.md",
- "redirect_url": "/cpp/build/reference/running-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/nmake-options.md",
- "redirect_url": "/cpp/build/reference/running-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/nmake-reference.md",
- "redirect_url": "/cpp/build/reference/nmake-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/null-and-undefined-macros.md",
- "redirect_url": "/cpp/build/reference/null-and-undefined-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/precedence-in-inference-rules.md",
- "redirect_url": "/cpp/build/reference/precedence-in-inference-rules",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/precedence-in-macro-definitions.md",
- "redirect_url": "/cpp/build/reference/precedence-in-macro-definitions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/predefined-rules.md",
- "redirect_url": "/cpp/build/reference/predefined-rules",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/profile-guided-optimization-in-the-performance-and-diagnostics-hub.md",
- "redirect_url": "/cpp/build/profile-guided-optimizations",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/pseudotargets.md",
- "redirect_url": "/cpp/build/reference/pseudotargets",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/recursion-macros.md",
- "redirect_url": "/cpp/build/reference/recursion-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reusing-inline-files.md",
- "redirect_url": "/cpp/build/reference/reusing-inline-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/running-nmake.md",
- "redirect_url": "/cpp/build/reference/running-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/sample-makefile.md",
- "redirect_url": "/cpp/build/reference/sample-makefile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/search-paths-for-dependents.md",
- "redirect_url": "/cpp/build/reference/search-paths-for-dependents",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/search-paths-in-rules.md",
- "redirect_url": "/cpp/build/reference/search-paths-in-rules",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/special-characters-in-a-makefile.md",
- "redirect_url": "/cpp/build/reference/special-characters-in-a-makefile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/special-characters-in-macros.md",
- "redirect_url": "/cpp/build/reference/special-characters-in-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/special-nmake-macros.md",
- "redirect_url": "/cpp/build/reference/special-nmake-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/specifying-an-inline-file.md",
- "redirect_url": "/cpp/build/reference/specifying-an-inline-file",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/targets-in-multiple-description-blocks.md",
- "redirect_url": "/cpp/build/reference/targets-in-multiple-description-blocks",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/targets.md",
- "redirect_url": "/cpp/build/reference/multiple-targets",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/tools-ini-and-nmake.md",
- "redirect_url": "/cpp/build/reference/running-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/tools-ini-and-nmake.md",
- "redirect_url": "/cpp/build/reference/running-nmake",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/unwind-data-for-exception-handling-debugger-support.md",
- "redirect_url": "/cpp/build/exception-handling-x64",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/using-an-nmake-macro.md",
- "redirect_url": "/cpp/build/reference/using-an-nmake-macro",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/where-to-define-macros.md",
- "redirect_url": "/cpp/build/reference/where-to-define-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/advanced-manifest-tool.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/general-manifest-tool-configuration-properties.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/input-and-output-manifest-tool.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/isolated-com-manifest-tool.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/floating-point-optimization.md",
- "redirect_url": "/cpp/build/reference/fp-specify-floating-point-behavior",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-language/index.md",
- "redirect_url": "/cpp/c-language/c-language-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cloud/index.md",
- "redirect_url": "/cpp/cloud/cloud-and-web-programming-in-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/attributes2.md",
- "redirect_url": "/cpp/cpp/attributes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/character-sets2.md",
- "redirect_url": "/cpp/cpp/character-sets",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/index.md",
- "redirect_url": "/cpp/cpp/cpp-language-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/types-of-linkage.md",
- "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/linkage-in-names-with-file-scope.md",
- "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/linkage-in-names-with-class-scope.md",
- "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/linkage-in-names-with-block-scope.md",
- "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/names-with-no-linkage.md",
- "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/template-friends.md",
- "redirect_url": "/cpp/cpp/templates-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/using-extern-to-specify-linkage.md",
- "redirect_url": "/cpp/cpp/extern-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/using-structured-exception-handling-with-cpp.md",
- "redirect_url": "/cpp/cpp/exception-handling-differences",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cpp/support-for-cpp11-14-17-features-modern-cpp.md",
- "redirect_url": "/cpp/visual-cpp-language-conformance",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cppcx/index.md",
- "redirect_url": "/cpp/cppcx/visual-c-language-reference-c-cx",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cppcx/operator-subtracttype-hat.md",
- "redirect_url": "/cpp/cppcx/operator-type-hat",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cppcx/operator-subtractwindows-ui-xaml-interop-typename.md",
- "redirect_url": "/cpp/cppcx/operator-windows-ui-xaml-interop-typename",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/cppcx/uwp-development.md",
- "redirect_url": "/cpp/cppcx/universal-windows-apps-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/flag-directives.md",
- "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#flags",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/index.md",
- "redirect_url": "/cpp/c-runtime-library/c-run-time-library-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/precision-specification.md",
- "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#precision",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/printf-type-field-characters.md",
- "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/printf-width-specification.md",
- "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#width",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/index.md",
- "redirect_url": "/cpp/c-runtime-library/crt-alphabetical-function-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/itoa.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/itoa-i64toa-ui64toa-itow-i64tow-ui64tow.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/itoa-s-i64toa-s-ui64toa-s-itow-s-i64tow-s-ui64tow-s.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-s-itow-s",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/ldiv-lldiv.md",
- "redirect_url": "/cpp/c-runtime-library/reference/div",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/ltoa.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/ltoa-ltow.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/ltoa-s-ltow-s.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-s-itow-s",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/cos-cosf-cosl-cosh-coshf-coshl.md",
- "redirect_url": "/cpp/c-runtime-library/reference/cos-cosf-cosl.md",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/sin-sinf-sinl-sinh-sinhf-sinhl.md",
- "redirect_url": "/cpp/c-runtime-library/reference/sin-sinf-sinl.md",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/tan-tanf-tanl-tanh-tanhf-tanhl.md",
- "redirect_url": "/cpp/c-runtime-library/reference/tan-tanf-tanl.md",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/ultoa.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/ultoa-s-ultow-s.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-s-itow-s",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/reference/ultoa-ultow.md",
- "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/c-runtime-library/size-specification.md",
- "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/get-started/2017/tutorial-console-cpp.md",
- "redirect_url": "/cpp/get-started/tutorial-console-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/get-started/2019/tutorial-console-cpp.md",
- "redirect_url": "/cpp/get-started/tutorial-console-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/get-started/index.yml",
- "redirect_url": "/cpp/get-started/tutorial-console-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/adding-references-in-visual-cpp-projects.md",
- "redirect_url": "/cpp/build/adding-references-in-visual-cpp-projects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/advanced-manifest-tool.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/atl-program-or-control-source-and-header-files.md",
- "redirect_url": "/cpp/build/reference/atl-program-or-control-source-and-header-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/c-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/c-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/cmake-tools-for-visual-cpp.md",
- "redirect_url": "/cpp/build/cmake-projects-in-visual-studio",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/get-started-linux-cmake.md",
- "redirect_url": "/cpp/build/get-started-linux-cmake",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/customize-cmake-settings.md",
- "redirect_url": "/cpp/build/customize-cmake-settings",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/configure-cmake-debugging-sessions.md",
- "redirect_url": "/cpp/build/cconfigure-cmake-debugging-sessions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/cmakesettings-reference.md",
- "redirect_url": "/cpp/build/cmakesettings-reference.md",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/cmake-predefined-configuration-reference.md",
- "redirect_url": "/cpp/build/cmake-predefined-configuration-reference",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/code-visual-cpp.md",
- "redirect_url": "/cpp/build/floating-point-support-for-older-code-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/command-line-property-pages.md",
- "redirect_url": "/cpp/build/reference/command-line-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/common-macros-for-build-commands-and-properties.md",
- "redirect_url": "/cpp/build/reference/common-macros-for-build-commands-and-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/creating-a-makefile-project.md",
- "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/creating-and-managing-visual-cpp-projects.md",
- "redirect_url": "/cpp/build/creating-and-managing-visual-cpp-projects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/custom-build-step-property-page-general.md",
- "redirect_url": "/cpp/build/reference/custom-build-step-property-page-general",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/delimiters-for-visual-cpp-documentation-tags.md",
- "redirect_url": "/cpp/build/reference/delimiters-for-visual-cpp-documentation-tags",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/dot-xml-file-processing.md",
- "redirect_url": "/cpp/build/reference/dot-xml-file-processing",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/example-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/example-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/exception-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/exception-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/file-types-created-for-visual-cpp-projects.md",
- "redirect_url": "/cpp/build/reference/file-types-created-for-visual-cpp-projects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/files-created-for-clr-projects.md",
- "redirect_url": "/cpp/build/reference/files-created-for-clr-projects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/formatting-the-output-of-a-custom-build-step-or-build-event.md",
- "redirect_url": "/cpp/build/formatting-the-output-of-a-custom-build-step-or-build-event",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/general-manifest-tool-configuration-properties.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/getting-started-with-cpp-in-visual-studio.md",
- "redirect_url": "/cpp/overview/getting-started-with-cpp-in-visual-studio",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/general-property-page-file.md",
- "redirect_url": "/cpp/build/reference/general-property-page-file",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/general-property-page-project.md",
- "redirect_url": "/cpp/build/reference/general-property-page-project",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/help-files-html-help.md",
- "redirect_url": "/cpp/build/reference/help-files-html-help",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/help-files-winhelp.md",
- "redirect_url": "/cpp/build/reference/help-files-winhelp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/hint-files.md",
- "redirect_url": "/cpp/build/reference/hint-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/hlsl-property-pages-advanced.md",
- "redirect_url": "/cpp/build/reference/hlsl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/hlsl-property-pages-general.md",
- "redirect_url": "/cpp/build/reference/hlsl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/hlsl-property-pages-output-files.md",
- "redirect_url": "/cpp/build/reference/hlsl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/hlsl-property-pages.md",
- "redirect_url": "/cpp/build/reference/hlsl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/how-to-create-a-cpp-project-from-existing-code.md",
- "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/how-to-organize-project-output-files-for-builds.md",
- "redirect_url": "/cpp/build/how-to-organize-project-output-files-for-builds",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/ide-and-tools-for-visual-cpp-development.md",
- "redirect_url": "/cpp/overview-of-cpp-development",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/include-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/include-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/input-and-output-manifest-tool.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/isolated-com-manifest-tool.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/linker-property-pages.md",
- "redirect_url": "/cpp/build/reference/linker-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/list-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/list-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/managed-resources-property-page.md",
- "redirect_url": "/cpp/build/reference/managed-resources-property-page",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/manifest-tool-property-pages.md",
- "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/mfc-program-or-control-source-and-header-files.md",
- "redirect_url": "/cpp/build/reference/mfc-program-or-control-source-and-header-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/midl-property-pages-advanced.md",
- "redirect_url": "/cpp/build/reference/midl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/midl-property-pages-general.md",
- "redirect_url": "/cpp/build/reference/midl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/midl-property-pages-output.md",
- "redirect_url": "/cpp/build/reference/midl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/midl-property-pages.md",
- "redirect_url": "/cpp/build/reference/midl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/nmake-property-page.md",
- "redirect_url": "/cpp/build/reference/nmake-property-page",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/non-msbuild-projects.md",
- "redirect_url": "/cpp/build/open-folder-projects-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/cppproperties-schema-reference.md",
- "redirect_url": "/cpp/build/cppproperties-schema-reference",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/tasks-vs-json-schema-reference-cpp.md",
- "redirect_url": "/cpp/build/tasks-vs-json-schema-reference-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/para-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/para-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/param-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/param-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/paramref-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/paramref-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/permission-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/permission-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/precompiled-header-files.md",
- "redirect_url": "/cpp/build/creating-precompiled-header-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/project-and-solution-files.md",
- "redirect_url": "/cpp/build/reference/project-and-solution-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/project-files.md",
- "redirect_url": "/cpp/build/reference/project-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/property-page-xml-files.md",
- "redirect_url": "/cpp/build/reference/property-page-xml-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/property-pages-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/property-pages-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/recommended-tags-for-documentation-comments-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/recommended-tags-for-documentation-comments-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/remarks-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/remarks-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/resource-files-cpp.md",
- "redirect_url": "/cpp/build/reference/resource-files-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/resources-property-pages.md",
- "redirect_url": "/cpp/build/reference/resources-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/returns-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/returns-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/see-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/see-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/seealso-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/seealso-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/specifying-build-events.md",
- "redirect_url": "/cpp/build/specifying-build-events",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/specifying-custom-build-tools.md",
- "redirect_url": "/cpp/build/specifying-custom-build-tools",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/summary-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/summary-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/troubleshooting-build-customizations.md",
- "redirect_url": "/cpp/build/troubleshooting-build-customizations",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/understanding-custom-build-steps-and-build-events.md",
- "redirect_url": "/cpp/build/understanding-custom-build-steps-and-build-events",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/using-visual-cpp-add-new-item-templates.md",
- "redirect_url": "/cpp/build/reference/using-visual-cpp-add-new-item-templates",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/value-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/value-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/vcpp-directories-property-page.md",
- "redirect_url": "/cpp/build/reference/vcpp-directories-property-page",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/vcxproj-file-structure.md",
- "redirect_url": "/cpp/build/reference/vcxproj-file-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/visual-cpp-project-types.md",
- "redirect_url": "/cpp/build/reference/visual-cpp-project-types",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio.md",
- "redirect_url": "/cpp/dotnet/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/web-references-property-page.md",
- "redirect_url": "/cpp/build/reference/web-references-property-page",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/working-with-project-properties.md",
- "redirect_url": "/cpp/build/working-with-project-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/xdcmake-reference.md",
- "redirect_url": "/cpp/build/reference/xdcmake-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/xml-data-generator-tool-property-page.md",
- "redirect_url": "/cpp/build/reference/xml-data-generator-tool-property-page",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/xml-document-generator-tool-property-pages.md",
- "redirect_url": "/cpp/build/reference/xml-document-generator-tool-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/xml-documentation-visual-cpp.md",
- "redirect_url": "/cpp/build/reference/xml-documentation-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/how-to-enable-intellisense-for-makefile-projects.md",
- "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/makefile-project-wizard.md",
- "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/application-settings-makefile-project-wizard.md",
- "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/add-class-dialog-box.md",
- "redirect_url": "/cpp/ide/adding-a-class-visual-cpp#add-class-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/add-class-from-activex-control-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-class-from-an-activex-control-visual-cpp#add-class-from-activex-control-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/generic-cpp-class-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-generic-cpp-class#generic-c-class-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/add-member-function-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-member-function-visual-cpp#add-member-function-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/add-member-variable-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-member-variable-visual-cpp#add-member-variable-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/dialog-box-controls-and-variable-types.md",
- "redirect_url": "/cpp/ide/adding-a-member-variable-visual-cpp#dialog-box-controls-and-variable-types",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/add-method-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-method-visual-cpp#add-method-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/idl-attributes-add-method-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-method-visual-cpp#idl-attributes-add-method-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/names-add-property-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-property-visual-cpp#names-add-property-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/idl-attributes-add-property-wizard.md",
- "redirect_url": "/cpp/ide/adding-a-property-visual-cpp#idl-attributes-add-property-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/stock-properties.md",
- "redirect_url": "/cpp/ide/adding-a-property-visual-cpp#stock-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/add-event-wizard.md",
- "redirect_url": "/cpp/ide/adding-an-event-visual-cpp#add-event-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/event-handler-wizard.md",
- "redirect_url": "/cpp/ide/adding-an-event-handler-visual-cpp#event-handler-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/editing-a-com-interface.md",
- "redirect_url": "/cpp/ide/creating-a-com-interface-visual-cpp#edit-a-com-interface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/implement-connection-point-wizard.md",
- "redirect_url": "/cpp/ide/implementing-a-connection-point-visual-cpp#implement-connection-point-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/implement-interface-wizard.md",
- "redirect_url": "/cpp/ide/implementing-an-interface-visual-cpp#implement-interface-wizard",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorbase-close.md",
- "redirect_url": "/cpp/data/oledb/caccessorbase-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorbase-gethaccessor.md",
- "redirect_url": "/cpp/data/oledb/caccessorbase-class#geth",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorbase-getnumaccessors.md",
- "redirect_url": "/cpp/data/oledb/caccessorbase-class#getnum",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorbase-isautoaccessor.md",
- "redirect_url": "/cpp/data/oledb/caccessorbase-class#isauto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorbase-releaseaccessors.md",
- "redirect_url": "/cpp/data/oledb/caccessorbase-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorrowset-members.md",
- "redirect_url": "/cpp/data/oledb/caccessorrowset-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorrowset-methods.md",
- "redirect_url": "/cpp/data/oledb/caccessorrowset-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorrowset-bind.md",
- "redirect_url": "/cpp/data/oledb/caccessorrowset-class#bind",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorrowset-caccessorrowset.md",
- "redirect_url": "/cpp/data/oledb/caccessorrowset-class#caccessorrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorrowset-close.md",
- "redirect_url": "/cpp/data/oledb/caccessorrowset-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorrowset-freerecordmemory.md",
- "redirect_url": "/cpp/data/oledb/caccessorrowset-class#freerecordmemory",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/caccessorrowset-getcolumninfo.md",
- "redirect_url": "/cpp/data/oledb/caccessorrowset-class#getcolumninfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/carrayrowset-carrayrowset.md",
- "redirect_url": "/cpp/data/oledb/carrayrowset-class#carrayrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/carrayrowset-m-nrowsread.md",
- "redirect_url": "/cpp/data/oledb/carrayrowset-class#nrowsread",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/carrayrowset-operator.md",
- "redirect_url": "/cpp/data/oledb/carrayrowset-class#operator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/carrayrowset-snapshot.md",
- "redirect_url": "/cpp/data/oledb/carrayrowset-class#snapshot",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbookmark-cbookmark.md",
- "redirect_url": "/cpp/data/oledb/cbookmark-class#cbookmark",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbookmark-getbuffer.md",
- "redirect_url": "/cpp/data/oledb/cbookmark-class#getbuffer",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbookmark-getsize.md",
- "redirect_url": "/cpp/data/oledb/cbookmark-class#getsize",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbookmark-operator-equal.md",
- "redirect_url": "/cpp/data/oledb/cbookmark-class#operator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbookmark-setbookmark.md",
- "redirect_url": "/cpp/data/oledb/cbookmark-class#setbookmark",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-addrefrows.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#addrefrows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-cbulkrowset.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#cbulkrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-movefirst.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movefirst",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-movelast.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movelast",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-movenext.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movenext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-moveprev.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#moveprev",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-movetobookmark.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movetobookmark",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-movetoratio.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movetoratio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-releaserows.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#releaserows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cbulkrowset-setrows.md",
- "redirect_url": "/cpp/data/oledb/cbulkrowset-class#setrows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-close.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-create.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#create",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-createcommand.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#createcommand",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-getnextresult.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#getnextresult",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-getparameterinfo.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#getparameterinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-open.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#open",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-prepare.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#prepare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-releasecommand.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#releasecommand",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-setparameterinfo.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#setparameterinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccommand-unprepare.md",
- "redirect_url": "/cpp/data/oledb/ccommand-class#unprepare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-cdataconnection.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#cdataconnection",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-copy.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-open.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#open",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-opennewsession.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#opennewsession",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-operator-bool.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_bool",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-operator-bool-ole-db.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_bool_ole",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-operator-cdatasource-amp.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_cdata_amp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-operator-cdatasource-star.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_cdata_star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-operator-csession-amp.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_csession_amp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdataconnection-operator-csession-star.md",
- "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_csession_star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-close.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-getinitializationstring.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#getinitializationstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-getproperties.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#getproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-getproperty.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#getproperty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-open.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#open",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-openfromfilename.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#openfromfilename",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-openfrominitializationstring.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#openfrominitializationstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-openwithpromptfilename.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#openwithpromptfilename",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdatasource-openwithservicecomponents.md",
- "redirect_url": "/cpp/data/oledb/cdatasource-class#openwithservicecomponents",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdberrorinfo-getallerrorinfo.md",
- "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#getallerrorinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdberrorinfo-getbasicerrorinfo.md",
- "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#getbasicerrorinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdberrorinfo-getcustomerrorobject.md",
- "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#getcustomerrorobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdberrorinfo-geterrorinfo.md",
- "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#geterrorinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdberrorinfo-geterrorparameters.md",
- "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#geterrorparameters",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdberrorinfo-geterrorrecords.md",
- "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#geterrorrecords",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropidset-addpropertyid.md",
- "redirect_url": "/cpp/data/oledb/cdbpropidset-class#addpropertyid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropidset-cdbpropidset.md",
- "redirect_url": "/cpp/data/oledb/cdbpropidset-class#cdbpropidset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropidset-operator-equal.md",
- "redirect_url": "/cpp/data/oledb/cdbpropidset-class#op_equal",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropidset-setguid.md",
- "redirect_url": "/cpp/data/oledb/cdbpropidset-class#setguid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropset-addproperty.md",
- "redirect_url": "/cpp/data/oledb/cdbpropset-class#addproperty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropset-cdbpropset.md",
- "redirect_url": "/cpp/data/oledb/cdbpropset-class#cdbpropset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropset-operator-equal.md",
- "redirect_url": "/cpp/data/oledb/cdbpropset-class#op_equal",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdbpropset-setguid.md",
- "redirect_url": "/cpp/data/oledb/cdbpropset-class#setguid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-addbindentry.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#addbindentry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-cdynamicaccessor.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#cdynamicaccessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-close.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getblobhandling.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getblobhandling",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getblobsizelimit.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getblobsizelimit",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getbookmark.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getbookmark",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getcolumncount.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumncount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getcolumnflags.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumnflags",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getcolumninfo.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumninfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getcolumnname.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumnname",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getcolumntype.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumntype",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getlength.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getlength",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getordinal.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getordinal",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getstatus.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-getvalue.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-setblobhandling.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setblobhandling",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-setblobsizelimit.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setblobsizelimit",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-setlength.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setlength",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-setstatus.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicaccessor-setvalue.md",
- "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-cdynamicparameteraccessor.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#cdynamicparameteraccessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparam.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparam",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamcount.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamio.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamlength.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamlength",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamname.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamname",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamstatus.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamstring.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamtype.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamtype",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparam.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparam",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparamlength.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparamlength",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparamstatus.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparamstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparamstring.md",
- "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparamstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicstringaccessor-getstring.md",
- "redirect_url": "/cpp/data/oledb/cdynamicstringaccessor-class#getstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cdynamicstringaccessor-setstring.md",
- "redirect_url": "/cpp/data/oledb/cdynamicstringaccessor-class#setstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumerator-find.md",
- "redirect_url": "/cpp/data/oledb/cenumerator-class#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumerator-getmoniker.md",
- "redirect_url": "/cpp/data/oledb/cenumerator-class#getmoniker",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumerator-open.md",
- "redirect_url": "/cpp/data/oledb/cenumerator-class#open",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumeratoraccessor-m-bisparent.md",
- "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#bisparent",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumeratoraccessor-m-ntype.md",
- "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#ntype",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumeratoraccessor-m-szdescription.md",
- "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#szdescription",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumeratoraccessor-m-szname.md",
- "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#szname",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cenumeratoraccessor-m-szparsename.md",
- "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#szparsename",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cmanualaccessor-addbindentry.md",
- "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#addbindentry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cmanualaccessor-addparameterentry.md",
- "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#addparameterentry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cmanualaccessor-createaccessor.md",
- "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#createaccessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cmanualaccessor-createparameteraccessor.md",
- "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#createparameteraccessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crestrictions-open.md",
- "redirect_url": "/cpp/data/oledb/crestrictions-class#open",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-addrefrows.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#addrefrows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-close.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-compare.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-crowset.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#crowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-delete.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#delete",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-findnextrow.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#findnextrow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-getapproximateposition.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#getapproximateposition",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-getdata.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#getdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-getdatahere.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#getdatahere",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-getoriginaldata.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#getoriginaldata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-getrowstatus.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#getrowstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-insert.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-issamerow.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#issamerow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-movefirst.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#movefirst",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-movelast.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#movelast",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-movenext.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#movenext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-moveprev.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#moveprev",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-movetobookmark.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#movetobookmark",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-movetoratio.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#movetoratio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-releaserows.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#releaserows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-setdata.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#setdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-undo.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#undo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-update.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#update",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowset-updateall.md",
- "redirect_url": "/cpp/data/oledb/crowset-class#updateall",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csession-abort.md",
- "redirect_url": "/cpp/data/oledb/csession-class#abort",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csession-close.md",
- "redirect_url": "/cpp/data/oledb/csession-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csession-commit.md",
- "redirect_url": "/cpp/data/oledb/csession-class#commit",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csession-gettransactioninfo.md",
- "redirect_url": "/cpp/data/oledb/csession-class#gettransactioninfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csession-open.md",
- "redirect_url": "/cpp/data/oledb/csession-class#open",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csession-starttransaction.md",
- "redirect_url": "/cpp/data/oledb/csession-class#starttransaction",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cstreamrowset-close.md",
- "redirect_url": "/cpp/data/oledb/cstreamrowset-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cstreamrowset-cstreamrowset.md",
- "redirect_url": "/cpp/data/oledb/cstreamrowset-class#cstreamrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ctable-open.md",
- "redirect_url": "/cpp/data/oledb/ctable-class#open",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cxmlaccessor-getxmlcolumndata.md",
- "redirect_url": "/cpp/data/oledb/cxmlaccessor-class#getxmlcolumndata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cxmlaccessor-getxmlrowdata.md",
- "redirect_url": "/cpp/data/oledb/cxmlaccessor-class#getxmlrowdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetnotifyimpl-onfieldchange.md",
- "redirect_url": "/cpp/data/oledb/irowsetnotifyimpl-class#onfieldchange",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetnotifyimpl-onrowchange.md",
- "redirect_url": "/cpp/data/oledb/irowsetnotifyimpl-class#onrowchange",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetnotifyimpl-onrowsetchange.md",
- "redirect_url": "/cpp/data/oledb/irowsetnotifyimpl-class#onrowsetchange",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cassertions-cassertioninfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#assertion",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccatalogs-ccataloginfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#catalog",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccharactersets-ccharactersetinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#characterset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccheckconstraints-ccheckconstraintinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#checkconstraint",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccollations-ccollationinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#collation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccolumndomainusage-ccolumndomainusageinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#columndomainusage",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccolumnprivileges-ccolumnprivilegeinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#columnprivilege",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ccolumns-ccolumnsinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#columns",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cconstraintcolumnusage-cconstraintcolumnusageinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#constraintcolumnusage",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cconstrainttableusage-cconstrainttableusageinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#constrainttableusage",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cforeignkeys-cforeignkeysinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#foreignkeys",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cindexes-cindexinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#index",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ckeycolumns-ckeycolumninfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#keycolumn",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cprimarykeys-cprimarykeyinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#primarykey",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cprocedurecolumns-cprocedurecolumninfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#procedurecolumn",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cprocedureparameters-cprocedureparaminfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#procedureparam",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cprocedures-cprocedureinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#procedure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cprovidertypes-cproviderinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#provider",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/creferentialconstraints-creferentialconstraintinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#referentialconstraint",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cschemata-cschematainfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#schemata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csqllanguages-csqllanguageinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#sqllanguage",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cstatistics-cstatisticinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#statistic",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ctableconstraints-ctableconstraintinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#tableconstraint",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ctableprivileges-ctableprivilegeinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#tableprivilege",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ctables-ctableinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#table",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ctranslations-ctranslationinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#translation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cusageprivileges-cusageprivilegeinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#usageprivilege",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cviewcolumnusage-cviewcolumninfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#viewcolumn",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cviews-cviewinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#view",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cviewtableusage-cviewtableinfo.md",
- "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#viewtable",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/atltraceerrorrecords.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#atltraceerrorrecords",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-accessor.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_accessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-accessor-map.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_accessor_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-column-map.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_column_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-param-map.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_param_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-entry.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-entry-length.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-entry-length-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry_length_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-entry-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-name.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-name-length.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-name-length-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name_length_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/blob-name-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/bookmark-entry.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#bookmark_entry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-ex.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ex",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-length.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-length-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_length_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-ps.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-ps-length.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-ps-length-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps_length_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-ps-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-type.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-entry-type-size.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_type_size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-ex.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ex",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-length.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-length-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_length_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-ps.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-ps-length.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-ps-length-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps_length_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-ps-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-type.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-type-ps.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type_ps",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-type-size.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type_size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/column-name-type-status.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type_status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/define-command.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#define_command",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/define-command-ex.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#define_command_ex",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-accessor.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_accessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-accessor-map.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_accessor_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-column-map.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_column_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-param-map.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_param_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/set-param-type.md",
- "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#set_param_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-getcolumninfo.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#getcolumninfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-getcommandfromid.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#getcommandfromid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-m-rgrowdata.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#rgrowdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-m-strcommandtext.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#strcommandtext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-m-strindextext.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#strindextext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-namefromdbid.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#namefromdbid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-setcommandtext.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#setcommmandtext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/crowsetimpl-validatecommandid.md",
- "redirect_url": "/cpp/data/oledb/crowsetimpl-class#validatecommandid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csimplerow-addrefrow.md",
- "redirect_url": "/cpp/data/oledb/csimplerow-class#addrefrow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csimplerow-compare.md",
- "redirect_url": "/cpp/data/oledb/csimplerow-class#compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csimplerow-csimplerow.md",
- "redirect_url": "/cpp/data/oledb/csimplerow-class#csimplerow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csimplerow-m-dwref.md",
- "redirect_url": "/cpp/data/oledb/csimplerow-class#dwref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csimplerow-m-irowset.md",
- "redirect_url": "/cpp/data/oledb/csimplerow-class#irowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/csimplerow-releaserow.md",
- "redirect_url": "/cpp/data/oledb/csimplerow-class#releaserow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cutlprops-getpropvalue.md",
- "redirect_url": "/cpp/data/oledb/cutlprops-class#getpropvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cutlprops-isvalidvalue.md",
- "redirect_url": "/cpp/data/oledb/cutlprops-class#isvalidvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cutlprops-oninterfacerequested.md",
- "redirect_url": "/cpp/data/oledb/cutlprops-class#oninterfacerequested",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cutlprops-onpropertychanged.md",
- "redirect_url": "/cpp/data/oledb/cutlprops-class#onpropertychanged",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/cutlprops-setpropvalue.md",
- "redirect_url": "/cpp/data/oledb/cutlprops-class#setpropvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iaccessorimpl-addrefaccessor.md",
- "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#addrefaccessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iaccessorimpl-createaccessor.md",
- "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#createaccessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iaccessorimpl-getbindings.md",
- "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#getbindings",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iaccessorimpl-iaccessorimpl.md",
- "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#iaccessorimpl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iaccessorimpl-releaseaccessor.md",
- "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#releaseaccessor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icolumnsinfoimpl-getcolumninfo.md",
- "redirect_url": "/cpp/data/oledb/icolumnsinfoimpl-class#getcolumninfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icolumnsinfoimpl-mapcolumnids.md",
- "redirect_url": "/cpp/data/oledb/icolumnsinfoimpl-class#mapcolumnids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-cancel.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#cancel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-cancelexecution.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#cancelexecution",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-createrowset.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#createrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-execute.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#execute",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-getdbsession.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#getdbsession",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-icommandimpl.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#icommandimpl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-m-bcancel.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#bcancel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-m-bcancelwhenexecuting.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#bcancelwhenexecuting",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandimpl-m-bisexecuting.md",
- "redirect_url": "/cpp/data/oledb/icommandimpl-class#bisexecuting",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandpropertiesimpl-getproperties.md",
- "redirect_url": "/cpp/data/oledb/icommandpropertiesimpl-class#getproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandpropertiesimpl-setproperties.md",
- "redirect_url": "/cpp/data/oledb/icommandpropertiesimpl-class#setproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandtextimpl-getcommandtext.md",
- "redirect_url": "/cpp/data/oledb/icommandtextimpl-class#getcommandtext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandtextimpl-m-strcommandtext.md",
- "redirect_url": "/cpp/data/oledb/icommandtextimpl-class#strcommandtext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/icommandtextimpl-setcommandtext.md",
- "redirect_url": "/cpp/data/oledb/icommandtextimpl-class#setcommandtext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iconverttypeimpl-canconvert.md",
- "redirect_url": "/cpp/data/oledb/iconverttypeimpl-class#canconvert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbcreatecommandimpl-createcommand.md",
- "redirect_url": "/cpp/data/oledb/idbcreatecommandimpl-class#createcommand",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbcreatesessionimpl-createsession.md",
- "redirect_url": "/cpp/data/oledb/idbcreatesessionimpl-class#createsession",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbinitializeimpl-idbinitializeimpl.md",
- "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#idbinitializeimpl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbinitializeimpl-initialize.md",
- "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#initialize",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbinitializeimpl-m-dwstatus.md",
- "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#dwstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbinitializeimpl-m-pcutlpropinfo.md",
- "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#pcutlpropinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbinitializeimpl-uninitialize.md",
- "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#uninitialize",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbpropertiesimpl-getproperties.md",
- "redirect_url": "/cpp/data/oledb/idbpropertiesimpl-class#getproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbpropertiesimpl-getpropertyinfo.md",
- "redirect_url": "/cpp/data/oledb/idbpropertiesimpl-class#getpropertyinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbpropertiesimpl-setproperties.md",
- "redirect_url": "/cpp/data/oledb/idbpropertiesimpl-class#setproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbschemarowsetimpl-checkrestrictions.md",
- "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#checkrestrictions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbschemarowsetimpl-createschemarowset.md",
- "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#createschemarowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbschemarowsetimpl-getrowset.md",
- "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#getrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbschemarowsetimpl-getschemas.md",
- "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#getschemas",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/idbschemarowsetimpl-setrestrictions.md",
- "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#setrestrictions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-adderrorrecord.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#adderrorrecord",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-getbasicerrorinfo.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#getbasicerrorinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-getcustomerrorobject.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#getcustomerrorobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrordescriptionstring.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrordescriptionstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorguid.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorguid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorhelpcontext.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorhelpcontext",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorhelpfile.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorhelpfile",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorinfo.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorinfo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorparameters.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorparameters",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-getrecordcount.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#getrecordcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorsource.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorsource",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/ierrorrecordsimpl-m-rgerrors.md",
- "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#rgerrors",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetinfoimpl-getproperties.md",
- "redirect_url": "/cpp/data/oledb/irowsetinfoimpl-class#getproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetinfoimpl-getreferencedrowset.md",
- "redirect_url": "/cpp/data/oledb/irowsetinfoimpl-class#getreferencedrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetinfoimpl-getspecification.md",
- "redirect_url": "/cpp/data/oledb/irowsetinfoimpl-class#getspecification",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetlocateimpl-compare.md",
- "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetlocateimpl-getrowsat.md",
- "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#getrowsat",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetlocateimpl-getrowsbybookmark.md",
- "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#getrowsbybookmark",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetlocateimpl-hash.md",
- "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#hash",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetlocateimpl-m-rgbookmarks.md",
- "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#rgbookmarks",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetnotifycp-fire-onfieldchange.md",
- "redirect_url": "/cpp/data/oledb/irowsetnotifycp-class#onfieldchange",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetnotifycp-fire-onrowchange.md",
- "redirect_url": "/cpp/data/oledb/irowsetnotifycp-class#onrowchange",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetnotifycp-fire-onrowsetchange.md",
- "redirect_url": "/cpp/data/oledb/irowsetnotifycp-class#onrowsetchange",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-getpendingrows.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#getpendingrows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-getoriginaldata.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#getoriginaldata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-getrowstatus.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#getrowstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-isupdateallowed.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#isupdateallowed",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-m-mapcacheddata.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#mapcacheddata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-setdata.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#setdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-undo.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#undo",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetupdateimpl-update.md",
- "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#update",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/isessionpropertiesimpl-getproperties.md",
- "redirect_url": "/cpp/data/oledb/isessionpropertiesimpl-class#getproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/isessionpropertiesimpl-setproperties.md",
- "redirect_url": "/cpp/data/oledb/isessionpropertiesimpl-class#setproperties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/igetdatasourceimpl-getdatasource.md",
- "redirect_url": "/cpp/data/oledb/igetdatasourceimpl-class#getdatasource",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iopenrowsetimpl-createrowset.md",
- "redirect_url": "/cpp/data/oledb/iopenrowsetimpl-class#createrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/iopenrowsetimpl-openrowset.md",
- "redirect_url": "/cpp/data/oledb/iopenrowsetimpl-class#openrowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetchangeimpl-deleterows.md",
- "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#deleterows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetchangeimpl-flushdata.md",
- "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#flushdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetchangeimpl-insertrow.md",
- "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#insertrow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetchangeimpl-setdata.md",
- "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#setdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetcreatorimpl-setsite.md",
- "redirect_url": "/cpp/data/oledb/irowsetcreatorimpl-class#setsite",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetidentityimpl-issamerow.md",
- "redirect_url": "/cpp/data/oledb/irowsetidentityimpl-class#issamerow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-addrefrows.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#addrefrows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-createrow.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#createrow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-getdata.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#getdata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-getdbstatus.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#getdbstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-getnextrows.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#getnextrows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-irowsetimpl.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#irowsetimpl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-m-bcanfetchback.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#bcanfetchback",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-m-bcanscrollback.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#bcanscrollback",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-m-breset.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#breset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-m-irowset.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#irowset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-m-rgrowhandles.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#rgrowhandles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-refrows.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#refrows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-releaserows.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#releaserows",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-restartposition.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#restartposition",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/irowsetimpl-setdbstatus.md",
- "redirect_url": "/cpp/data/oledb/irowsetimpl-class#setdbstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-property-set.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_property_set",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-property-set-ex.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_property_set_ex",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-propset-map.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_propset_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-provider-column-map.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_provider_column_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/begin-schema-map.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_schema_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/chain-property-set.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#chain_property_set",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-property-set.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_property_set",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-propset-map.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_propset_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-provider-column-map.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_provider_column_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/end-schema-map.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_schema_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/provider-column-entry.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/provider-column-entry-gn.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_gn",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/provider-column-entry-fixed.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_fixed",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/provider-column-entry-length.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/provider-column-entry-str.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_str",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/provider-column-entry-type-length.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_type_length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/provider-column-entry-wstr.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_wstr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/property-info-entry.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#property_info_entry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/property-info-entry-ex.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#property_info_entry_ex",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/property-info-entry-value.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#property_info_entry_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/data/oledb/schema-entry.md",
- "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#schema_entry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/index.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#collection_adapter",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-base-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#base",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-collection-adapter-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#collection_adapter_collection_adapter",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-mapped-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#mapped_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/collection-adapter-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/make-collection-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#make_collection",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/range-adapter-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#range_adapter",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/range-adapter-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#range_adapter_op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/range-adapter-range-adapter-stl-clr.md",
- "redirect_url": "/cpp/dotnet/adapter-stl-clr#range_adapter_range_adapter",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/binary-delegate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#binary_delegate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/binary-delegate-noreturn-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#binary_delegate_noreturn",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/binary-negate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#negate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/bind1st-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#bind1st",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/bind2nd-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#bind2nd",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/binder1st-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#binder1st",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/binder2nd-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#binder2nd",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/divides-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#divides",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/equal-to-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#equal_to",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/greater-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#greater",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-migrate-to-clr-safe-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/pure-and-verifiable-code-cpp-cli",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/mixed-pure-and-verifiable-feature-comparison-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/pure-and-verifiable-code-cpp-cli",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/greater-equal-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#greater_equal",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/less-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#less",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/less-equal-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#less_equal",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/logical-and-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#logical_and",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/logical-not-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#logical_not",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/logical-or-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#logical_or",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/minus-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#minus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/modulus-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#modulus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiplies-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#multiplies",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/negate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#negate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/not-equal-to-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#not_equal_to",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/not1-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#not1",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/not2-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#not2",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/plus-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#plus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/unary-delegate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#unary_delegate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/unary-delegate-noreturn-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#unary_delegate_noreturn",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/unary-negate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/functional-stl-clr#unary_negate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/adjacent-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#adjacent_find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/binary-search-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#binary_search",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/copy-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/copy-backward-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#copy_backward",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/count-if-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#count_if",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/equal-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#equal",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/fill-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#fill",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/fill-n-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#fill_n",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/find-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find_end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/find-first-of-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find_first_of",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/find-if-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find_if",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/for-each-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#for_each",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/generate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#generate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/generate-n-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#generate_n",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/includes-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#includes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/inplace-merge-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#inplace_merge",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/iter-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#iter_swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lexicographical-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#lexicographical_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/make-heap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#make_heap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/max-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#max",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/max-element-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#max_element",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/merge-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#merge",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/min-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#min",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/min-element-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#min_element",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/mismatch-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#mismatch",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/next-permutation-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#next_permuatation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/nth-element-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#nth_element",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/partial-sort-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#partial_sort",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/partial-sort-copy-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#partial_sort_copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/partition-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#partition",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pop-heap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#pop_heap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/prev-permutation-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#prev_permutation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/push-heap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#push_heap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/random-shuffle-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#random_shuffle",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/remove-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/rremove-copy-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove_copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/remove-copy-if-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove_copy_if",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/remove-if-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove_if",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/replace-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/replace-copy-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace_copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/replace-copy-if-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace_copy_if",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/replace-if-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace_if",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/reverse-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#reverse",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/reverse-copy-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#reverse_copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/rotate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#rotate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/rotate-copy-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#rotate_copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/search-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#search",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/search-n-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#search_n",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-difference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_difference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-intersection-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_intersection",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-symmetric-difference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_symmetric_difference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-union-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_union",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/sort-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#sort",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/sort-heap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#sort_heap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stable-partition-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#stable_partition",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stable-sort-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#stable_sort",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/swap-ranges-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#swap_ranges",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/transform-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#transform",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/unique-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#unique",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/unique-copy-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#unique_copy",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/algorithm-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-at-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#at",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-back-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#back_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-deque-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#deque",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-front-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#front_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-operator-inequality-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-operator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#operator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-pop-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#pop_back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-pop-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#pop_front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-push-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#push_back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-push-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#push_front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-resize-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#resize",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/deque-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-deque-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-deque-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-assign-deque-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-deque-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-deque-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-deque-stl-clr.md",
- "redirect_url": "/cpp/dotnet/deque-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-bucket-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#bucket_count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-hash-delegate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#hash_delegate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-hash-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#hash_map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-hasher-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#hasher",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-mapped-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#mapped_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-max-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#max_load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-operator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#op",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-rehash-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#rehash",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-map-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-map-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-bucket-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#bucket_count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-hash-delegate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#hash_delegate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-hash-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#hash_multimap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-hasher-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#hasher",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-mapped-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#mapped_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-max-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#max_load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#op",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-rehash-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#rehash",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multimap-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-bucket-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-hash-delegate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#hash_delegate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-hash-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#hash_multiset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-hasher-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#hasher",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-max-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#max_load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#op",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-rehash-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#rehash",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-multiset-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-bucket-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#bucket_count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-hash-delegate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#hash_delegate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-hash-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#hash_set",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-hasher-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#hasher",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-max-load-factor-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#max_load_factor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#op",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-rehash-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#rehash",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/hash-set-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/hash-set-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-back-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#back_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-front-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#front_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-list-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#list",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-merge-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#merge",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-pop-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#pop_back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-pop-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#pop_front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-push-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#push_back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-push-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#push_front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-remove-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#remove",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-remove-if-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#remove_if",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-resize-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#resize",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-reverse-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#reverse",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-sort-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#sort",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-splice-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#splice",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-unique-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#unique",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/list-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-list-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-list-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-list-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-list-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-list-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-list-stl-clr.md",
- "redirect_url": "/cpp/dotnet/list-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#map",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-mapped-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#mapped_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-operator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/map-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-map-stl-clr.md",
- "redirect_url": "/cpp/dotnet/map-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-mapped-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#mapped_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#multimap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multimap-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-multimap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#multiset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/multiset-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-multiset-stl-clr.md",
- "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/accumulate-stl-clr.md",
- "redirect_url": "/cpp/dotnet/numeric-stl-clr#accumulate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/adjacent-difference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/numeric-stl-clr#adjacent_difference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/inner-product-stl-clr.md",
- "redirect_url": "/cpp/dotnet/numeric-stl-clr#inner_product",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/partial-sum-stl-clr.md",
- "redirect_url": "/cpp/dotnet/numeric-stl-clr#partial_sum",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-container-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#container_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-get-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#get_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-pop-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#pop",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-priority-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#priority_queue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-push-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#push",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-top-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#top",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-top-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#top_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/priority-queue-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-back-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#back_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-container-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#container_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-front-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#front_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-get-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#get_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-pop-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#pop",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-push-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#push",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-queue-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#queue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/queue-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/queue-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-count-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#count",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-equal-range-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#equal_range",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-find-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#find",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#generic_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-key-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#key_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-key-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#key_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-key-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#key_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-lower-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#lower_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-make-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#make_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-set-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#set",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-upper-bound-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#upper_bound",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-value-comp-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#value_comp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-value-compare-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#value_compare",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/set-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/set-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-stack-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-stack-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-stack-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-stack-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-stack-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-stack-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-container-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#container_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-get-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#get_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-pop-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#pop",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-push-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#push",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-stack-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#stack",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-top-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#top",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-top-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#top_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/stack-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/stack-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/make-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#make_pair",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#pair",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-first-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#first",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-first-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#first_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-pair-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#pair_pair",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-second-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#second",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-second-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#second_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/pair-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/utility-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-inequality-vector-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op_neq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-than-vector-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op_lt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-less-or-equal-vector-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op_lteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-equality-vector-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op_eq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-than-vector-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op_gt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/operator-greater-or-equal-vector-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op_gteq",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-at-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#at",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-back-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#back_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-begin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-capacity-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#capacity",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-clear-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#clear",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-const-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#const_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-const-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#const_reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-const-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#const_reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-difference-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#difference_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-empty-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#empty",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-end-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-erase-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#erase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-front-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#front",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-front-item-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#front_item",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-generic-container-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_container",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-generic-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-generic-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_revere_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-generic-value-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-insert-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#insert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-operator-assign-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op_as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-operator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#op",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-pop-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#pop_back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-push-back-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#push_back",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-rbegin-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#rbegin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-reference-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-rend-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#rend",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-reserve-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#reserve",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-resize-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#resize",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-reverse-iterator-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#reverse_iterator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-size-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#size",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-size-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#size_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-swap-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-to-array-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#to_array",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-value-type-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#value_type",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/vector-vector-stl-clr.md",
- "redirect_url": "/cpp/dotnet/vector-stl-clr#vector",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-use-regular-expressions-for-simple-matching-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_simple",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-use-regular-expressions-to-extract-data-fields-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_extract",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-use-regular-expressions-to-rearrange-data-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_rearrange",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-use-regular-expressions-to-search-and-replace-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_search",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-use-regular-expressions-to-validate-data-formatting-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_validate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-parse-strings-using-the-split-method-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#parse_split",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-parse-strings-using-regular-expressions-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#parse_regex",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-enumerate-files-in-a-directory-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#enumerate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-monitor-file-system-changes-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#monitor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-read-a-binary-file-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#read_binary",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-read-a-text-file-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#read_text",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-retrieve-file-information-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#retrieve",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-write-a-binary-file-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#write_binary",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-write-a-text-file-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#write_text",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-convert-image-file-formats-with-the-dotnet-framework.md",
- "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#convert",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-display-images-with-the-dotnet-framework.md",
- "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#display",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-draw-shapes-with-the-dotnet-framework.md",
- "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#draw",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-rotate-images-with-the-dotnet-framework.md",
- "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#rotate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-determine-if-shutdown-has-started-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#determine_shutdown",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-determine-the-user-interactive-state-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#determine_user",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-read-data-from-the-windows-registry-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#read_registry",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-read-windows-performance-counters-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#read_performance",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-retrieve-text-from-the-clipboard-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_text",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-retrieve-the-dotnet-framework-version-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_dotnet",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-retrieve-the-current-username-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_current",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-retrieve-the-local-machine-name-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_local",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-retrieve-the-windows-version-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_version",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-retrieve-time-elapsed-since-startup-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-store-text-in-the-clipboard-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#store_text",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-write-data-to-the-windows-registry-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#write_data",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-marshal-ansi-strings-for-adonet-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_ansi",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-marshal-bstr-strings-for-adonet-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_bstr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-marshal-unicode-strings-for-adonet-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_unicode",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-marshal-a-variant-for-adonet-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_variant",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-marshal-a-safearray-for-adonet-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_safearray",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-implement-is-and-as-csharp-keywords-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/interoperability-with-other-dotnet-languages-cpp-cli#implement_isas",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-implement-the-lock-csharp-keyword-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/interoperability-with-other-dotnet-languages-cpp-cli#implement_lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-consume-a-csharp-indexer-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/interoperability-with-other-dotnet-languages-cpp-cli#consume_indexer",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/managed-types-and-the-main-function-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#main_functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/dotnet-framework-equivalents-to-cpp-native-types-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#dotnet",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/version-issues-for-value-types-nested-in-native-types-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#version_issues",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-test-for-equality-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#test_equality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-diagnose-and-fix-assembly-compatibility-problems-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#diagnose_fix",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-implement-a-plug-in-component-architecture-using-reflection-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/reflection-cpp-cli#implement",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-enumerate-data-types-in-assemblies-using-reflection-cpp-cli.md.md",
- "redirect_url": "/cpp/dotnet/reflection-cpp-cli#enumerate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/cpp-cli-migration-primer.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/outline-of-changes-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/language-keywords-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/managed-types-cpp-cl.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/declaration-of-a-managed-class-type.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/declaration-of-a-clr-reference-class-object.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/declaration-of-a-clr-array.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/changes-in-constructor-initialization-order.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/changes-in-destructor-semantics.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/member-declarations-within-a-class-or-interface-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/property-declaration.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/property-index-declaration.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/delegates-and-events.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/sealing-a-virtual-function.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/overloaded-operators.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/changes-to-conversion-operators.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/explicit-override-of-an-interface-member.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/iterating-over-stl-collection-by-using-for-each.md",
- "redirect_url": "/cpp/dotnet/for-each-in",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-iterate-over-arrays-with-for-each.md",
- "redirect_url": "/cpp/dotnet/for-each-in",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-iterate-over-a-generic-collection-with-for-each.md",
- "redirect_url": "/cpp/dotnet/for-each-in",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/how-to-iterate-over-a-user-defined-collection-with-for-each.md",
- "redirect_url": "/cpp/dotnet/for-each-in",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/private-virtual-functions.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/static-const-int-linkage-is-no-longer-literal.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/value-types-and-their-behaviors-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/clr-enum-type.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/implicit-boxing-of-value-types.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/a-tracking-handle-to-a-boxed-value.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/value-type-semantics.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/general-language-changes-cpp-cli.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/string-literal.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/param-array-and-ellipsis.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/typeof-goes-to-t-typeid.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/initializer-lists.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/cast-notation-and-introduction-of-safe-cast-angles.md",
- "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-members.md",
- "redirect_url": "/cpp/dotnet/lock-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-lock.md",
- "redirect_url": "/cpp/dotnet/lock-class#lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-tilde-lock.md",
- "redirect_url": "/cpp/dotnet/lock-class#tilde-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-is-locked.md",
- "redirect_url": "/cpp/dotnet/lock-class#is-locked",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-operator-bool.md",
- "redirect_url": "/cpp/dotnet/lock-class#operator-bool",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-acquire.md",
- "redirect_url": "/cpp/dotnet/lock-class#acquire",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-try-acquire.md",
- "redirect_url": "/cpp/dotnet/lock-class#try-acquire",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-release.md",
- "redirect_url": "/cpp/dotnet/lock-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-operator-equality.md",
- "redirect_url": "/cpp/dotnet/lock-class#operator-equality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/lock-operator-inequality.md",
- "redirect_url": "/cpp/dotnet/lock-class#operator-inequality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/marshal-context-marshal-context.md",
- "redirect_url": "/cpp/dotnet/marshal-context-class#marshal-context",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/marshal-context-tilde-marshal-context.md",
- "redirect_url": "/cpp/dotnet/marshal-context-class#tilde-marshal-context",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/marshal-context-marshal-as.md",
- "redirect_url": "/cpp/dotnet/marshal-context-class#marshal-as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-members.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-ptr.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#ptr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-tilde-ptr.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#tilde-ptr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-attach.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#attach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-createinstance.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#createInstance",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-detach.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#detach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-getinterface.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#getInterface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-queryinterface.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#queryInterface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-release.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-operator-assign.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-operator-arrow.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#operator-arrow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-operator-logical-not.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#operator-logical-not",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/ptr-operator-bool.md",
- "redirect_url": "/cpp/dotnet/com-ptr-class#operator-bool",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/error-messages/compiler-errors-1/index.md",
- "redirect_url": "/cpp/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/error-messages/compiler-errors-2/index.md",
- "redirect_url": "/cpp/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/error-messages/compiler-warnings/index.md",
- "redirect_url": "/cpp/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/error-messages/index.md",
- "redirect_url": "/cpp/error-messages/compiler-errors-1/c-cpp-build-errors",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/error-messages/tool-errors/index.md",
- "redirect_url": "/cpp/error-messages/tool-errors/tool-errors-overview",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/error-messages/tool-errors/resource-compiler-errors-rw1004-through-rw4004.md",
- "redirect_url": "/cpp/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/ide/index.md",
- "redirect_url": "/cpp/ide/ide_and_tools_for_visual_cpp_development",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/building-external-projects.md",
- "redirect_url": "/cpp/build/open-folder-projects-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/redistributing-database-support-files.md",
- "redirect_url": "/cpp/data/data-access-in-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/wizard-support-for-other-languages.md",
- "redirect_url": "/cpp/ide/creating-desktop-projects-by-using-application-wizards",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/specify-project-location-and-source-files.md",
- "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/specify-project-settings-create-new-project-from-existing-code-files-wizard.md",
- "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/specify-debug-configuration-settings.md",
- "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/ide/specify-release-configuration.md",
- "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/intrinsics/index.md",
- "redirect_url": "/cpp/intrinsics/compiler-intrinsics",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/active-documents-on-the-internet.md",
- "redirect_url": "/cpp/mfc/activex-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/afxdll-versions.md",
- "redirect_url": "/cpp/mfc/mfc-library-versions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/an-example-of-the-comments.md",
- "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/decrement-implementation-comment.md",
- "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/decrement-constructors-comment.md",
- "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/decrement-attributes-comment.md",
- "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/decrement-operations-comment.md",
- "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/decrement-overridables-comment.md",
- "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/automatic-linking-of-mfc-library-version.md",
- "redirect_url": "/cpp/mfc/mfc-library-versions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/dynamic-link-library-support.md",
- "redirect_url": "/cpp/mfc/mfc-library-versions#dynamic-link-library-support",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/index.md",
- "redirect_url": "/cpp/mfc/mfc-desktop-applications",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/library-naming-conventions.md",
- "redirect_url": "/cpp/mfc/mfc-library-versions#mfc-static-library-naming-conventions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/abc-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/abcfloat-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/bitmap-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/bitmapinfo-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/button-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#button-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/callback-function-for-cdc-enumobjects.md",
- "redirect_url": "/cpp/mfc/reference/callback-functions-used-by-mfc#enum_objects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/callback-function-for-cdc-graystring.md",
- "redirect_url": "/cpp/mfc/reference/callback-functions-used-by-mfc#graystring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/coloradjustment-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/combo-box-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#combo-box-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/compareitemstruct-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/createstruct-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/callback-function-for-cdc-setabortproc.md",
- "redirect_url": "/cpp/mfc/reference/callback-functions-used-by-mfc#setabortproc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/devnames-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/drawitemstruct-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/edit-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#edit-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/extended-window-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#extended-window-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/filetime-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/frame-window-styles-mfc.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#frame-window-styles-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/index.md",
- "redirect_url": "/cpp/mfc/reference/mfc-classes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/linger-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/list-box-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#list-box-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/logbrush-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/logpen-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/message-box-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#message-box-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/minmaxinfo-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/msg-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/msg-structure1.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/nccalcsize-params-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/paintstruct-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/point-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/point-structure1.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/rect-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/rect-structure1.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/rgndata-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/scroll-bar-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#scroll-bar-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/sockaddr-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/sockaddr-in-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/static-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#static-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/systemtime-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/systemtime-structure1.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/windowplacement-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/window-styles.md",
- "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#window-styles",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/wm-command-message-handler.md",
- "redirect_url": "/cpp/mfc/reference/message-maps-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/windowpos-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/windowpos-structure1.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/xform-structure.md",
- "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/mfc/reference/cacceleratedeceleratetransition-class1.md",
- "redirect_url": "/cpp/mfc/reference/cacceleratedeceleratetransition-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/mfc/unicode-in-mfc.md",
- "redirect_url": "/cpp/mfc/mfc-library-versions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/avoiding-problem-areas-with-multithread-programs.md",
- "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/c-run-time-library-functions-for-thread-control.md",
- "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/compiling-and-linking-multithread-programs.md",
- "redirect_url": "/cpp/parallel/sample-multithread-c-program",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/include-files-for-multithreading.md",
- "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/library-support-for-multithreading.md",
- "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/multithread-programs.md",
- "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/writing-a-multithreaded-win32-program.md",
- "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/contents.md",
- "redirect_url": "/cpp/parallel/openmp/openmp-c-and-cpp-application-program-interface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/openmp-data-types.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/openmp-libraries.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-library-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/amp/index.md",
- "redirect_url": "/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/amp/reference/index.md",
- "redirect_url": "/cpp/parallel/amp/reference/reference-cpp-amp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/concrt/convert-an-openmp-loop-that uses-exception-handling.md",
- "redirect_url": "/cpp/parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/parallel/concrt/index.md",
- "redirect_url": "/cpp/parallel/concrt/concurrency-runtime",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/concrt/reference/index.md",
- "redirect_url": "/cpp/parallel/concrt/reference/reference-concurrency-runtime",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/index.md",
- "redirect_url": "/cpp/parallel/parallel-programming-in-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/index.md",
- "redirect_url": "/cpp/parallel/openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/index.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-libraries",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/copyin.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#copyin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/copyprivate.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#copyprivate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/default-openmp.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#default-openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/firstprivate.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#firstprivate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/if-openmp.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#if-openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/lastprivate.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#lastprivate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/nowait.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#nowait",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/num-threads.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#num-threads",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/ordered-openmp-clauses.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#ordered-openmp-clauses",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/private-openmp.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#private-openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/reduction.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#reduction",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/schedule.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#schedule",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/shared-openmp.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#shared-openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-lock-t.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-nest-lock-t.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/atomic.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#atomic",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/barrier.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#barrier",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/critical.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#critical",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/flush-openmp.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#flush-openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/for-openmp.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#for-openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/master.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#master",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/ordered-openmp-directives.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#ordered-openmp-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/parallel.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#parallel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/sections-openmp.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#sections-openmp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/single.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#single",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/threadprivate.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#threadprivate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-dynamic.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-dynamic",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-nested.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-nested",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-num-threads.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-num-threads",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-schedule.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-schedule",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-destroy-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-destroy-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-destroy-nest-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-destroy-nest-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-dynamic.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-dynamic",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-max-threads.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-max-threads",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-nested.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-nested",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-num-procs.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-num-procs",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-num-threads.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-num-threads",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-thread-num.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-thread-num",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-wtick.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-wtick",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-get-wtime.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-wtime",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-init-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-init-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-init-nest-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-init-nest-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-in-parallel.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-in-parallel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-set-dynamic.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-dynamic",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-set-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-set-nest-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-nest-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-set-nested.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-nested",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-set-num-threads.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-num-threads",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-test-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-test-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-test-nest-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-test-nest-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-unset-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-unset-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/reference/omp-unset-nest-lock.md",
- "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-unset-nest-lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/porting/index.md",
- "redirect_url": "/cpp/porting/visual-cpp-porting-and-upgrading-guide",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/porting/porting-data-applications.md",
- "redirect_url": "/cpp/data/data-access-programming-mfc-atl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/preprocessor/index.md",
- "redirect_url": "/cpp/preprocessor/c-cpp-preprocessor-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/security/index.md",
- "redirect_url": "/cpp/security/security-best-practices-for-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/standard-library/index.md",
- "redirect_url": "/cpp/standard-library/cpp-standard-library-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/standard-library/system-error-typedefs.md",
- "redirect_url": "/cpp/standard-library/system-error-enums#errc",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/text/index.md",
- "redirect_url": "/cpp/text/text-and-strings-in-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/cloud-and-web-programming-in-visual-cpp.md",
- "redirect_url": "/cpp/cloud/cloud-and-web-programming-in-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/cpp-conformance-improvements-2017.md",
- "redirect_url": "/cpp/overview/cpp-conformance-improvements",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/cpp-rest-sdk-codename-casablanca.md",
- "redirect_url": "/cpp/cloud/cpp-rest-sdk-codename-casablanca",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/how-to-report-a-problem-with-the-visual-cpp-toolset.md",
- "redirect_url": "/cpp/overview/how-to-report-a-problem-with-the-visual-cpp-toolset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/how-user-account-control-uac-affects-your-application.md",
- "redirect_url": "/cpp/security/how-user-account-control-uac-affects-your-application",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/index.md",
- "redirect_url": "/cpp/overview/visual-cpp-in-visual-studio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/running-as-a-member-of-the-users-group.md",
- "redirect_url": "/cpp/security/running-as-a-member-of-the-users-group",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/security-best-practices-for-cpp.md",
- "redirect_url": "/cpp/security/security-best-practices-for-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/supported-platforms-visual-cpp.md",
- "redirect_url": "/cpp/overview/supported-platforms-visual-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/visual-cpp-help-and-community.md",
- "redirect_url": "/cpp/overview/visual-cpp-help-and-community",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/visual-cpp-in-visual-studio.md",
- "redirect_url": "/cpp/overview/visual-cpp-in-visual-studio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/visual-cpp-samples.md",
- "redirect_url": "/cpp/overview/visual-cpp-samples",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/top/what-s-new-for-visual-cpp-in-visual-studio.md",
- "redirect_url": "/cpp/overview/what-s-new-for-visual-cpp-in-visual-studio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/index.md",
- "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/accelerator-key-property.md",
- "redirect_url": "/cpp/windows/setting-accelerator-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/accelerator-modifier-property.md",
- "redirect_url": "/cpp/windows/setting-accelerator-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/accelerator-type-property.md",
- "redirect_url": "/cpp/windows/setting-accelerator-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/id-property.md",
- "redirect_url": "/cpp/windows/setting-accelerator-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-an-entry-to-an-accelerator-table.md",
- "redirect_url": "/cpp/windows/editing-accelerator-tables",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-properties-of-multiple-accelerator-keys.md",
- "redirect_url": "/cpp/windows/editing-accelerator-tables",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deleting-an-entry-from-an-accelerator-table.md",
- "redirect_url": "/cpp/windows/editing-accelerator-tables",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-in-an-accelerator-table.md",
- "redirect_url": "/cpp/windows/editing-accelerator-tables",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/finding-an-entry-in-an-accelerator-table.md",
- "redirect_url": "/cpp/windows/editing-accelerator-tables",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/moving-or-copying-an-accelerator-table-entry-to-another-resource-script-file.md",
- "redirect_url": "/cpp/windows/editing-accelerator-tables",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/associating-an-accelerator-key-with-a-menu-item.md",
- "redirect_url": "/cpp/windows/predefined-accelerator-keys",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-new-custom-or-data-resource.md",
- "redirect_url": "/cpp/windows/binary-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-binary-data.md",
- "redirect_url": "/cpp/windows/binary-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/finding-binary-data.md",
- "redirect_url": "/cpp/windows/binary-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/opening-a-resource-for-binary-editing.md",
- "redirect_url": "/cpp/windows/binary-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-multiple-controls.md",
- "redirect_url": "/cpp/windows/adding-a-control-to-a-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/dialog-editor-tab-toolbox.md",
- "redirect_url": "/cpp/windows/adding-a-control-to-a-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/sizing-a-control-while-you-add-it.md",
- "redirect_url": "/cpp/windows/adding-a-control-to-a-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-properties-for-an-activex-control.md",
- "redirect_url": "/cpp/windows/viewing-and-adding-activex-controls-to-a-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/insert-activex-control-dialog-box.md",
- "redirect_url": "/cpp/windows/viewing-and-adding-activex-controls-to-a-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/selecting-multiple-controls.md",
- "redirect_url": "/cpp/windows/selecting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/specifying-the-dominant-control.md",
- "redirect_url": "/cpp/windows/selecting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/aligning-controls-on-a-guide.md",
- "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-and-setting-guides-and-margins.md",
- "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/disabling-guides.md",
- "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/guide-settings-dialog-box.md",
- "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/modifying-the-layout-grid.md",
- "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/arranging-push-buttons-along-the-right-or-bottom-of-a-dialog-box.md",
- "redirect_url": "/cpp/windows/aligning-groups-of-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/centering-controls-in-a-dialog-box.md",
- "redirect_url": "/cpp/windows/aligning-groups-of-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/evening-the-spacing-between-controls.md",
- "redirect_url": "/cpp/windows/aligning-groups-of-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-controls-to-a-dialog-causes-the-dialog-to-no-longer-function.md",
- "redirect_url": "/cpp/windows/troubleshooting-the-dialog-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/using-the-richedit-1-0-control-with-mfc.md",
- "redirect_url": "/cpp/windows/troubleshooting-the-dialog-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/cropping-or-extending-an-entire-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/resizing-an-entire-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/shrinking-or-stretching-an-entire-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/shrinking-or-stretching-part-of-an-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/displaying-or-hiding-the-toolbar-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/text-tool-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/text-tool-font-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-font-of-text-on-an-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-magnification-factor-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/window-panes-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/displaying-or-hiding-the-pixel-grid-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/window-panes-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/custom-color-selector-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/customizing-or-changing-colors-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/load-palette-colors-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/saving-and-loading-different-color-palettes-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/displaying-or-hiding-the-colors-window-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/colors-window-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/new-device-image-type-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/creating-a-device-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/custom-image-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/creating-a-device-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/open-device-image-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/creating-a-device-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/using-the-256-color-palette-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/creating-a-256-color-icon-or-cursor-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/inserting-a-new-menu-between-existing-menus.md",
- "redirect_url": "/cpp/windows/creating-a-menu",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-commands-to-a-menu.md",
- "redirect_url": "/cpp/windows/creating-a-menu",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/connecting-a-pop-up-menu-to-your-application.md",
- "redirect_url": "/cpp/windows/creating-pop-up-menus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/viewing-a-menu-as-a-pop-up-menu.md",
- "redirect_url": "/cpp/windows/creating-pop-up-menus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/moving-and-copying-menus-and-menu-commands.md",
- "redirect_url": "/cpp/windows/selecting-multiple-menus-or-menu-commands",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deleting-menus-and-menu-commands.md",
- "redirect_url": "/cpp/windows/selecting-multiple-menus-or-menu-commands",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/associating-menu-commands-with-status-bar-text-in-mfc-applications.md",
- "redirect_url": "/cpp/windows/associating-a-menu-command-with-an-accelerator-key",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/assigning-access-keys-to-menu-commands.md",
- "redirect_url": "/cpp/windows/associating-a-menu-command-with-an-accelerator-key",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/finding-a-string.md",
- "redirect_url": "/cpp/windows/string-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-or-deleting-a-string.md",
- "redirect_url": "/cpp/windows/string-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/moving-a-string-from-one-resource-file-to-another.md",
- "redirect_url": "/cpp/windows/string-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-properties-of-a-string.md",
- "redirect_url": "/cpp/windows/string-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-caption-property-of-multiple-strings.md",
- "redirect_url": "/cpp/windows/string-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-formatting-or-special-characters-to-a-string.md",
- "redirect_url": "/cpp/windows/string-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/new-toolbar-resource-dialog-box.md",
- "redirect_url": "/cpp/windows/converting-bitmaps-to-toolbars",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-new-toolbar-button.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/moving-a-toolbar-button.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/copying-buttons-from-a-toolbar.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deleting-a-toolbar-button.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/inserting-a-space-between-buttons-on-a-toolbar.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/removing-space-between-buttons-on-a-toolbar.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-properties-of-a-toolbar-button.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/toolbar-button-properties.md",
- "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-a-string-in-a-version-information-resource.md",
- "redirect_url": "/cpp/windows/version-information-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-version-information-for-another-language.md",
- "redirect_url": "/cpp/windows/version-information-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deleting-a-version-information-block.md",
- "redirect_url": "/cpp/windows/version-information-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/accessing-version-information-from-within-your-program.md",
- "redirect_url": "/cpp/windows/version-information-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-properties-of-a-resource.md",
- "redirect_url": "/cpp/windows/viewing-and-editing-resources-in-a-resource-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/previewing-resources.md",
- "redirect_url": "/cpp/windows/viewing-and-editing-resources-in-a-resource-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-a-control-to-a-dialog-box.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-control-properties.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deleting-a-control.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/viewing-and-adding-activex-controls-to-a-dialog-box.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-event-handlers-for-dialog-box-controls.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/default-control-events.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/defining-member-variables-for-dialog-controls.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/specifying-the-location-and-size-of-a-dialog-box.md",
- "redirect_url": "/cpp/windows/testing-a-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/making-controls-the-same-width-height-or-size.md",
- "redirect_url": "/cpp/windows/sizing-individual-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/setting-the-size-of-the-combo-box-and-its-drop-down-list.md",
- "redirect_url": "/cpp/windows/sizing-individual-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/setting-the-width-of-a-horizontal-scroll-bar.md",
- "redirect_url": "/cpp/windows/sizing-individual-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-dialog-box-that-users-cannot-exit.md",
- "redirect_url": "/cpp/windows/creating-a-new-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-names-of-symbol-header-files.md",
- "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-a-symbol-s-numeric-value.md",
- "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/symbol-value-restrictions.md",
- "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/symbol-name-restrictions.md",
- "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/mfc-database-programming-symbols.md",
- "redirect_url": "/cpp/windows/mfc-predefined-symbols",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/mfc-windows-programming-symbols.md",
- "redirect_url": "/cpp/windows/mfc-predefined-symbols",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/resource-symbols-dialog-box.md",
- "redirect_url": "/cpp/windows/viewing-resource-symbols",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/add-resource-dialog-box.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/new-custom-resource-dialog-box.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/resource-view-window.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/resource-includes-dialog-box.md",
- "redirect_url": "/cpp/windows/how-to-include-resources-at-compile-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-specify-include-directories-for-resources.md",
- "redirect_url": "/cpp/windows/how-to-include-resources-at-compile-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-change-the-language-or-condition-of-a-resource-while-copying.md",
- "redirect_url": "/cpp/windows/how-to-copy-resources",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-open-a-manifest-resource.md",
- "redirect_url": "/cpp/windows/manifest-resources",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-open-a-resource-script-file-outside-of-a-project-standalone.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-open-a-resource-script-file-in-text-format.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/grid-settings-dialog-box-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/selecting-foreground-or-background-colors-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/filling-a-bounded-area-of-an-image-with-a-color-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/picking-up-a-color-from-an-image-to-use-elsewhere-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/choosing-a-transparent-or-opaque-background-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/inverting-the-colors-in-a-selection-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/customizing-or-changing-colors-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/saving-and-loading-different-color-palettes-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/colors-window-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-device-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-an-image-for-a-different-display-device-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/copying-a-device-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deleting-a-device-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-transparent-or-inverse-regions-in-device-images.md",
- "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-256-color-icon-or-cursor-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/setting-a-cursor-s-hot-spot-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-submenu.md",
- "redirect_url": "/cpp/windows/creating-a-menu",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-pop-up-menus.md",
- "redirect_url": "/cpp/windows/creating-a-menu",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-new-toolbars.md",
- "redirect_url": "/cpp/windows/toolbar-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/converting-bitmaps-to-toolbars.md",
- "redirect_url": "/cpp/windows/toolbar-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-moving-and-editing-toolbar-buttons.md",
- "redirect_url": "/cpp/windows/toolbar-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-tool-tip-for-a-toolbar-button.md",
- "redirect_url": "/cpp/windows/toolbar-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-add-mfc-support-to-resource-script-files.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/files-affected-by-resource-editing.md",
- "redirect_url": "/cpp/windows/editable-file-types-for-resources",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deleting-unassigned-symbols.md",
- "redirect_url": "/cpp/windows/changing-unassigned-symbols",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/dialog-editor-states-guides-and-grids.md",
- "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/grouping-radio-buttons-on-a-dialog-box.md",
- "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/aligning-groups-of-controls.md",
- "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-the-tab-order-of-controls.md",
- "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-create-a-resource.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-use-resource-templates.md",
- "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-managed-resource-files.md",
- "redirect_url": "/cpp/windows/how-to-copy-resources",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-import-and-export-resources.md",
- "redirect_url": "/cpp/windows/how-to-copy-resources",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/how-to-search-for-symbols-in-resources.md",
- "redirect_url": "/cpp/windows/how-to-include-resources-at-compile-time",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editable-file-types-for-resources.md",
- "redirect_url": "/cpp/windows/resource-files-visual-studio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/manifest-resources.md",
- "redirect_url": "/cpp/windows/resource-files-visual-studio",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/viewing-resource-symbols.md",
- "redirect_url": "/cpp/windows/creating-new-symbols",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/opening-the-resource-editor-for-a-given-symbol.md",
- "redirect_url": "/cpp/windows/creating-new-symbols",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-unassigned-symbols.md",
- "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/including-shared-read-only-or-calculated-symbols.md",
- "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/viewing-and-editing-resources-in-a-resource-editor.md",
- "redirect_url": "/cpp/windows/resource-editors",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/setting-accelerator-properties.md",
- "redirect_url": "/cpp/windows/accelerator-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-accelerator-tables.md",
- "redirect_url": "/cpp/windows/accelerator-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/showing-or-hiding-the-dialog-editor-toolbar.md",
- "redirect_url": "/cpp/windows/dialog-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/switching-between-dialog-box-controls-and-code.md",
- "redirect_url": "/cpp/windows/dialog-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/accelerator-keys-for-the-dialog-editor.md",
- "redirect_url": "/cpp/windows/dialog-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/testing-a-dialog-box.md",
- "redirect_url": "/cpp/windows/creating-a-new-dialog-box",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/custom-controls-in-the-dialog-editor.md",
- "redirect_url": "/cpp/windows/controls-in-dialog-boxes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/troubleshooting-the-dialog-editor.md",
- "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/adding-values-to-a-combo-box-control.md",
- "redirect_url": "/cpp/windows/defining-mnemonics-access-keys",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/selecting-controls.md",
- "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/sizing-individual-controls.md",
- "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/selecting-multiple-menus-or-menu-commands.md",
- "redirect_url": "/cpp/windows/creating-a-menu",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/associating-a-menu-command-with-an-accelerator-key.md",
- "redirect_url": "/cpp/windows/menu-command-properties",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/image-menu-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/toolbar-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/window-panes-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/creating-an-icon-or-other-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/saving-bitmaps-as-gifs-or-jpegs-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/creating-an-icon-or-other-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/converting-an-image-from-one-format-to-another-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/creating-an-icon-or-other-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/drawing-lines-or-closed-figures-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/using-a-drawing-tool-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-custom-brush-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/using-a-drawing-tool-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-parts-of-an-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/flipping-an-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/resizing-an-image-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-an-image-outside-of-a-project-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/changing-image-properties-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/editing-graphical-resources-image-editor-for-icons.md",
- "redirect_url": "/cpp/windows/image-editor-for-icons",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creating-a-menu.md",
- "redirect_url": "/cpp/windows/menu-editor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/activationfactory-activationfactory-constructor.md",
- "redirect_url": "/cpp/windows/activationfactory-class#activationfactory",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/activationfactory-addref-method.md",
- "redirect_url": "/cpp/windows/activationfactory-class#addref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/activationfactory-getiids-method.md",
- "redirect_url": "/cpp/windows/activationfactory-class#getiids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/activationfactory-getruntimeclassname-method.md",
- "redirect_url": "/cpp/windows/activationfactory-class#getruntimeclassname",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/activationfactory-gettrustlevel-method.md",
- "redirect_url": "/cpp/windows/activationfactory-class#gettrustlevel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/activationfactory-queryinterface-method.md",
- "redirect_url": "/cpp/windows/activationfactory-class#queryinterface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/activationfactory-release-method.md",
- "redirect_url": "/cpp/windows/activationfactory-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/argtraits-args-constant.md",
- "redirect_url": "/cpp/windows/argtraits-structure#args",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/argtraitshelper-args-constant.md",
- "redirect_url": "/cpp/windows/argtraitshelper-structure#args",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-asyncbase-constructor.md",
- "redirect_url": "/cpp/windows/asyncbase-class#asyncbase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-cancel-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#cancel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-checkvalidstatefordelegatecall-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#checkvalidstatefordelegatecall",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-checkvalidstateforresultscall-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#checkvalidstateforresultscall",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-close-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-continueasyncoperation-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#continueasyncoperation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-currentstatus-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#currentstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-errorcode-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#errorcode",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-firecompletion-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#firecompletion",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-fireprogress-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#fireprogress",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-get-errorcode-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#get-errorcode",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-get-id-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#get-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-get-status-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#get-status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-getoncomplete-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#getoncomplete",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-getonprogress-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#getonprogress",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-oncancel-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#oncancel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-onclose-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#onclose",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-onstart-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#onstart",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-put-id-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#put-id",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-putoncomplete-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#putoncomplete",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-putonprogress-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#putonprogress",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-start-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#start",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-trytransitiontocompleted-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#trytransitiontocompleted",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/asyncbase-trytransitiontoerror-method.md",
- "redirect_url": "/cpp/windows/asyncbase-class#trytransitiontoerror",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/boolstruct-member-data-member.md",
- "redirect_url": "/cpp/windows/boolstruct-structure#member",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/callback-function-windows-runtime-cpp-template-library.md",
- "redirect_url": "/cpp/windows/callback-function-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/chaininterfaces-cancastto-method.md",
- "redirect_url": "/cpp/windows/chaininterfaces-structure#cancastto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/chaininterfaces-casttounknown-method.md",
- "redirect_url": "/cpp/windows/chaininterfaces-structure#casttounknown",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/chaininterfaces-fillarraywithiid-method.md",
- "redirect_url": "/cpp/windows/chaininterfaces-structure#fillarraywithiid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/chaininterfaces-iidcount-constant.md",
- "redirect_url": "/cpp/windows/chaininterfaces-structure#iidcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/chaininterfaces-verify-method.md",
- "redirect_url": "/cpp/windows/chaininterfaces-structure#verify",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/classfactory-addref-method.md",
- "redirect_url": "/cpp/windows/classfactory-class#addref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/classfactory-classfactory-constructor.md",
- "redirect_url": "/cpp/windows/classfactory-class#classfactory",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/classfactory-lockserver-method.md",
- "redirect_url": "/cpp/windows/classfactory-class#lockserver",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/classfactory-queryinterface-method.md",
- "redirect_url": "/cpp/windows/classfactory-class#queryinterface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/classfactory-release-method.md",
- "redirect_url": "/cpp/windows/classfactory-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-tilde-comptr-destructor.md",
- "redirect_url": "/cpp/windows/comptr-class#tilde-comptr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-as-method.md",
- "redirect_url": "/cpp/windows/comptr-class#as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-asiid-method.md",
- "redirect_url": "/cpp/windows/comptr-class#asiid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-asweak-method.md",
- "redirect_url": "/cpp/windows/comptr-class#asweak",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-attach-method.md",
- "redirect_url": "/cpp/windows/comptr-class#attach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-comptr-constructor.md",
- "redirect_url": "/cpp/windows/comptr-class#comptr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-copyto-method.md",
- "redirect_url": "/cpp/windows/comptr-class#copyto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-detach-method.md",
- "redirect_url": "/cpp/windows/comptr-class#detach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-get-method.md",
- "redirect_url": "/cpp/windows/comptr-class#get",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-getaddressof-method.md",
- "redirect_url": "/cpp/windows/comptr-class#getaddressof",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-internaladdref-method.md",
- "redirect_url": "/cpp/windows/comptr-class#internaladdref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-internalrelease-method.md",
- "redirect_url": "/cpp/windows/comptr-class#internalrelease",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-operator-microsoft-wrl-details-booltype-operator.md",
- "redirect_url": "/cpp/windows/comptr-class#operator-microsoft-wrl-details-booltype",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-operator-ampersand-operator.md",
- "redirect_url": "/cpp/windows/comptr-class#operator-ampersand",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-operator-assign-operator.md",
- "redirect_url": "/cpp/windows/comptr-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-operator-arrow-operator.md",
- "redirect_url": "/cpp/windows/comptr-class#operator-arrow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-ptr-data-member.md",
- "redirect_url": "/cpp/windows/comptr-class#ptr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-releaseandgetaddressof-method.md",
- "redirect_url": "/cpp/windows/comptr-class#releaseandgetaddressof",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-reset.md",
- "redirect_url": "/cpp/windows/comptr-class#reset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-swap-method.md",
- "redirect_url": "/cpp/windows/comptr-class#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-operator-equality-operator.md",
- "redirect_url": "/cpp/windows/comptr-class#operator-equality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptr-operator-inequality-operator.md",
- "redirect_url": "/cpp/windows/comptr-class#operator-inequality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-comptrref-constructor.md",
- "redirect_url": "/cpp/windows/comptrref-class#comptrref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-getaddressof-method.md",
- "redirect_url": "/cpp/windows/comptrref-class#getaddressof",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-operator-interfacetype-star-star-operator.md",
- "redirect_url": "/cpp/windows/comptrref-class#operator-interfacetype-star-star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-operator-t-star-operator.md",
- "redirect_url": "/cpp/windows/comptrref-class#operator-t-star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-operator-void-star-star-operator.md",
- "redirect_url": "/cpp/windows/comptrref-class#operator-void-star-star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-operator-star-operator.md",
- "redirect_url": "/cpp/windows/comptrref-class#operator-star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-operator-equality-operator.md",
- "redirect_url": "/cpp/windows/comptrref-class#operator-equality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-operator-inequality-operator.md",
- "redirect_url": "/cpp/windows/comptrref-class#operator-inequality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrref-releaseandgetaddressof-method.md",
- "redirect_url": "/cpp/windows/comptrref-class#releaseandgetaddressof",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrrefbase-operator-iinspectable-star-star-operator.md",
- "redirect_url": "/cpp/windows/comptrrefbase-class#operator-iinspectable-star-star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrrefbase-operator-iunknown-star-star-operator.md",
- "redirect_url": "/cpp/windows/comptrrefbase-class#operator-iunknown-star-star",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/comptrrefbase-ptr-data-member.md",
- "redirect_url": "/cpp/windows/comptrrefbase-class#ptr",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creatormap-activationid-data-member.md",
- "redirect_url": "/cpp/windows/creatormap-structure#activationid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creatormap-factorycache-data-member.md",
- "redirect_url": "/cpp/windows/creatormap-structure#factorycache",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creatormap-factorycreator-data-member.md",
- "redirect_url": "/cpp/windows/creatormap-structure#factorycreator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/creatormap-servername-data-member.md",
- "redirect_url": "/cpp/windows/creatormap-structure#servername",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsection-tilde-criticalsection-destructor.md",
- "redirect_url": "/cpp/windows/criticalsection-class#tilde-criticalsection",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsection-criticalsection-constructor.md",
- "redirect_url": "/cpp/windows/criticalsection-class#criticalsection",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsection-cs-data-member.md",
- "redirect_url": "/cpp/windows/criticalsection-class#cs",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsection-isvalid-method.md",
- "redirect_url": "/cpp/windows/criticalsection-class#isvalid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsection-lock-method.md",
- "redirect_url": "/cpp/windows/criticalsection-class#lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsection-trylock-method.md",
- "redirect_url": "/cpp/windows/criticalsection-class#trylock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsectiontraits-getinvalidvalue-method.md",
- "redirect_url": "/cpp/windows/criticalsectiontraits-structure#getinvalidvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/criticalsectiontraits-unlock-method.md",
- "redirect_url": "/cpp/windows/criticalsectiontraits-structure#unlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deferrableeventargs-getdeferral-method.md",
- "redirect_url": "/cpp/windows/deferrableeventargs-class#getdeferral",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/deferrableeventargs-invokeallfinished-method.md",
- "redirect_url": "/cpp/windows/deferrableeventargs-class#invokeallfinished",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/dontusenewusemake-operator-new-operator.md",
- "redirect_url": "/cpp/windows/dontusenewusemake-class#operator-new",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/event-class-windows-runtime-cpp-template-library.md",
- "redirect_url": "/cpp/windows/event-class-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/event-event-constructor-windows-runtime-cpp-template-library.md",
- "redirect_url": "/cpp/windows/event-class-wrl#event",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/event-operator-assign-operator.md",
- "redirect_url": "/cpp/windows/event-class-wrl#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-add-method.md",
- "redirect_url": "/cpp/windows/eventsource-class#add",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-addremovelock-data-member.md",
- "redirect_url": "/cpp/windows/eventsource-class#addremovelock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-eventsource-constructor.md",
- "redirect_url": "/cpp/windows/eventsource-class#eventsource",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-getsize-method.md",
- "redirect_url": "/cpp/windows/eventsource-class#getsize",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-invokeall-method.md",
- "redirect_url": "/cpp/windows/eventsource-class#invokeall",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-remove-method.md",
- "redirect_url": "/cpp/windows/eventsource-class#remove",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-targets-data-member.md",
- "redirect_url": "/cpp/windows/eventsource-class#targets",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventsource-targetspointerlock-data-member.md",
- "redirect_url": "/cpp/windows/eventsource-class#targetspointerlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventtargetarray-tilde-eventtargetarray-destructor.md",
- "redirect_url": "/cpp/windows/eventtargetarray-class#tilde-eventtargetarray",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventtargetarray-addtail-method.md",
- "redirect_url": "/cpp/windows/eventtargetarray-class#addtail",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventtargetarray-begin-method.md",
- "redirect_url": "/cpp/windows/eventtargetarray-class#begin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventtargetarray-end-method.md",
- "redirect_url": "/cpp/windows/eventtargetarray-class#end",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventtargetarray-eventtargetarray-constructor.md",
- "redirect_url": "/cpp/windows/eventtargetarray-class#eventtargetarray",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/eventtargetarray-length-method.md",
- "redirect_url": "/cpp/windows/eventtargetarray-class#length",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/factorycache-cookie-data-member.md",
- "redirect_url": "/cpp/windows/factorycache-structure#cookie",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/factorycache-factory-data-member.md",
- "redirect_url": "/cpp/windows/factorycache-structure#factory",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-createglobalinterfacetable-method.md",
- "redirect_url": "/cpp/windows/ftmbase-class#createglobalinterfacetable",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-disconnectobject-method.md",
- "redirect_url": "/cpp/windows/ftmbase-class#disconnectobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-ftmbase-constructor.md",
- "redirect_url": "/cpp/windows/ftmbase-class#ftmbase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-getmarshalsizemax-method.md",
- "redirect_url": "/cpp/windows/ftmbase-class#getmarshalsizemax",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-getunmarshalclass-method.md",
- "redirect_url": "/cpp/windows/ftmbase-class#getunmarshalclass",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-marshalinterface-method.md",
- "redirect_url": "/cpp/windows/ftmbase-class#marshalinterface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-marshaller-data-member.md",
- "redirect_url": "/cpp/windows/ftmbase-class#marshaller",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-releasemarshaldata-method.md",
- "redirect_url": "/cpp/windows/ftmbase-class#releasemarshaldata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/ftmbase-unmarshalinterface-method.md",
- "redirect_url": "/cpp/windows/ftmbase-class#unmarshalinterface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlenulltraits-close-method.md",
- "redirect_url": "/cpp/windows/handlenulltraits-structure#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlenulltraits-getinvalidvalue-method.md",
- "redirect_url": "/cpp/windows/handlenulltraits-structure#getinvalidvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-tilde-handlet-destructor.md",
- "redirect_url": "/cpp/windows/handlet-class#tilde-handlet",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-attach-method.md",
- "redirect_url": "/cpp/windows/handlet-class#attach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-close-method.md",
- "redirect_url": "/cpp/windows/handlet-class#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-detach-method.md",
- "redirect_url": "/cpp/windows/handlet-class#detach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-get-method.md",
- "redirect_url": "/cpp/windows/handlet-class#get",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-handle-data-member.md",
- "redirect_url": "/cpp/windows/handlet-class#handle",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-handlet-constructor.md",
- "redirect_url": "/cpp/windows/handlet-class#handlet",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-internalclose-method.md",
- "redirect_url": "/cpp/windows/handlet-class#internalclose",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-isvalid-method.md",
- "redirect_url": "/cpp/windows/handlet-class#isvalid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handlet-operator-assign-operator.md",
- "redirect_url": "/cpp/windows/handlet-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handletraits-close-method.md",
- "redirect_url": "/cpp/windows/handletraits-structure#close",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/handletraits-getinvalidvalue-method.md",
- "redirect_url": "/cpp/windows/handletraits-structure#getinvalidvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-hstring-constructor.md",
- "redirect_url": "/cpp/windows/hstring-class#hstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-tilde-hstring-destructor.md",
- "redirect_url": "/cpp/windows/hstring-class#tilde-hstring",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-attach-method.md",
- "redirect_url": "/cpp/windows/hstring-class#attach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-copyto-method.md",
- "redirect_url": "/cpp/windows/hstring-class#copyto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-detach-method.md",
- "redirect_url": "/cpp/windows/hstring-class#detach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-get-method.md",
- "redirect_url": "/cpp/windows/hstring-class#get",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-getaddressof-method.md",
- "redirect_url": "/cpp/windows/hstring-class#getaddressof",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-isvalid-method.md",
- "redirect_url": "/cpp/windows/hstring-class#isvalid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-makereference-method.md",
- "redirect_url": "/cpp/windows/hstring-class#makereference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-release-method.md",
- "redirect_url": "/cpp/windows/hstring-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-set-method.md",
- "redirect_url": "/cpp/windows/hstring-class#set",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-operator-assign-operator.md",
- "redirect_url": "/cpp/windows/hstring-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-operator-less-than-operator.md",
- "redirect_url": "/cpp/windows/hstring-class#operator-less-than",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-operator-equality-operator.md",
- "redirect_url": "/cpp/windows/hstring-class#operator-equality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstring-operator-inequality-operator.md",
- "redirect_url": "/cpp/windows/hstring-class#operator-inequality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstringreference-hstringreference-constructor.md",
- "redirect_url": "/cpp/windows/hstringreference-class#hstringreference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstringreference-copyto-method.md",
- "redirect_url": "/cpp/windows/hstringreference-class#copyto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstringreference-get-method.md",
- "redirect_url": "/cpp/windows/hstringreference-class#get",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstringreference-operator-assign-operator.md",
- "redirect_url": "/cpp/windows/hstringreference-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstringreference-operator-less-than-operator.md",
- "redirect_url": "/cpp/windows/hstringreference-class#operator-less-than",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstringreference-operator-equality-operator.md",
- "redirect_url": "/cpp/windows/hstringreference-class#operator-equality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/hstringreference-operator-inequality-operator.md",
- "redirect_url": "/cpp/windows/hstringreference-class#operator-inequality",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implements-cancastto-method.md",
- "redirect_url": "/cpp/windows/implements-structure#cancastto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implements-casttounknown-method.md",
- "redirect_url": "/cpp/windows/implements-structure#casttounknown",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implements-fillarraywithiid-method.md",
- "redirect_url": "/cpp/windows/implements-structure#fillarraywithiid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implements-iidcount-constant.md",
- "redirect_url": "/cpp/windows/implements-structure#iidcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implementshelper-cancastto-method.md",
- "redirect_url": "/cpp/windows/implementshelper-structure#cancastto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implementshelper-casttounknown-method.md",
- "redirect_url": "/cpp/windows/implementshelper-structure#casttounknown",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implementshelper-fillarraywithiid-method.md",
- "redirect_url": "/cpp/windows/implementshelper-structure#fillarraywithiid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/implementshelper-iidcount-constant.md",
- "redirect_url": "/cpp/windows/implementshelper-structure#iidcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/interfacetraits-cancastto-method.md",
- "redirect_url": "/cpp/windows/interfacetraits-structure#cancastto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/interfacetraits-casttobase-method.md",
- "redirect_url": "/cpp/windows/interfacetraits-structure#casttobase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/interfacetraits-casttounknown-method.md",
- "redirect_url": "/cpp/windows/interfacetraits-structure#casttounknown",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/interfacetraits-fillarraywithiid-method.md",
- "redirect_url": "/cpp/windows/interfacetraits-structure#fillarraywithiid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/interfacetraits-iidcount-constant.md",
- "redirect_url": "/cpp/windows/interfacetraits-structure#iidcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/interfacetraits-verify-method.md",
- "redirect_url": "/cpp/windows/interfacetraits-structure#verify",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/invokehelper-callback-data-member.md",
- "redirect_url": "/cpp/windows/invokehelper-structure#callback",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/invokehelper-invoke-method.md",
- "redirect_url": "/cpp/windows/invokehelper-structure#invoke",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/invokehelper-invokehelper-constructor.md",
- "redirect_url": "/cpp/windows/invokehelper-structure#invokehelper",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/isbaseofstrict-value-constant.md",
- "redirect_url": "/cpp/windows/isbaseofstrict-structure#value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/issame-value-constant.md",
- "redirect_url": "/cpp/windows/issame-structure#value",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/makeallocator-tilde-makeallocator-destructor.md",
- "redirect_url": "/cpp/windows/makeallocator-class#tilde-makeallocator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/makeallocator-allocate-method.md",
- "redirect_url": "/cpp/windows/makeallocator-class#allocate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/makeallocator-detach-method.md",
- "redirect_url": "/cpp/windows/makeallocator-class#detach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/makeallocator-makeallocator-constructor.md",
- "redirect_url": "/cpp/windows/makeallocator-class#makeallocator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-tilde-module-destructor.md",
- "redirect_url": "/cpp/windows/module-class#tilde-module",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-create-method.md",
- "redirect_url": "/cpp/windows/module-class#create",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-decrementobjectcount-method.md",
- "redirect_url": "/cpp/windows/module-class#decrementobjectcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-getactivationfactory-method.md",
- "redirect_url": "/cpp/windows/module-class#getactivationfactory",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-getclassobject-method.md",
- "redirect_url": "/cpp/windows/module-class#getclassobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-getmodule-method.md",
- "redirect_url": "/cpp/windows/module-class#getmodule",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-getobjectcount-method.md",
- "redirect_url": "/cpp/windows/module-class#getobjectcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-incrementobjectcount-method.md",
- "redirect_url": "/cpp/windows/module-class#incrementobjectcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-module-constructor.md",
- "redirect_url": "/cpp/windows/module-class#module",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-objectcount-data-member.md",
- "redirect_url": "/cpp/windows/module-class#objectcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-registercomobject-method.md",
- "redirect_url": "/cpp/windows/module-class#registercomobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-registerobjects-method.md",
- "redirect_url": "/cpp/windows/module-class#registerobjects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-registerwinrtobject-method.md",
- "redirect_url": "/cpp/windows/module-class#registerwinrtobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-releasenotifier-data-member.md",
- "redirect_url": "/cpp/windows/module-class#releasenotifier",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-terminate-method.md",
- "redirect_url": "/cpp/windows/module-class#terminate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-unregistercomobject-method.md",
- "redirect_url": "/cpp/windows/module-class#unregistercomobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-unregisterobjects-method.md",
- "redirect_url": "/cpp/windows/module-class#unregisterobjects",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-unregisterwinrtobject-method.md",
- "redirect_url": "/cpp/windows/module-class#unregisterwinrtobject",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-genericreleasenotifier-callback-data-member.md",
- "redirect_url": "/cpp/windows/module-genericreleasenotifier-class#genericreleasenotifier-callback",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-genericreleasenotifier-genericreleasenotifier-constructor.md",
- "redirect_url": "/cpp/windows/module-genericreleasenotifier-class#genericreleasenotifier-genericreleasenotifier",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-genericreleasenotifier-invoke-method.md",
- "redirect_url": "/cpp/windows/module-genericreleasenotifier-class#genericreleasenotifier-invoke",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-methodreleasenotifier-invoke-method.md",
- "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-invoke",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-methodreleasenotifier-method-data-member.md",
- "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-method",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-methodreleasenotifier-methodreleasenotifier-constructor.md",
- "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-methodreleasenotifier",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-methodreleasenotifier-object-data-member.md",
- "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-object",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-releasenotifier-invoke-method.md",
- "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-invoke",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-releasenotifier-release.md",
- "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-releasenotifier-releasenotifier-constructor.md",
- "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-releasenotifier",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/module-releasenotifier-tilde-releasenotifier-destructor.md",
- "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-tilde-releasenotifier",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/modulebase-tilde-modulebase-destructor.md",
- "redirect_url": "/cpp/windows/modulebase-class#tilde-modulebase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/modulebase-decrementobjectcount-method.md",
- "redirect_url": "/cpp/windows/modulebase-class#decrementobjectcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/modulebase-incrementobjectcount-method.md",
- "redirect_url": "/cpp/windows/modulebase-class#incrementobjectcount",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/modulebase-modulebase-constructor.md",
- "redirect_url": "/cpp/windows/modulebase-class#modulebase",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/mutex-class1.md",
- "redirect_url": "/cpp/windows/mutex-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/mutex-lock-method.md",
- "redirect_url": "/cpp/windows/mutex-class#lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/mutex-mutex-constructor.md",
- "redirect_url": "/cpp/windows/mutex-class#mutex",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/mutex-operator-assign-operator.md",
- "redirect_url": "/cpp/windows/mutex-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/mutextraits-unlock-method.md",
- "redirect_url": "/cpp/windows/mutextraits-structure#unlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/roinitializewrapper-roinitializewrapper-constructor.md",
- "redirect_url": "/cpp/windows/roinitializewrapper-class#roinitializewrapper",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/roinitializewrapper-tilde-roinitializewrapper-destructor.md",
- "redirect_url": "/cpp/windows/roinitializewrapper-class#tilde-roinitializewrapper",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/roinitializewrapper-hresult-parens-operator.md",
- "redirect_url": "/cpp/windows/roinitializewrapper-class#hresult",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-tilde-runtimeclass-destructor.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#tilde-runtimeclass",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-addref-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#addref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-decrementreference-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#decrementreference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-getiids-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#getiids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-getruntimeclassname-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#getruntimeclassname",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-gettrustlevel-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#gettrustlevel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-getweakreference-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#getweakreference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-internaladdref-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#internaladdref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-queryinterface-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#queryinterface",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-release-method.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclass-runtimeclass-constructor.md",
- "redirect_url": "/cpp/windows/runtimeclass-class#runtimeclass",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclassflags-value-constant.md",
- "redirect_url": "/cpp/windows/runtimeclassflags-structure#value-constant",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclassbaset-asiid-method.md",
- "redirect_url": "/cpp/windows/runtimeclassbaset-structure#asiid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/runtimeclassbaset-getimplementediids-method.md",
- "redirect_url": "/cpp/windows/runtimeclassbaset-structure#getimplementediids",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safeint-safeint.md",
- "redirect_url": "/cpp/windows/safeint-class#safeint",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safeadd.md",
- "redirect_url": "/cpp/windows/safeint-functions#safeadd",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safecast.md",
- "redirect_url": "/cpp/windows/safeint-functions#safecast",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safedivide.md",
- "redirect_url": "/cpp/windows/safeint-functions#safedivide",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safeequals.md",
- "redirect_url": "/cpp/windows/safeint-functions#safeequals",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safegreaterthan.md",
- "redirect_url": "/cpp/windows/safeint-functions#safegreaterthan",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safegreaterthanequals.md",
- "redirect_url": "/cpp/windows/safeint-functions#safegreaterthanequals",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safelessthan.md",
- "redirect_url": "/cpp/windows/safeint-functions#safelessthan",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safelessthanequals.md",
- "redirect_url": "/cpp/windows/safeint-functions#safelessthanequals",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safemodulus.md",
- "redirect_url": "/cpp/windows/safeint-functions#safemodulus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safemultiply.md",
- "redirect_url": "/cpp/windows/safeint-functions#safemultiply",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safenotequals.md",
- "redirect_url": "/cpp/windows/safeint-functions#safenotequals",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safesubtract.md",
- "redirect_url": "/cpp/windows/safeint-functions#safesubtract",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/safeintexception-safeintexception.md",
- "redirect_url": "/cpp/windows/safeintexception-class#safeintexception",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/semaphore-lock-method.md",
- "redirect_url": "/cpp/windows/semaphore-class#lock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/semaphore-operator-assign-operator.md",
- "redirect_url": "/cpp/windows/semaphore-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/semaphore-semaphore-constructor.md",
- "redirect_url": "/cpp/windows/semaphore-class#semaphore",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/semaphoretraits-unlock-method.md",
- "redirect_url": "/cpp/windows/semaphoretraits-structure#unlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/simpleactivationfactory-activateinstance-method.md",
- "redirect_url": "/cpp/windows/simpleactivationfactory-class#activateinstance",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/simpleactivationfactory-getruntimeclassname-method.md",
- "redirect_url": "/cpp/windows/simpleactivationfactory-class#getruntimeclassname",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/simpleactivationfactory-gettrustlevel-method.md",
- "redirect_url": "/cpp/windows/simpleactivationfactory-class#gettrustlevel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/simpleclassfactory-createinstance-method.md",
- "redirect_url": "/cpp/windows/simpleclassfactory-class#createinstance",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-auto-gcroot.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#auto-gcroot",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-get.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#get",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-operator-arrow.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-arrow",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-operator-assign.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-assign",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-operator-auto-gcroot.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-auto-gcroot",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-operator-bool.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-bool",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-operator-logical-not.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-logical-not",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-release.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#release",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-reset.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#reset",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-swap.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#swap",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-tilde-auto-gcroot.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#tilde-auto-gcroot",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-members.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#members",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/dotnet/auto-gcroot-attach.md",
- "redirect_url": "/cpp/dotnet/auto-gcroot-class#attach",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlock-tilde-srwlock-destructor.md",
- "redirect_url": "/cpp/windows/srwlock-class#tilde-srwlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlock-lockexclusive-method.md",
- "redirect_url": "/cpp/windows/srwlock-class#lockexclusive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlock-lockshared-method.md",
- "redirect_url": "/cpp/windows/srwlock-class#lockshared",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlock-srwlock-constructor.md",
- "redirect_url": "/cpp/windows/srwlock-class#srwlock-constructor",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlock-srwlock-data-member.md",
- "redirect_url": "/cpp/windows/srwlock-class#srwlock-data-member",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlock-trylockexclusive-method.md",
- "redirect_url": "/cpp/windows/srwlock-class#trylockexclusive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlock-trylockshared-method.md",
- "redirect_url": "/cpp/windows/srwlock-class#trylockshared",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlockexclusivetraits-getinvalidvalue-method.md",
- "redirect_url": "/cpp/windows/srwlockexclusivetraits-structure#getinvalidvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlockexclusivetraits-unlock-method.md",
- "redirect_url": "/cpp/windows/srwlockexclusivetraits-structure#unlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlocksharedtraits-getinvalidvalue-method.md",
- "redirect_url": "/cpp/windows/srwlocksharedtraits-structure#getinvalidvalue",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/srwlocksharedtraits-unlock-method.md",
- "redirect_url": "/cpp/windows/srwlocksharedtraits-structure#unlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/swap-function-windows-runtime-cpp-template-library.md",
- "redirect_url": "/cpp/windows/swap-function-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockt-tilde-synclockt-destructor.md",
- "redirect_url": "/cpp/windows/synclockt-class#tilde-synclockt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockt-islocked-method.md",
- "redirect_url": "/cpp/windows/synclockt-class#islocked",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockt-sync-data-member.md",
- "redirect_url": "/cpp/windows/synclockt-class#sync",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockt-synclockt-constructor.md",
- "redirect_url": "/cpp/windows/synclockt-class#synclockt",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockt-unlock-method.md",
- "redirect_url": "/cpp/windows/synclockt-class#unlock",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockwithstatust-getstatus-method.md",
- "redirect_url": "/cpp/windows/synclockwithstatust-class#getstatus",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockwithstatust-islocked-method.md",
- "redirect_url": "/cpp/windows/synclockwithstatust-class#islocked",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockwithstatust-status-data-member.md",
- "redirect_url": "/cpp/windows/synclockwithstatust-class#status",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/synclockwithstatust-synclockwithstatust-constructor.md",
- "redirect_url": "/cpp/windows/synclockwithstatust-class#synclockwithstatust",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/verifyinheritancehelper-verify-method.md",
- "redirect_url": "/cpp/windows/verifyinheritancehelper-structure#verify",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/verifyinterfacehelper-verify-method.md",
- "redirect_url": "/cpp/windows/verifyinterfacehelper-structure#verify",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakref-tilde-weakref-destructor.md",
- "redirect_url": "/cpp/windows/weakref-class#tilde-weakref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakref-as-method.md",
- "redirect_url": "/cpp/windows/weakref-class#as",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakref-asiid-method.md",
- "redirect_url": "/cpp/windows/weakref-class#asiid",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakref-copyto-method.md",
- "redirect_url": "/cpp/windows/weakref-class#copyto",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakref-operator-ampersand-operator.md",
- "redirect_url": "/cpp/windows/weakref-class#operator-ampersand-operator",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakref-weakref-constructor.md",
- "redirect_url": "/cpp/windows/weakref-class#weakref",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl-class-library-project-template.md",
- "redirect_url": "/cpp/windows/windows-runtime-cpp-template-library-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/walkthrough-creating-a-basic-windows-runtime-component-using-wrl.md",
- "redirect_url": "/cpp/windows/windows-runtime-cpp-template-library-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakreference-class1.md",
- "redirect_url": "/cpp/windows/weakreference-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakreference-tilde-weakreference-destructor.md",
- "redirect_url": "/cpp/windows/weakreference-class#tilde-weakreference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakreference-decrementstrongreference-method.md",
- "redirect_url": "/cpp/windows/weakreference-class#decrementstrongreference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakreference-incrementstrongreference-method.md",
- "redirect_url": "/cpp/windows/weakreference-class#incrementstrongreference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakreference-resolve-method.md",
- "redirect_url": "/cpp/windows/weakreference-class#resolve",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakreference-setunknown-method.md",
- "redirect_url": "/cpp/windows/weakreference-class#setunknown",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/weakreference-weakreference-constructor.md",
- "redirect_url": "/cpp/windows/weakreference-class#weakreference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/cpp-attributes-reference.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/attributed-programming-concepts.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/purpose-of-attributes.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/basic-mechanics-of-attributes.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/building-an-attributed-program.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/attribute-categories.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/attribute-contexts.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/attributes-requirements.md",
- "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/attribute-programming-faq.md",
- "redirect_url": "/cpp/windows/attributes/attribute-programming-faq",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/aggregatable.md",
- "redirect_url": "/cpp/windows/attributes/aggregatable",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/aggregates.md",
- "redirect_url": "/cpp/windows/attributes/aggregates",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/appobject.md",
- "redirect_url": "/cpp/windows/attributes/appobject",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/array-attributes.md",
- "redirect_url": "/cpp/windows/attributes/array-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/async-uuid.md",
- "redirect_url": "/cpp/windows/attributes/async-uuid",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/attributes-alphabetical-reference.md",
- "redirect_url": "/cpp/windows/attributes/attributes-alphabetical-reference",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/attributes-by-group.md",
- "redirect_url": "/cpp/windows/attributes/attributes-by-group",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/bindable.md",
- "redirect_url": "/cpp/windows/attributes/bindable",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/call-as.md",
- "redirect_url": "/cpp/windows/attributes/call-as",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/case-cpp.md",
- "redirect_url": "/cpp/windows/attributes/case-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/class-attributes.md",
- "redirect_url": "/cpp/windows/attributes/class-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/coclass.md",
- "redirect_url": "/cpp/windows/attributes/coclass",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/com-interface-entry-cpp.md",
- "redirect_url": "/cpp/windows/attributes/com-interface-entry-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/compiler-attributes.md",
- "redirect_url": "/cpp/windows/attributes/compiler-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/control.md",
- "redirect_url": "/cpp/windows/attributes/control",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/cpp-quote.md",
- "redirect_url": "/cpp/windows/attributes/cpp-quote",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/custom-attributes-cpp.md",
- "redirect_url": "/cpp/windows/attributes/custom-attributes-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/custom-cpp.md",
- "redirect_url": "/cpp/windows/attributes/custom-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/data-member-attributes.md",
- "redirect_url": "/cpp/windows/attributes/data-member-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/db-accessor.md",
- "redirect_url": "/cpp/windows/attributes/db-accessor",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/db-column.md",
- "redirect_url": "/cpp/windows/attributes/db-column",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/db-command.md",
- "redirect_url": "/cpp/windows/attributes/db-command",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/db-param.md",
- "redirect_url": "/cpp/windows/attributes/db-param",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/db-source.md",
- "redirect_url": "/cpp/windows/attributes/db-source",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/db-table.md",
- "redirect_url": "/cpp/windows/attributes/db-table",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/default-cpp.md",
- "redirect_url": "/cpp/windows/attributes/default-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/defaultbind.md",
- "redirect_url": "/cpp/windows/attributes/defaultbind",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/defaultcollelem.md",
- "redirect_url": "/cpp/windows/attributes/defaultcollelem",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/defaultvalue.md",
- "redirect_url": "/cpp/windows/attributes/defaultvalue",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/defaultvtable.md",
- "redirect_url": "/cpp/windows/attributes/defaultvtable",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/dispinterface.md",
- "redirect_url": "/cpp/windows/attributes/dispinterface",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/displaybind.md",
- "redirect_url": "/cpp/windows/attributes/displaybind",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/dual.md",
- "redirect_url": "/cpp/windows/attributes/dual",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/emitidl.md",
- "redirect_url": "/cpp/windows/attributes/emitidl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/entry.md",
- "redirect_url": "/cpp/windows/attributes/entry",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/event-receiver.md",
- "redirect_url": "/cpp/windows/attributes/event-receiver",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/event-source.md",
- "redirect_url": "/cpp/windows/attributes/event-source",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/export.md",
- "redirect_url": "/cpp/windows/attributes/export",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/first-is.md",
- "redirect_url": "/cpp/windows/attributes/first-is",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/helpcontext.md",
- "redirect_url": "/cpp/windows/attributes/helpcontext",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/helpfile.md",
- "redirect_url": "/cpp/windows/attributes/helpfile",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/helpstring.md",
- "redirect_url": "/cpp/windows/attributes/helpstring",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/helpstringcontext.md",
- "redirect_url": "/cpp/windows/attributes/helpstringcontext",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/helpstringdll.md",
- "redirect_url": "/cpp/windows/attributes/helpstringdll",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/hidden.md",
- "redirect_url": "/cpp/windows/attributes/hidden",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/id.md",
- "redirect_url": "/cpp/windows/attributes/id",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/idl-attributes.md",
- "redirect_url": "/cpp/windows/attributes/idl-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/idl-module.md",
- "redirect_url": "/cpp/windows/attributes/idl-module",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/idl-quote.md",
- "redirect_url": "/cpp/windows/attributes/idl-quote",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/iid-is.md",
- "redirect_url": "/cpp/windows/attributes/iid-is",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/immediatebind.md",
- "redirect_url": "/cpp/windows/attributes/immediatebind",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/implements-category.md",
- "redirect_url": "/cpp/windows/attributes/implements-category",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/implements-cpp.md",
- "redirect_url": "/cpp/windows/attributes/implements-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/import.md",
- "redirect_url": "/cpp/windows/attributes/import",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/importidl.md",
- "redirect_url": "/cpp/windows/attributes/importidl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/importlib.md",
- "redirect_url": "/cpp/windows/attributes/importlib",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/in-cpp.md",
- "redirect_url": "/cpp/windows/attributes/in-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/include-cpp.md",
- "redirect_url": "/cpp/windows/attributes/include-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/includelib-cpp.md",
- "redirect_url": "/cpp/windows/attributes/includelib-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/last-is.md",
- "redirect_url": "/cpp/windows/attributes/last-is",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/lcid.md",
- "redirect_url": "/cpp/windows/attributes/lcid",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/length-is.md",
- "redirect_url": "/cpp/windows/attributes/length-is",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/library-block.md",
- "redirect_url": "/cpp/windows/attributes/library-block",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/licensed.md",
- "redirect_url": "/cpp/windows/attributes/licensed",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/local-cpp.md",
- "redirect_url": "/cpp/windows/attributes/local-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/max-is.md",
- "redirect_url": "/cpp/windows/attributes/max-is",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/method-attributes.md",
- "redirect_url": "/cpp/windows/attributes/method-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/module-cpp.md",
- "redirect_url": "/cpp/windows/attributes/module-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/ms-union.md",
- "redirect_url": "/cpp/windows/attributes/ms-union",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/no-injected-text.md",
- "redirect_url": "/cpp/windows/attributes/no-injected-text",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/nonbrowsable.md",
- "redirect_url": "/cpp/windows/attributes/nonbrowsable",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/noncreatable.md",
- "redirect_url": "/cpp/windows/attributes/noncreatable",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/nonextensible.md",
- "redirect_url": "/cpp/windows/attributes/nonextensible",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/object-cpp.md",
- "redirect_url": "/cpp/windows/attributes/object-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/odl.md",
- "redirect_url": "/cpp/windows/attributes/odl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/ole-db-consumer-attributes.md",
- "redirect_url": "/cpp/windows/attributes/ole-db-consumer-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/oleautomation.md",
- "redirect_url": "/cpp/windows/attributes/oleautomation",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/optional-cpp.md",
- "redirect_url": "/cpp/windows/attributes/optional-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/out-cpp.md",
- "redirect_url": "/cpp/windows/attributes/out-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/parameter-attributes.md",
- "redirect_url": "/cpp/windows/attributes/parameter-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/pointer-default.md",
- "redirect_url": "/cpp/windows/attributes/pointer-default",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/pragma.md",
- "redirect_url": "/cpp/windows/attributes/pragma",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/progid.md",
- "redirect_url": "/cpp/windows/attributes/progid",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/propget.md",
- "redirect_url": "/cpp/windows/attributes/propget",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/propput.md",
- "redirect_url": "/cpp/windows/attributes/propput",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/propputref.md",
- "redirect_url": "/cpp/windows/attributes/propputref",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/ptr.md",
- "redirect_url": "/cpp/windows/attributes/ptr",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/public-cpp-attributes.md",
- "redirect_url": "/cpp/windows/attributes/public-cpp-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/range-cpp.md",
- "redirect_url": "/cpp/windows/attributes/range-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/rdx.md",
- "redirect_url": "/cpp/windows/attributes/rdx",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/readonly-cpp.md",
- "redirect_url": "/cpp/windows/attributes/readonly-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/ref-cpp.md",
- "redirect_url": "/cpp/windows/attributes/ref-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/registration-script.md",
- "redirect_url": "/cpp/windows/attributes/registration-script",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/requestedit.md",
- "redirect_url": "/cpp/windows/attributes/requestedit",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/requires-category.md",
- "redirect_url": "/cpp/windows/attributes/requires-category",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/restricted.md",
- "redirect_url": "/cpp/windows/attributes/restricted",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/retval.md",
- "redirect_url": "/cpp/windows/attributes/retval",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/satype.md",
- "redirect_url": "/cpp/windows/attributes/satype",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/size-is.md",
- "redirect_url": "/cpp/windows/attributes/size-is",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/source-cpp.md",
- "redirect_url": "/cpp/windows/attributes/source-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/stand-alone-attributes.md",
- "redirect_url": "/cpp/windows/attributes/stand-alone-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/string-cpp.md",
- "redirect_url": "/cpp/windows/attributes/string-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/support-error-info.md",
- "redirect_url": "/cpp/windows/attributes/support-error-info",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/switch-is.md",
- "redirect_url": "/cpp/windows/attributes/switch-is",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/switch-type.md",
- "redirect_url": "/cpp/windows/attributes/switch-type",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/synchronize.md",
- "redirect_url": "/cpp/windows/attributes/synchronize",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/threading-cpp.md",
- "redirect_url": "/cpp/windows/attributes/threading-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/transmit-as.md",
- "redirect_url": "/cpp/windows/attributes/transmit-as",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/typedef-enum-union-and-struct-attributes.md",
- "redirect_url": "/cpp/windows/attributes/typedef-enum-union-and-struct-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/uidefault.md",
- "redirect_url": "/cpp/windows/attributes/uidefault",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/unique-cpp.md",
- "redirect_url": "/cpp/windows/attributes/unique-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/usesgetlasterror.md",
- "redirect_url": "/cpp/windows/attributes/usesgetlasterror",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/uuid-cpp-attributes.md",
- "redirect_url": "/cpp/windows/attributes/uuid-cpp-attributes",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/v1-enum.md",
- "redirect_url": "/cpp/windows/attributes/v1-enum",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/vararg.md",
- "redirect_url": "/cpp/windows/attributes/vararg",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/version-cpp.md",
- "redirect_url": "/cpp/windows/attributes/version-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/vi-progid.md",
- "redirect_url": "/cpp/windows/attributes/vi-progid",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/wire-marshal.md",
- "redirect_url": "/cpp/windows/attributes/wire-marshal",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/windows-desktop-applications-cpp.md",
- "redirect_url": "/cpp/windows/desktop-applications-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-auto-handle.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#auto-handle",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-tilde-auto-handle.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#tilde-auto-handle",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-members.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#members",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-get.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#get",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-operator-arrow.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#operator-arrow",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-operator-assign.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#operator-assign",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-operator-auto-handle.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#operator-auto-handle",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-operator-bool.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#operator-bool",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-operator-logical-not.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#operator-logical-not",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-release.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#release",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-reset.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#reset",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/dotnet/auto-handle-swap.md",
- "redirect_url": "/cpp/dotnet/auto-handle-class#swap",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/activatableclass-macros.md",
- "redirect_url": "/cpp/cppcx/wrl/activatableclass-macros",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/activateinstance-function.md",
- "redirect_url": "/cpp/cppcx/wrl/activateinstance-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/activationfactorycallback-function.md",
- "redirect_url": "/cpp/cppcx/wrl/activationfactorycallback-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/activationfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/activationfactory-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/agileactivationfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/agileactivationfactory-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/agileeventsource-class.md",
- "redirect_url": "/cpp/cppcx/wrl/agileeventsource-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/argtraitshelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/argtraitshelper-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/argtraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/argtraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/asweak-function.md",
- "redirect_url": "/cpp/cppcx/wrl/asweak-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/asyncbase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/asyncbase-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/asyncresulttype-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/asyncresulttype-enumeration",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/asyncstatusinternal-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/asyncstatusinternal-enumeration",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/boolstruct-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/boolstruct-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/callback-function-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/callback-function-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/canceltransitionpolicy-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/canceltransitionpolicy-enumeration",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/chaininterfaces-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/chaininterfaces-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/classfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/classfactory-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/cloakediid-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/cloakediid-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/comparestringordinal-method.md",
- "redirect_url": "/cpp/cppcx/wrl/comparestringordinal-method",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/composablebase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/composablebase-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/comptr-class.md",
- "redirect_url": "/cpp/cppcx/wrl/comptr-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/comptrrefbase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/comptrrefbase-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/comptrref-class.md",
- "redirect_url": "/cpp/cppcx/wrl/comptrref-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/createactivationfactory-function.md",
- "redirect_url": "/cpp/cppcx/wrl/createactivationfactory-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/createclassfactory-function.md",
- "redirect_url": "/cpp/cppcx/wrl/createclassfactory-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/creatormap-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/creatormap-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/criticalsection-class.md",
- "redirect_url": "/cpp/cppcx/wrl/criticalsection-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/criticalsectiontraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/criticalsectiontraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/deferrableeventargs-class.md",
- "redirect_url": "/cpp/cppcx/wrl/deferrableeventargs-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/derefhelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/derefhelper-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/dontusenewusemake-class.md",
- "redirect_url": "/cpp/cppcx/wrl/dontusenewusemake-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/enableif-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/enableif-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/event-class-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/event-class-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/eventsource-class.md",
- "redirect_url": "/cpp/cppcx/wrl/eventsource-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/eventtargetarray-class.md",
- "redirect_url": "/cpp/cppcx/wrl/eventtargetarray-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/eventtraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/eventtraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/factorycacheflags-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/factorycacheflags-enumeration",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/factorycache-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/factorycache-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/filehandletraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/filehandletraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/ftmbase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/ftmbase-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/getactivationfactory-function.md",
- "redirect_url": "/cpp/cppcx/wrl/getactivationfactory-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/getmodulebase-function.md",
- "redirect_url": "/cpp/cppcx/wrl/getmodulebase-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/handlenulltraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/handlenulltraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/handlet-class.md",
- "redirect_url": "/cpp/cppcx/wrl/handlet-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/handletraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/handletraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-complete-asynchronous-operations-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-complete-asynchronous-operations-using-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-create-a-classic-com-component-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-create-a-classic-com-component-using-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-handle-events-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-handle-events-using-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-instantiate-wrl-components-directly.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-instantiate-wrl-components-directly",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/hstring-class.md",
- "redirect_url": "/cpp/cppcx/wrl/hstring-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/hstringreference-class.md",
- "redirect_url": "/cpp/cppcx/wrl/hstringreference-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/iid-ppv-args-helper-function.md",
- "redirect_url": "/cpp/cppcx/wrl/iid-ppv-args-helper-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/implementsbase-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/implementsbase-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/implementshelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/implementshelper-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/implements-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/implements-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/inspectableclass-macro.md",
- "redirect_url": "/cpp/cppcx/wrl/inspectableclass-macro",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/interfacelisthelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/interfacelisthelper-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/interfacelist-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/interfacelist-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/interfacetraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/interfacetraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/invokehelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/invokehelper-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/invokemodeoptions-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/invokemodeoptions-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/isbaseofstrict-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/isbaseofstrict-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/issame-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/issame-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/key-wrl-apis-by-category.md",
- "redirect_url": "/cpp/cppcx/wrl/key-wrl-apis-by-category",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/makeallocator-class.md",
- "redirect_url": "/cpp/cppcx/wrl/makeallocator-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/makeandinitialize-function.md",
- "redirect_url": "/cpp/cppcx/wrl/makeandinitialize-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/make-function.md",
- "redirect_url": "/cpp/cppcx/wrl/make-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/microsoft-wrl-details-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-details-namespace",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/microsoft-wrl-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-namespace",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/microsoft-wrl-wrappers-details-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-details-namespace",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/microsoft-wrl-wrappers-handletraits-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-handletraits-namespace",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/microsoft-wrl-wrappers-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-namespace",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/mixin-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/mixin-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/modulebase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/modulebase-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/module-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/module-genericreleasenotifier-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-genericreleasenotifier-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/module-methodreleasenotifier-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-methodreleasenotifier-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/module-releasenotifier-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-releasenotifier-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/moduletype-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/moduletype-enumeration",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/move-function.md",
- "redirect_url": "/cpp/cppcx/wrl/move-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/mutex-class.md",
- "redirect_url": "/cpp/cppcx/wrl/mutex-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/mutextraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/mutextraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/nil-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/nil-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/operator-equality-operator-microsoft-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/operator-equality-operator-microsoft-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/operator-inequality-operator-microsoft-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/operator-inequality-operator-microsoft-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/operator-less-than-operator-microsoft-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/operator-less-than-operator-microsoft-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/raiseexception-function.md",
- "redirect_url": "/cpp/cppcx/wrl/raiseexception-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/removeiunknown-class.md",
- "redirect_url": "/cpp/cppcx/wrl/removeiunknown-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/removereference-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/removereference-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/roinitializewrapper-class.md",
- "redirect_url": "/cpp/cppcx/wrl/roinitializewrapper-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/runtimeclassbase-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclassbase-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/runtimeclassbaset-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclassbaset-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/runtimeclass-class.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclass-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/runtimeclassflags-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclassflags-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/runtimeclasstype-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclasstype-enumeration",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/semaphore-class.md",
- "redirect_url": "/cpp/cppcx/wrl/semaphore-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/semaphoretraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/semaphoretraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/simpleactivationfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/simpleactivationfactory-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/simpleclassfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/simpleclassfactory-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/srwlock-class.md",
- "redirect_url": "/cpp/cppcx/wrl/srwlock-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/srwlockexclusivetraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/srwlockexclusivetraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/srwlocksharedtraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/srwlocksharedtraits-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/swap-function-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/swap-function-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/synclockt-class.md",
- "redirect_url": "/cpp/cppcx/wrl/synclockt-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/synclockwithstatust-class.md",
- "redirect_url": "/cpp/cppcx/wrl/synclockwithstatust-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/terminatemap-function.md",
- "redirect_url": "/cpp/cppcx/wrl/terminatemap-function",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md",
- "redirect_url": "/cpp/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/verifyinheritancehelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/verifyinheritancehelper-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/verifyinterfacehelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/verifyinterfacehelper-structure",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md",
- "redirect_url": "/cpp/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/weakref-class.md",
- "redirect_url": "/cpp/cppcx/wrl/weakref-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/weakreference-class.md",
- "redirect_url": "/cpp/cppcx/wrl/weakreference-class",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/windows-foundation-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/windows-foundation-namespace",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/windows-runtime-cpp-template-library-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/windows-runtime-cpp-template-library-wrl",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/wrl-reference.md",
- "redirect_url": "/cpp/cppcx/wrl/wrl-reference",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/wrl/activatableclass-macros.md",
- "redirect_url": "/cpp/cppcx/wrl/activatableclass-macros",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/activateinstance-function.md",
- "redirect_url": "/cpp/cppcx/wrl/activateinstance-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/activationfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/activationfactory-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/activationfactorycallback-function.md",
- "redirect_url": "/cpp/cppcx/wrl/activationfactorycallback-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/agileactivationfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/agileactivationfactory-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/agileeventsource-class.md",
- "redirect_url": "/cpp/cppcx/wrl/agileeventsource-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/argtraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/argtraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/argtraitshelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/argtraitshelper-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/asweak-function.md",
- "redirect_url": "/cpp/cppcx/wrl/asweak-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/asyncbase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/asyncbase-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/asyncresulttype-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/asyncresulttype-enumeration",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/asyncstatusinternal-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/asyncstatusinternal-enumeration",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/boolstruct-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/boolstruct-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/callback-function-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/callback-function-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/canceltransitionpolicy-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/canceltransitionpolicy-enumeration",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/chaininterfaces-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/chaininterfaces-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/classfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/classfactory-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/cloakediid-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/cloakediid-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/comparestringordinal-method.md",
- "redirect_url": "/cpp/cppcx/wrl/comparestringordinal-method",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/composablebase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/composablebase-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/comptr-class.md",
- "redirect_url": "/cpp/cppcx/wrl/comptr-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/comptrref-class.md",
- "redirect_url": "/cpp/cppcx/wrl/comptrref-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/comptrrefbase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/comptrrefbase-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/createactivationfactory-function.md",
- "redirect_url": "/cpp/cppcx/wrl/createactivationfactory-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/createclassfactory-function.md",
- "redirect_url": "/cpp/cppcx/wrl/createclassfactory-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/creatormap-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/creatormap-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/criticalsection-class.md",
- "redirect_url": "/cpp/cppcx/wrl/criticalsection-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/criticalsectiontraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/criticalsectiontraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/deferrableeventargs-class.md",
- "redirect_url": "/cpp/cppcx/wrl/deferrableeventargs-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/derefhelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/derefhelper-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/dontusenewusemake-class.md",
- "redirect_url": "/cpp/cppcx/wrl/dontusenewusemake-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/enableif-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/enableif-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/event-class-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/event-class-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/eventsource-class.md",
- "redirect_url": "/cpp/cppcx/wrl/eventsource-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/eventtargetarray-class.md",
- "redirect_url": "/cpp/cppcx/wrl/eventtargetarray-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/eventtraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/eventtraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/factorycache-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/factorycache-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/factorycacheflags-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/factorycacheflags-enumeration",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/filehandletraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/filehandletraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/ftmbase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/ftmbase-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/getactivationfactory-function.md",
- "redirect_url": "/cpp/cppcx/wrl/getactivationfactory-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/getmodulebase-function.md",
- "redirect_url": "/cpp/cppcx/wrl/getmodulebase-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/handlenulltraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/handlenulltraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/handlet-class.md",
- "redirect_url": "/cpp/cppcx/wrl/handlet-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/handletraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/handletraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/how-to-complete-asynchronous-operations-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-complete-asynchronous-operations-using-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/how-to-create-a-classic-com-component-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-create-a-classic-com-component-using-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/how-to-handle-events-using-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-handle-events-using-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/how-to-instantiate-wrl-components-directly.md",
- "redirect_url": "/cpp/cppcx/wrl/how-to-instantiate-wrl-components-directly",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/hstring-class.md",
- "redirect_url": "/cpp/cppcx/wrl/hstring-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/hstringreference-class.md",
- "redirect_url": "/cpp/cppcx/wrl/hstringreference-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/iid-ppv-args-helper-function.md",
- "redirect_url": "/cpp/cppcx/wrl/iid-ppv-args-helper-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/implements-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/implements-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/implementsbase-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/implementsbase-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/implementshelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/implementshelper-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/inspectableclass-macro.md",
- "redirect_url": "/cpp/cppcx/wrl/inspectableclass-macro",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/interfacelist-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/interfacelist-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/interfacelisthelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/interfacelisthelper-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/interfacetraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/interfacetraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/invokehelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/invokehelper-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/invokemodeoptions-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/invokemodeoptions-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/isbaseofstrict-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/isbaseofstrict-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/issame-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/issame-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/key-wrl-apis-by-category.md",
- "redirect_url": "/cpp/cppcx/wrl/key-wrl-apis-by-category",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/make-function.md",
- "redirect_url": "/cpp/cppcx/wrl/make-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/makeallocator-class.md",
- "redirect_url": "/cpp/cppcx/wrl/makeallocator-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/makeandinitialize-function.md",
- "redirect_url": "/cpp/cppcx/wrl/makeandinitialize-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/microsoft-wrl-details-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-details-namespace",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/microsoft-wrl-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-namespace",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/microsoft-wrl-wrappers-details-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-details-namespace",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/microsoft-wrl-wrappers-handletraits-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-handletraits-namespace",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/microsoft-wrl-wrappers-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-namespace",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/mixin-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/mixin-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/module-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/module-genericreleasenotifier-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-genericreleasenotifier-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/module-methodreleasenotifier-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-methodreleasenotifier-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/module-releasenotifier-class.md",
- "redirect_url": "/cpp/cppcx/wrl/module-releasenotifier-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/modulebase-class.md",
- "redirect_url": "/cpp/cppcx/wrl/modulebase-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/moduletype-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/moduletype-enumeration",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/move-function.md",
- "redirect_url": "/cpp/cppcx/wrl/move-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/mutex-class.md",
- "redirect_url": "/cpp/cppcx/wrl/mutex-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/mutextraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/mutextraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/nil-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/nil-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/operator-equality-operator-microsoft-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/operator-equality-operator-microsoft-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/operator-inequality-operator-microsoft-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/operator-inequality-operator-microsoft-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/operator-less-than-operator-microsoft-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/operator-less-than-operator-microsoft-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/raiseexception-function.md",
- "redirect_url": "/cpp/cppcx/wrl/raiseexception-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/removeiunknown-class.md",
- "redirect_url": "/cpp/cppcx/wrl/removeiunknown-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/removereference-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/removereference-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/roinitializewrapper-class.md",
- "redirect_url": "/cpp/cppcx/wrl/roinitializewrapper-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/runtimeclass-class.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclass-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/runtimeclassbase-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclassbase-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/runtimeclassbaset-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclassbaset-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/runtimeclassflags-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclassflags-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/runtimeclasstype-enumeration.md",
- "redirect_url": "/cpp/cppcx/wrl/runtimeclasstype-enumeration",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/semaphore-class.md",
- "redirect_url": "/cpp/cppcx/wrl/semaphore-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/semaphoretraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/semaphoretraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/simpleactivationfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/simpleactivationfactory-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/simpleclassfactory-class.md",
- "redirect_url": "/cpp/cppcx/wrl/simpleclassfactory-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/srwlock-class.md",
- "redirect_url": "/cpp/cppcx/wrl/srwlock-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/srwlockexclusivetraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/srwlockexclusivetraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/srwlocksharedtraits-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/srwlocksharedtraits-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/swap-function-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/swap-function-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/synclockt-class.md",
- "redirect_url": "/cpp/cppcx/wrl/synclockt-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/synclockwithstatust-class.md",
- "redirect_url": "/cpp/cppcx/wrl/synclockwithstatust-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/terminatemap-function.md",
- "redirect_url": "/cpp/cppcx/wrl/terminatemap-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md",
- "redirect_url": "/cpp/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/verifyinheritancehelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/verifyinheritancehelper-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/verifyinterfacehelper-structure.md",
- "redirect_url": "/cpp/cppcx/wrl/verifyinterfacehelper-structure",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md",
- "redirect_url": "/cpp/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/weakref-class.md",
- "redirect_url": "/cpp/cppcx/wrl/weakref-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/weakreference-class.md",
- "redirect_url": "/cpp/cppcx/wrl/weakreference-class",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/windows-foundation-namespace.md",
- "redirect_url": "/cpp/cppcx/wrl/windows-foundation-namespace",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/windows-runtime-cpp-template-library-wrl.md",
- "redirect_url": "/cpp/cppcx/wrl/windows-runtime-cpp-template-library-wrl",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/wrl/wrl-reference.md",
- "redirect_url": "/cpp/cppcx/wrl/wrl-reference",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/windows/abstract-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/abstract-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/arrays-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/arrays-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/attribute-parameter-types-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/attribute-parameter-types-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/attribute-targets-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/attribute-targets-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/boxing-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/boxing-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/c-style-casts-with-clr-cpp-cli.md",
- "redirect_url": "/cpp/extensions/c-style-casts-with-clr-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/classes-and-structs-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/classes-and-structs-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/compiler-support-for-type-traits-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/compiler-support-for-type-traits-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/component-extensions-for-runtime-platforms.md",
- "redirect_url": "/cpp/extensions/component-extensions-for-runtime-platforms",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/constraints-on-generic-type-parameters-cpp-cli.md",
- "redirect_url": "/cpp/extensions/constraints-on-generic-type-parameters-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/consuming-generics-cpp-cli.md",
- "redirect_url": "/cpp/extensions/consuming-generics-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/context-sensitive-keywords-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/context-sensitive-keywords-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/delegate-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/delegate-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/enum-class-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/enum-class-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/event-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/event-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/exception-handling-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/exception-handling-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/explicit-overrides-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/explicit-overrides-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/extensions-that-are-specific-to-cpp-cli.md",
- "redirect_url": "/cpp/extensions/extensions-that-are-specific-to-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/generic-classes-cpp-cli.md",
- "redirect_url": "/cpp/extensions/generic-classes-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/generic-delegates-visual-cpp.md",
- "redirect_url": "/cpp/extensions/generic-delegates-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/generic-functions-cpp-cli.md",
- "redirect_url": "/cpp/extensions/generic-functions-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/generic-interfaces-visual-cpp.md",
- "redirect_url": "/cpp/extensions/generic-interfaces-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/generics-and-templates-visual-cpp.md",
- "redirect_url": "/cpp/extensions/generics-and-templates-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/generics-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/generics-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/handle-to-object-operator-hat-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/handle-to-object-operator-hat-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-declare-and-use-interior-pointers-and-managed-arrays-cpp-cli.md",
- "redirect_url": "/cpp/extensions/how-to-declare-and-use-interior-pointers-and-managed-arrays-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli.md",
- "redirect_url": "/cpp/extensions/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-declare-pinning-pointers-and-value-types.md",
- "redirect_url": "/cpp/extensions/how-to-declare-pinning-pointers-and-value-types",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-declare-value-types-with-the-interior-ptr-keyword-cpp-cli.md",
- "redirect_url": "/cpp/extensions/how-to-declare-value-types-with-the-interior-ptr-keyword-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-improve-performance-with-generics-visual-cpp.md",
- "redirect_url": "/cpp/extensions/how-to-improve-performance-with-generics-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli.md",
- "redirect_url": "/cpp/extensions/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/how-to-pin-pointers-and-arrays.md",
- "redirect_url": "/cpp/extensions/how-to-pin-pointers-and-arrays",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/identifier-cpp-cli.md",
- "redirect_url": "/cpp/extensions/identifier-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/interface-class-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/interface-class-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/interior-ptr-cpp-cli.md",
- "redirect_url": "/cpp/extensions/interior-ptr-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/literal-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/literal-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/new-new-slot-in-vtable-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/new-new-slot-in-vtable-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/nullptr-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/nullptr-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/override-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/override-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/override-specifiers-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/override-specifiers-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/overview-of-generics-in-visual-cpp.md",
- "redirect_url": "/cpp/extensions/overview-of-generics-in-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/partial-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/partial-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/pin-ptr-cpp-cli.md",
- "redirect_url": "/cpp/extensions/pin-ptr-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/platform-default-and-cli-namespaces-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/platform-default-and-cli-namespaces-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/property-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/property-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/ref-new-gcnew-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/ref-new-gcnew-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/safe-cast-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/safe-cast-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/sealed-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/sealed-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/string-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/string-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/tracking-reference-operator-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/tracking-reference-operator-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/type-forwarding-cpp-cli.md",
- "redirect_url": "/cpp/extensions/type-forwarding-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/typeid-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/typeid-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/user-defined-attributes-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/user-defined-attributes-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/variable-argument-lists-dot-dot-dot-cpp-cli.md",
- "redirect_url": "/cpp/extensions/variable-argument-lists-dot-dot-dot-cpp-cli",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/windows/windows-runtime-and-managed-templates-cpp-component-extensions.md",
- "redirect_url": "/cpp/extensions/windows-runtime-and-managed-templates-cpp-component-extensions",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/deploying-native-desktop-applications-visual-cpp.md",
- "redirect_url": "/cpp/windows/deploying-native-desktop-applications-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/deployment-in-visual-cpp.md",
- "redirect_url": "/cpp/windows/deployment-in-visual-cpp",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/deployment-concepts.md",
- "redirect_url": "/cpp/windows/deployment-concepts",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/understanding-the-dependencies-of-a-visual-cpp-application.md",
- "redirect_url": "/cpp/windows/understanding-the-dependencies-of-a-visual-cpp-application",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/determining-which-dlls-to-redistribute.md",
- "redirect_url": "/cpp/windows/determining-which-dlls-to-redistribute",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/choosing-a-deployment-method.md",
- "redirect_url": "/cpp/windows/choosing-a-deployment-method",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/universal-crt-deployment.md",
- "redirect_url": "/cpp/windows/universal-crt-deployment",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/redistributing-visual-cpp-files.md",
- "redirect_url": "/cpp/windows/redistributing-visual-cpp-files",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/redistributing-components-by-using-merge-modules.md",
- "redirect_url": "/cpp/windows/redistributing-components-by-using-merge-modules",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/redistributing-visual-cpp-activex-controls.md",
- "redirect_url": "/cpp/windows/redistributing-visual-cpp-activex-controls",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/redistributing-the-mfc-library.md",
- "redirect_url": "/cpp/windows/redistributing-the-mfc-library",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/redistributing-an-atl-application.md",
- "redirect_url": "/cpp/windows/redistributing-an-atl-application",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/deployment-examples.md",
- "redirect_url": "/cpp/windows/deployment-examples",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md",
- "redirect_url": "/cpp/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md",
- "redirect_url": "/cpp/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md",
- "redirect_url": "/cpp/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/preparing-a-test-machine-to-run-a-debug-executable.md",
- "redirect_url": "/cpp/windows/preparing-a-test-machine-to-run-a-debug-executable",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/redistributing-web-client-applications.md",
- "redirect_url": "/cpp/windows/redistributing-web-client-applications",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/clickonce-deployment-for-visual-cpp-applications.md",
- "redirect_url": "/cpp/windows/clickonce-deployment-for-visual-cpp-applications",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/running-a-cpp-clr-application-on-a-previous-runtime-version.md",
- "redirect_url": "/cpp/windows/running-a-cpp-clr-application-on-a-previous-runtime-version",
- "redirect_document_id": true
- },
- {
- "source_path": "docs/build/reference/hlsl-property-pages-advanced.md",
- "redirect_url": "/cpp/build/reference/hlsl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/hlsl-property-pages-general.md",
- "redirect_url": "/cpp/build/reference/hlsl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/build/reference/hlsl-property-pages-output-files.md",
- "redirect_url": "/cpp/build/reference/hlsl-property-pages",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/1-1-scope.md",
- "redirect_url": "/cpp/parallel/openmp/1-introduction#11-scope",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/1-2-definition-of-terms.md",
- "redirect_url": "/cpp/parallel/openmp/1-introduction#12-definition-of-terms",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/1-3-execution-model.md",
- "redirect_url": "/cpp/parallel/openmp/1-introduction#13-execution-model",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/1-4-compliance.md",
- "redirect_url": "/cpp/parallel/openmp/1-introduction#14-compliance",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/1-5-normative-references.md",
- "redirect_url": "/cpp/parallel/openmp/1-introduction#15-normative-references",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/1-6-organization.md",
- "redirect_url": "/cpp/parallel/openmp/1-introduction#16-organization",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/4-1-omp-schedule.md",
- "redirect_url": "/cpp/parallel/openmp/4-environment-variables#41-omp_schedule",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/4-2-omp-num-threads.md",
- "redirect_url": "/cpp/parallel/openmp/4-environment-variables#42-omp_num_threads",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/4-3-omp-dynamic.md",
- "redirect_url": "/cpp/parallel/openmp/4-environment-variables#43-omp_dynamic",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/4-4-omp-nested.md",
- "redirect_url": "/cpp/parallel/openmp/4-environment-variables#44-omp_nested",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/c-1-notation.md",
- "redirect_url": "/cpp/parallel/openmp/c-openmp-c-and-cpp-grammar#c1-notation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/c-2-rules.md",
- "redirect_url": "/cpp/parallel/openmp/c-openmp-c-and-cpp-grammar#c2-rules",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-1-directive-format.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#21-directive-format",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-2-conditional-compilation.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#22-conditional-compilation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-3-parallel-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#23-parallel-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-4-work-sharing-constructs.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#24-work-sharing-constructs",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-4-1-for-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#241-for-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-4-2-sections-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#242-sections-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-4-3-single-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#243-single-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-5-combined-parallel-work-sharing-constructs.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#25-combined-parallel-work-sharing-constructs",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-5-1-parallel-for-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#251-parallel-for-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-5-2-parallel-sections-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#252-parallel-sections-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-6-master-and-synchronization-directives.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#26-master-and-synchronization-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-6-1-master-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#261-master-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-6-2-critical-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#262-critical-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-6-3-barrier-directive.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#263-barrier-directive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-6-4-atomic-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#264-atomic-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-6-5-flush-directive.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#265-flush-directive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-6-6-ordered-construct.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#266-ordered-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-data-environment.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#27-data-environment",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-1-threadprivate-directive.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#271-threadprivate-directive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-data-sharing-attribute-clauses.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#272-data-sharing-attribute-clauses",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-1-private.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2721-private",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-2-firstprivate.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2722-firstprivate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-3-lastprivate.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2723-lastprivate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-4-shared.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2724-shared",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-5-default.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2725-default",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-6-reduction.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2726-reduction",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-7-copyin.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2727-copyin",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-7-2-8-copyprivate.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#2728-copyprivate",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-8-directive-binding.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#28-directive-binding",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/2-9-directive-nesting.md",
- "redirect_url": "/cpp/parallel/openmp/2-directives#29-directive-nesting",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-execution-environment-functions.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#31-execution-environment-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-2-lock-functions.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#32-lock-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-3-timing-routines.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#33-timing-routines",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-1-omp-set-num-threads-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#311-omp_set_num_threads-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-2-omp-get-num-threads-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#312-omp_get_num_threads-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-3-omp-get-max-threads-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#313-omp_get_max_threads-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-4-omp-get-thread-num-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#314-omp_get_thread_num-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-5-omp-get-num-procs-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#315-omp_get_num_procs-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-6-omp-in-parallel-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#316-omp_in_parallel-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-7-omp-set-dynamic-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#317-omp_set_dynamic-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-8-omp-get-dynamic-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#318-omp_get_dynamic-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-9-omp-set-nested-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#319-omp_set_nested-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-1-10-omp-get-nested-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#3110-omp_get_nested-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-2-1-omp-init-lock-and-omp-init-nest-lock-functions.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#321-omp_init_lock-and-omp_init_nest_lock-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-2-2-omp-destroy-lock-and-omp-destroy-nest-lock-functions.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#322-omp_destroy_lock-and-omp_destroy_nest_lock-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-2-3-omp-set-lock-and-omp-set-nest-lock-functions.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#323-omp_set_lock-and-omp_set_nest_lock-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-2-4-omp-unset-lock-and-omp-unset-nest-lock-functions.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#324-omp_unset_lock-and-omp_unset_nest_lock-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-2-5-omp-test-lock-and-omp-test-nest-lock-functions.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#325-omp_test_lock-and-omp_test_nest_lock-functions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-3-1-omp-get-wtime-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#331-omp_get_wtime-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/3-3-2-omp-get-wtick-function.md",
- "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#332-omp_get_wtick-function",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-1-executing-a-simple-loop-in-parallel.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a1-a-simple-loop-in-parallel",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-2-specifying-conditional-compilation.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a2-conditional-compilation",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-3-using-parallel-regions.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a3-parallel-regions",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-4-using-the-nowait-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a4-the-nowait-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-5-using-the-critical-directive.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a5-the-critical-directive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-6-using-the-lastprivate-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a6-the-lastprivate-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-7-using-the-reduction-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a7-the-reduction-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-8-specifying-parallel-sections.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a8-parallel-sections",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-9-using-single-directives.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a9-single-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-10-specifying-sequential-ordering.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a10-sequential-ordering",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-11-specifying-a-fixed-number-of-threads.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a11-a-fixed-number-of-threads",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-12-using-the-atomic-directive.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a12-the-atomic-directive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-13-using-the-flush-directive-with-a-list.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a13-a-flush-directive-with-a-list",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-14-using-the-flush-directive-without-a-list.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a14-a-flush-directive-without-a-list",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-15-determining-the-number-of-threads-used.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a15-the-number-of-threads-used",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-16-using-locks.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a16-locks",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-17-using-nestable-locks.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a17-nestable-locks",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-18-nested-for-directives.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a18-nested-for-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-19-examples-showing-incorrect-nesting-of-work-sharing-directives.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a19-examples-showing-incorrect-nesting-of-work-sharing-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-20-binding-of-barrier-directives.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a20-bind-barrier-directives",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-21-scoping-variables-with-the-private-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a21-scope-variables-with-the-private-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-22-using-the-default-none-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a22-the-defaultnone-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-23-examples-of-the-ordered-directive.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a23-examples-of-the-ordered-directive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-24-example-of-the-private-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a24-example-of-the-private-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-25-examples-of-the-copyprivate-data-attribute-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a25-examples-of-the-copyprivate-data-attribute-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-26-using-the-threadprivate-directive.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a26-the-threadprivate-directive",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-27-use-of-c99-variable-length-arrays.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a27-c99-variable-length-arrays",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-28-use-of-num-threads-clause.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a28-the-num_threads-clause",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-29-use-of-work-sharing-constructs-inside-a-critical-construct.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a29-work-sharing-constructs-inside-a-critical-construct",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-30-use-of-reprivatization.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a30-reprivatization",
- "redirect_document_id": false
- },
- {
- "source_path": "docs/parallel/openmp/a-31-thread-safe-lock-functions.md",
- "redirect_url": "/cpp/parallel/openmp/a-examples#a31-thread-safe-lock-functions",
- "redirect_document_id": false
- }
- ]
-}
\ No newline at end of file
+ "redirections": [
+ {
+ "source_path": "docs/cpp-conformance-improvements-2017.md",
+ "redirect_url": "/cpp/overview/cpp-conformance-improvements",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/how-to-report-a-problem-with-the-visual-cpp-toolset.md",
+ "redirect_url": "/cpp/overview/how-to-report-a-problem-with-the-visual-cpp-toolset",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/overview-of-cpp-development.md",
+ "redirect_url": "/cpp/overview/overview-of-cpp-development",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/supported-platforms-visual-cpp.md.md",
+ "redirect_url": "/cpp/overview/supported-platforms-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/visual-cpp-help-and-community.md",
+ "redirect_url": "/cpp/overview/visual-cpp-help-and-community",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/visual-cpp-in-visual-studio.md",
+ "redirect_url": "/cpp/overview/visual-cpp-in-visual-studio",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/visual-cpp-language-conformance.md",
+ "redirect_url": "/cpp/overview/visual-cpp-language-conformance",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/visual-cpp-samples.md",
+ "redirect_url": "/cpp/overview/visual-cpp-samples",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/what-s-new-for-visual-cpp-in-visual-studio.md",
+ "redirect_url": "/cpp/overview/what-s-new-for-visual-cpp-in-visual-studio",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/navigating-the-class-structure-visual-cpp.md",
+ "redirect_url": "/cpp/ide/navigate-code-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/visual-cpp-tools-and-features-in-visual-studio-editions.md",
+ "redirect_url": "/cpp/overview/visual-cpp-tools-and-features-in-visual-studio-editions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/cpp/string-and-i-o-formatting-modern-cpp.md",
+ "redirect_url": "/cpp/text/string-and-i-o-formatting-modern-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/vcpkg.md",
+ "redirect_url": "/cpp/build/vcpkg",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/universal-windows-apps-cpp.md",
+ "redirect_url": "/cpp/cppcx/universal-windows-apps-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/adding-files-to-an-empty-win32-applications.md",
+ "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-an-empty-windows-desktop-application.md",
+ "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/win32-application-wizard.md",
+ "redirect_url": "/cpp/windows/windows-desktop-wizard",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/creating-a-console-application.md",
+ "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/application-settings-win-32-project-wizard.md",
+ "redirect_url": "/cpp/windows/windows-desktop-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/console-applications-in-visual-cpp.md",
+ "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/walkthrough-creating-and-using-a-static-library-cpp.md",
+ "redirect_url": "/cpp/build/walkthrough-creating-and-using-a-static-library-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/assembler/arm/index.md",
+ "redirect_url": "/cpp/assembler/arm/arm-assembler-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/index.md",
+ "redirect_url": "/cpp/assembler/masm/microsoft-macro-assembler-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/inline/index.md",
+ "redirect_url": "/cpp/assembler/inline/inline-assembler",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/index.md",
+ "redirect_url": "/cpp/assembler/masm/microsoft-macro-assembler-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-fatal-errors.md",
+ "redirect_url": "/cpp/assembler/masm/ml-fatal-error-a1000",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-nonfatal-errors.md",
+ "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2004",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2000-a2049.md",
+ "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2004",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2050-a2099.md",
+ "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2050",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2100-a2149.md",
+ "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2107",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-nonfatal-errors-a2150-a2199.md",
+ "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2189",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-nonfatal-errors-A2200-A2901.md",
+ "redirect_url": "/cpp/assembler/masm/ml-nonfatal-error-a2206",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/ml-warnings.md",
+ "redirect_url": "/cpp/assembler/masm/ml-warning-a4004",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/operators-masm.md",
+ "redirect_url": "/cpp/assembler/masm/operators-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/assembler/masm/run-time-operators.md",
+ "redirect_url": "/cpp/assembler/masm/operator-equal-masm-run-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/index.md",
+ "redirect_url": "/cpp/atl/atl-com-desktop-components",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/understanding-backus-nauer-form-bnf-syntax.md",
+ "redirect_url": "/cpp/atl/understanding-backus-naur-form-bnf-syntax",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/atl/which-atl-classes-facilitate-activex-control-containment-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/what-is-the-atl-control-hosting-api-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/what-is-atlaxwin100-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/when-do-i-need-to-call-atlaxwininit-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/what-is-a-host-object-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/can-i-host-more-than-one-control-in-a-single-window-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/can-i-reuse-a-host-window-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/when-do-i-need-to-call-atlaxwinterm-q.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/hosting-activex-controls-using-atl-axhost.md",
+ "redirect_url": "/cpp/atl/atl-control-containment-faq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/reference/index.md",
+ "redirect_url": "/cpp/atl/reference/atl-classes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/reference/atl-archetypes.md",
+ "redirect_url": "/cpp/atl/reference/worker-archetype",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/reference/atl-structures.md",
+ "redirect_url": "/cpp/atl/reference/atl-classes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl/reference/patlmodule.md",
+ "redirect_url": "/cpp/atl/reference/atl-global-variables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/index.md",
+ "redirect_url": "/cpp/atl-mfc-shared/atl-mfc-shared-classes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/current-time-automation-classes.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/current-time-general-purpose-classes.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/date-and-time-automation-support.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/date-and-time-database-support.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/date-and-time-general-purpose-classes.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/date-and-time-systemtime-support.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/elapsed-time-automation-classes.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/elapsed-time-general-purpose-classes.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/formatting-time-automation-classes.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/formatting-time-values-general-purpose-classes.md",
+ "redirect_url": "/cpp/atl-mfc-shared/date-and-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/atl-mfc-shared/reference/index.md",
+ "redirect_url": "/cpp/atl-mfc-shared/reference/classes-shared-by-mfc-and-atl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/building-c-cpp-programs.md",
+ "redirect_url": "/cpp/build/projects-and-build-systems-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/batch-mode-rules.md",
+ "redirect_url": "/cpp/build/reference/batch-mode-rules",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/command-macros-and-options-macros.md",
+ "redirect_url": "/cpp/build/reference/command-macros-and-options-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/command-modifiers.md",
+ "redirect_url": "/cpp/build/reference/command-modifiers",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/commands-in-a-makefile.md",
+ "redirect_url": "/cpp/build/reference/commands-in-a-makefile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/comments-in-a-makefile.md",
+ "redirect_url": "/cpp/build/reference/comments-in-a-makefile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/contents-of-a-makefile.md",
+ "redirect_url": "/cpp/build/reference/contents-of-a-makefile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/creating-inline-file-text.md",
+ "redirect_url": "/cpp/build/reference/creating-inline-file-text",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/cumulative-dependencies.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#cumulative-dependencies",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/cumulative-dependencies.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#cumulative-dependencies",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/defining-a-rule.md",
+ "redirect_url": "/cpp/build/reference/defining-a-rule",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/defining-an-nmake-macro.md",
+ "redirect_url": "/cpp/build/reference/defining-an-nmake-macro",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/dependency-side-effects.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#dependency-side-effects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/dependency-side-effects.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#dependency-side-effects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/dependents.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#dependents",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/description-blocks.md",
+ "redirect_url": "/cpp/build/reference/description-blocks",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/dot-directives.md",
+ "redirect_url": "/cpp/build/reference/dot-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/environment-variable-macros.md",
+ "redirect_url": "/cpp/build/reference/environment-variable-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/executing-a-program-in-preprocessing.md",
+ "redirect_url": "/cpp/build/reference/executing-a-program-in-preprocessing",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/exit-codes-from-nmake.md",
+ "redirect_url": "/cpp/build/reference/running-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/exit-codes-from-nmake.md",
+ "redirect_url": "/cpp/build/reference/running-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/expressions-in-makefile-preprocessing.md",
+ "redirect_url": "/cpp/build/reference/expressions-in-makefile-preprocessing",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/filename-macros.md",
+ "redirect_url": "/cpp/build/reference/filename-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/filename-parts-syntax.md",
+ "redirect_url": "/cpp/build/reference/filename-parts-syntax",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/inference-rules.md",
+ "redirect_url": "/cpp/build/reference/inference-rules",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/inferred-dependents-and-rules.md",
+ "redirect_url": "/cpp/build/reference/inferred-dependents-and-rules",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/inferred-dependents.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#inferred-dependents",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/inferred-dependents.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#inferred-dependents",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/inline-files-in-a-makefile.md",
+ "redirect_url": "/cpp/build/reference/inline-files-in-a-makefile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/long-filenames-in-a-makefile.md",
+ "redirect_url": "/cpp/build/reference/long-filenames-in-a-makefile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/macro-substitution.md",
+ "redirect_url": "/cpp/build/reference/macro-substitution",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/macros-and-nmake.md",
+ "redirect_url": "/cpp/build/reference/macros-and-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/makefile-preprocessing-directives.md",
+ "redirect_url": "/cpp/build/reference/makefile-preprocessing-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/makefile-preprocessing-operators.md",
+ "redirect_url": "/cpp/build/reference/makefile-preprocessing-operators",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/makefile-preprocessing.md",
+ "redirect_url": "/cpp/build/reference/expressions-in-makefile-preprocessing",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/msbuild-visual-cpp-overview.md",
+ "redirect_url": "/cpp/build/reference/msbuild-visual-cpp-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/multiple-inline-files.md",
+ "redirect_url": "/cpp/build/reference/multiple-inline-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/multiple-targets.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#multiple-targets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/multiple-targets.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#multiple-targets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/nmake-options.md",
+ "redirect_url": "/cpp/build/reference/running-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/nmake-options.md",
+ "redirect_url": "/cpp/build/reference/running-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/nmake-reference.md",
+ "redirect_url": "/cpp/build/reference/nmake-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/null-and-undefined-macros.md",
+ "redirect_url": "/cpp/build/reference/null-and-undefined-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/precedence-in-inference-rules.md",
+ "redirect_url": "/cpp/build/reference/precedence-in-inference-rules",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/precedence-in-macro-definitions.md",
+ "redirect_url": "/cpp/build/reference/precedence-in-macro-definitions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/predefined-rules.md",
+ "redirect_url": "/cpp/build/reference/predefined-rules",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/profile-guided-optimization-in-the-performance-and-diagnostics-hub.md",
+ "redirect_url": "/cpp/build/profile-guided-optimizations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/pseudotargets.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#pseudotargets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/pseudotargets.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#pseudotargets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/recursion-macros.md",
+ "redirect_url": "/cpp/build/reference/recursion-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reusing-inline-files.md",
+ "redirect_url": "/cpp/build/reference/reusing-inline-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/running-nmake.md",
+ "redirect_url": "/cpp/build/reference/running-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/sample-makefile.md",
+ "redirect_url": "/cpp/build/reference/sample-makefile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/search-paths-for-dependents.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#search-paths-for-dependents",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/search-paths-for-dependents.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#search-paths-for-dependents",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/search-paths-in-rules.md",
+ "redirect_url": "/cpp/build/reference/search-paths-in-rules",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/special-characters-in-a-makefile.md",
+ "redirect_url": "/cpp/build/reference/special-characters-in-a-makefile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/special-characters-in-macros.md",
+ "redirect_url": "/cpp/build/reference/special-characters-in-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/special-nmake-macros.md",
+ "redirect_url": "/cpp/build/reference/special-nmake-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/specifying-an-inline-file.md",
+ "redirect_url": "/cpp/build/reference/specifying-an-inline-file",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/targets-in-multiple-description-blocks.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#targets-in-multiple-description-blocks",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/targets-in-multiple-description-blocks.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#targets-in-multiple-description-blocks",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/targets.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#targets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/targets.md",
+ "redirect_url": "/cpp/build/reference/description-blocks#targets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/tools-ini-and-nmake.md",
+ "redirect_url": "/cpp/build/reference/running-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/tools-ini-and-nmake.md",
+ "redirect_url": "/cpp/build/reference/running-nmake",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/unwind-data-for-exception-handling-debugger-support.md",
+ "redirect_url": "/cpp/build/exception-handling-x64",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/using-an-nmake-macro.md",
+ "redirect_url": "/cpp/build/reference/using-an-nmake-macro",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/where-to-define-macros.md",
+ "redirect_url": "/cpp/build/reference/where-to-define-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/advanced-manifest-tool.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/general-manifest-tool-configuration-properties.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/input-and-output-manifest-tool.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/isolated-com-manifest-tool.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/floating-point-optimization.md",
+ "redirect_url": "/cpp/build/reference/fp-specify-floating-point-behavior",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build-insights/getting-started.md",
+ "redirect_url": "/cpp/build-insights/get-started-with-cpp-build-insights",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-language/index.md",
+ "redirect_url": "/cpp/c-language/c-language-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cloud/index.md",
+ "redirect_url": "/cpp/cloud/cloud-and-web-programming-in-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/using-arrays-cpp.md",
+ "redirect_url": "/cpp/cpp/arrays-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/initializing-arrays.md",
+ "redirect_url": "/cpp/cpp/arrays-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/interpretation-of-subscript-operator.md",
+ "redirect_url": "/cpp/cpp/arrays-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/indirection-on-array-types.md",
+ "redirect_url": "/cpp/cpp/arrays-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/ordering-of-cpp-arrays.md",
+ "redirect_url": "/cpp/cpp/arrays-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/overview-file-translation.md",
+ "redirect_url": "/cpp/preprocessor/phases-of-translation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/auto-keyword.md",
+ "redirect_url": "/cpp/cpp/auto-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/cpp/alignof-and-alignas-cpp.md",
+ "redirect_url": "/cpp/cpp/alignment-cpp-declarations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/attributes2.md",
+ "redirect_url": "/cpp/cpp/attributes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/character-sets2.md",
+ "redirect_url": "/cpp/cpp/character-sets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/index.md",
+ "redirect_url": "/cpp/cpp/cpp-language-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/using-wmain-instead-of-main.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/main-program-startup.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/main-function-restrictions.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/additional-startup-considerations.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/wildcard-expansion.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/parsing-cpp-command-line-arguments.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/customizing-cpp-command-line-processing.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/startup-and-termination-cpp.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/argument-definitions.md",
+ "redirect_url": "/cpp/cpp/main-function-command-line-args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/exit-function.md",
+ "redirect_url": "/cpp/cpp/program-termination",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/abort-function.md",
+ "redirect_url": "/cpp/cpp/program-termination",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/return-statement-in-program-termination-cpp.md",
+ "redirect_url": "/cpp/cpp/program-termination",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/using-exit-or-return.md",
+ "redirect_url": "/cpp/cpp/program-termination",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/using-atexit.md",
+ "redirect_url": "/cpp/cpp/program-termination",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/tokens-cpp.md",
+ "redirect_url": "/cpp/cpp/character-sets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/objects-own-resources-raii.md",
+ "redirect_url": "/cpp/cpp/object-lifetime-and-resource-management-modern-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/algorithms-modern-cpp.md",
+ "redirect_url": "/cpp/cpp/welcome-back-to-cpp-modern-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/containers-modern-cpp.md",
+ "redirect_url": "/cpp/cpp/welcome-back-to-cpp-modern-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/cpp-exception-handling.md",
+ "redirect_url": "/cpp/cpp/exception-handling-in-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/types-of-linkage.md",
+ "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/uniform-initialization-and-delegating-constructors.md",
+ "redirect_url": "/cpp/cpp/initializing-classes-and-structs-without-constructors-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/linkage-in-names-with-file-scope.md",
+ "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/linkage-in-names-with-class-scope.md",
+ "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/linkage-in-names-with-block-scope.md",
+ "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/names-with-no-linkage.md",
+ "redirect_url": "/cpp/cpp/program-and-linkage-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/specifiers.md",
+ "redirect_url": "/cpp/cpp/declarations-and-definitions-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/overview-of-declarators.md",
+ "redirect_url": "/cpp/cpp/declarations-and-definitions-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/point-of-declaration-in-cpp.md",
+ "redirect_url": "/cpp/cpp/declarations-and-definitions-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/template-friends.md",
+ "redirect_url": "/cpp/cpp/templates-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/using-extern-to-specify-linkage.md",
+ "redirect_url": "/cpp/cpp/extern-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/using-structured-exception-handling-with-cpp.md",
+ "redirect_url": "/cpp/cpp/exception-handling-differences",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cpp/support-for-cpp11-14-17-features-modern-cpp.md",
+ "redirect_url": "/cpp/visual-cpp-language-conformance",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cppcx/index.md",
+ "redirect_url": "/cpp/cppcx/visual-c-language-reference-c-cx",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cppcx/operator-subtracttype-hat.md",
+ "redirect_url": "/cpp/cppcx/operator-type-hat",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cppcx/operator-subtractwindows-ui-xaml-interop-typename.md",
+ "redirect_url": "/cpp/cppcx/operator-windows-ui-xaml-interop-typename",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/cppcx/uwp-development.md",
+ "redirect_url": "/cpp/cppcx/universal-windows-apps-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/flag-directives.md",
+ "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#flags",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/index.md",
+ "redirect_url": "/cpp/c-runtime-library/c-run-time-library-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/inp-inpw.md",
+ "redirect_url": "/cpp/c-runtime-library/inp-inpw-inpd",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/c-runtime-library/outp-outpw.md",
+ "redirect_url": "/cpp/c-runtime-library/outp-outpw-outpd",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/c-runtime-library/precision-specification.md",
+ "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#precision",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/printf-type-field-characters.md",
+ "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/printf-width-specification.md",
+ "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#width",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/index.md",
+ "redirect_url": "/cpp/c-runtime-library/crt-alphabetical-function-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/itoa.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/itoa-i64toa-ui64toa-itow-i64tow-ui64tow.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/itoa-s-i64toa-s-ui64toa-s-itow-s-i64tow-s-ui64tow-s.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-s-itow-s",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/ldiv-lldiv.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/div",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/ltoa.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/ltoa-ltow.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/ltoa-s-ltow-s.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-s-itow-s",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/cos-cosf-cosl-cosh-coshf-coshl.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/cos-cosf-cosl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/sin-sinf-sinl-sinh-sinhf-sinhl.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/sin-sinf-sinl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/tan-tanf-tanl-tanh-tanhf-tanhl.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/tan-tanf-tanl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/ultoa.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/ultoa-s-ultow-s.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-s-itow-s",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/reference/ultoa-ultow.md",
+ "redirect_url": "/cpp/c-runtime-library/reference/itoa-itow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/c-runtime-library/size-specification.md",
+ "redirect_url": "/cpp/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/get-started/2017/tutorial-console-cpp.md",
+ "redirect_url": "/cpp/get-started/tutorial-console-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/get-started/2019/tutorial-console-cpp.md",
+ "redirect_url": "/cpp/get-started/tutorial-console-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/get-started/index.yml",
+ "redirect_url": "/cpp/get-started/tutorial-console-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/adding-references-in-visual-cpp-projects.md",
+ "redirect_url": "/cpp/build/adding-references-in-visual-cpp-projects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/advanced-manifest-tool.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/atl-program-or-control-source-and-header-files.md",
+ "redirect_url": "/cpp/build/reference/atl-program-or-control-source-and-header-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/c-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/c-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/cmake-tools-for-visual-cpp.md",
+ "redirect_url": "/cpp/build/cmake-projects-in-visual-studio",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/get-started-linux-cmake.md",
+ "redirect_url": "/cpp/build/get-started-linux-cmake",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/customize-cmake-settings.md",
+ "redirect_url": "/cpp/build/customize-cmake-settings",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/configure-cmake-debugging-sessions.md",
+ "redirect_url": "/cpp/build/configure-cmake-debugging-sessions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/cmakesettings-reference.md",
+ "redirect_url": "/cpp/build/cmakesettings-reference",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/cmake-predefined-configuration-reference.md",
+ "redirect_url": "/cpp/build/cmake-predefined-configuration-reference",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/code-visual-cpp.md",
+ "redirect_url": "/cpp/build/floating-point-support-for-older-code-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/command-line-property-pages.md",
+ "redirect_url": "/cpp/build/reference/command-line-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/common-macros-for-build-commands-and-properties.md",
+ "redirect_url": "/cpp/build/reference/common-macros-for-build-commands-and-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/creating-a-makefile-project.md",
+ "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/creating-and-managing-visual-cpp-projects.md",
+ "redirect_url": "/cpp/build/creating-and-managing-visual-cpp-projects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/custom-build-step-property-page-general.md",
+ "redirect_url": "/cpp/build/reference/custom-build-step-property-page-general",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/delimiters-for-visual-cpp-documentation-tags.md",
+ "redirect_url": "/cpp/build/reference/delimiters-for-visual-cpp-documentation-tags",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/dot-xml-file-processing.md",
+ "redirect_url": "/cpp/build/reference/dot-xml-file-processing",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/example-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/example-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/exception-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/exception-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/file-types-created-for-visual-cpp-projects.md",
+ "redirect_url": "/cpp/build/reference/file-types-created-for-visual-cpp-projects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/files-created-for-clr-projects.md",
+ "redirect_url": "/cpp/build/reference/files-created-for-clr-projects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/formatting-the-output-of-a-custom-build-step-or-build-event.md",
+ "redirect_url": "/cpp/build/formatting-the-output-of-a-custom-build-step-or-build-event",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/general-manifest-tool-configuration-properties.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/general-property-page-file.md",
+ "redirect_url": "/cpp/build/reference/general-property-page-file",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/general-property-page-project.md",
+ "redirect_url": "/cpp/build/reference/general-property-page-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/help-files-html-help.md",
+ "redirect_url": "/cpp/build/reference/help-files-html-help",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/help-files-winhelp.md",
+ "redirect_url": "/cpp/build/reference/help-files-winhelp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/hint-files.md",
+ "redirect_url": "/cpp/build/reference/hint-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/hlsl-property-pages-advanced.md",
+ "redirect_url": "/cpp/build/reference/hlsl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/hlsl-property-pages-general.md",
+ "redirect_url": "/cpp/build/reference/hlsl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/hlsl-property-pages-output-files.md",
+ "redirect_url": "/cpp/build/reference/hlsl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/hlsl-property-pages.md",
+ "redirect_url": "/cpp/build/reference/hlsl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/how-to-create-a-cpp-project-from-existing-code.md",
+ "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/how-to-organize-project-output-files-for-builds.md",
+ "redirect_url": "/cpp/build/how-to-organize-project-output-files-for-builds",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/ide-and-tools-for-visual-cpp-development.md",
+ "redirect_url": "/cpp/overview-of-cpp-development",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/include-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/include-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/input-and-output-manifest-tool.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/isolated-com-manifest-tool.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/linker-property-pages.md",
+ "redirect_url": "/cpp/build/reference/linker-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/list-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/list-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/managed-resources-property-page.md",
+ "redirect_url": "/cpp/build/reference/managed-resources-property-page",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/manifest-tool-property-pages.md",
+ "redirect_url": "/cpp/build/reference/manifest-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/mfc-program-or-control-source-and-header-files.md",
+ "redirect_url": "/cpp/build/reference/mfc-program-or-control-source-and-header-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/midl-property-pages-advanced.md",
+ "redirect_url": "/cpp/build/reference/midl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/midl-property-pages-general.md",
+ "redirect_url": "/cpp/build/reference/midl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/midl-property-pages-output.md",
+ "redirect_url": "/cpp/build/reference/midl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/midl-property-pages.md",
+ "redirect_url": "/cpp/build/reference/midl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/nmake-property-page.md",
+ "redirect_url": "/cpp/build/reference/nmake-property-page",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/non-msbuild-projects.md",
+ "redirect_url": "/cpp/build/open-folder-projects-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/cppproperties-schema-reference.md",
+ "redirect_url": "/cpp/build/cppproperties-schema-reference",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/tasks-vs-json-schema-reference-cpp.md",
+ "redirect_url": "/cpp/build/tasks-vs-json-schema-reference-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/para-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/para-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/param-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/param-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/paramref-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/paramref-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/permission-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/permission-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/precompiled-header-files.md",
+ "redirect_url": "/cpp/build/creating-precompiled-header-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/project-and-solution-files.md",
+ "redirect_url": "/cpp/build/reference/project-and-solution-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/project-files.md",
+ "redirect_url": "/cpp/build/reference/project-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/property-page-xml-files.md",
+ "redirect_url": "/cpp/build/reference/property-page-xml-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/property-pages-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/property-pages-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/recommended-tags-for-documentation-comments-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/recommended-tags-for-documentation-comments-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/remarks-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/remarks-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/resource-files-cpp.md",
+ "redirect_url": "/cpp/build/reference/resource-files-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/resources-property-pages.md",
+ "redirect_url": "/cpp/build/reference/resources-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/returns-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/returns-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/see-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/see-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/seealso-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/seealso-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/specifying-build-events.md",
+ "redirect_url": "/cpp/build/specifying-build-events",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/specifying-custom-build-tools.md",
+ "redirect_url": "/cpp/build/specifying-custom-build-tools",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/summary-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/summary-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/troubleshooting-build-customizations.md",
+ "redirect_url": "/cpp/build/troubleshooting-build-customizations",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/understanding-custom-build-steps-and-build-events.md",
+ "redirect_url": "/cpp/build/understanding-custom-build-steps-and-build-events",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/using-visual-cpp-add-new-item-templates.md",
+ "redirect_url": "/cpp/build/reference/using-visual-cpp-add-new-item-templates",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/value-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/value-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/vcpp-directories-property-page.md",
+ "redirect_url": "/cpp/build/reference/vcpp-directories-property-page",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/vcxproj-file-structure.md",
+ "redirect_url": "/cpp/build/reference/vcxproj-file-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/visual-cpp-project-types.md",
+ "redirect_url": "/cpp/build/reference/visual-cpp-project-types",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio.md",
+ "redirect_url": "/cpp/dotnet/walkthrough-compiling-a-cpp-program-that-targets-the-clr-in-visual-studio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/web-references-property-page.md",
+ "redirect_url": "/cpp/build/reference/web-references-property-page",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/working-with-project-properties.md",
+ "redirect_url": "/cpp/build/working-with-project-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/xdcmake-reference.md",
+ "redirect_url": "/cpp/build/reference/xdcmake-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/xml-data-generator-tool-property-page.md",
+ "redirect_url": "/cpp/build/reference/xml-data-generator-tool-property-page",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/xml-document-generator-tool-property-pages.md",
+ "redirect_url": "/cpp/build/reference/xml-document-generator-tool-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/xml-documentation-visual-cpp.md",
+ "redirect_url": "/cpp/build/reference/xml-documentation-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/how-to-enable-intellisense-for-makefile-projects.md",
+ "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/makefile-project-wizard.md",
+ "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/application-settings-makefile-project-wizard.md",
+ "redirect_url": "/cpp/build/reference/creating-a-makefile-project",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/add-class-dialog-box.md",
+ "redirect_url": "/cpp/ide/adding-a-class-visual-cpp#add-class-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/add-class-from-activex-control-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-class-from-an-activex-control-visual-cpp#add-class-from-activex-control-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/generic-cpp-class-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-generic-cpp-class#generic-c-class-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/add-member-function-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-member-function-visual-cpp#add-member-function-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/add-member-variable-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-member-variable-visual-cpp#add-member-variable-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/dialog-box-controls-and-variable-types.md",
+ "redirect_url": "/cpp/ide/adding-a-member-variable-visual-cpp#dialog-box-controls-and-variable-types",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/add-method-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-method-visual-cpp#add-method-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/idl-attributes-add-method-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-method-visual-cpp#idl-attributes-add-method-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/names-add-property-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-property-visual-cpp#names-add-property-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/idl-attributes-add-property-wizard.md",
+ "redirect_url": "/cpp/ide/adding-a-property-visual-cpp#idl-attributes-add-property-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/stock-properties.md",
+ "redirect_url": "/cpp/ide/adding-a-property-visual-cpp#stock-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/add-event-wizard.md",
+ "redirect_url": "/cpp/ide/adding-an-event-visual-cpp#add-event-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/event-handler-wizard.md",
+ "redirect_url": "/cpp/ide/adding-an-event-handler-visual-cpp#event-handler-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/editing-a-com-interface.md",
+ "redirect_url": "/cpp/ide/creating-a-com-interface-visual-cpp#edit-a-com-interface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/implement-connection-point-wizard.md",
+ "redirect_url": "/cpp/ide/implementing-a-connection-point-visual-cpp#implement-connection-point-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/implement-interface-wizard.md",
+ "redirect_url": "/cpp/ide/implementing-an-interface-visual-cpp#implement-interface-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorbase-close.md",
+ "redirect_url": "/cpp/data/oledb/caccessorbase-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorbase-gethaccessor.md",
+ "redirect_url": "/cpp/data/oledb/caccessorbase-class#geth",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorbase-getnumaccessors.md",
+ "redirect_url": "/cpp/data/oledb/caccessorbase-class#getnum",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorbase-isautoaccessor.md",
+ "redirect_url": "/cpp/data/oledb/caccessorbase-class#isauto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorbase-releaseaccessors.md",
+ "redirect_url": "/cpp/data/oledb/caccessorbase-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorrowset-members.md",
+ "redirect_url": "/cpp/data/oledb/caccessorrowset-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorrowset-methods.md",
+ "redirect_url": "/cpp/data/oledb/caccessorrowset-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorrowset-bind.md",
+ "redirect_url": "/cpp/data/oledb/caccessorrowset-class#bind",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorrowset-caccessorrowset.md",
+ "redirect_url": "/cpp/data/oledb/caccessorrowset-class#caccessorrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorrowset-close.md",
+ "redirect_url": "/cpp/data/oledb/caccessorrowset-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorrowset-freerecordmemory.md",
+ "redirect_url": "/cpp/data/oledb/caccessorrowset-class#freerecordmemory",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/caccessorrowset-getcolumninfo.md",
+ "redirect_url": "/cpp/data/oledb/caccessorrowset-class#getcolumninfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/carrayrowset-carrayrowset.md",
+ "redirect_url": "/cpp/data/oledb/carrayrowset-class#carrayrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/carrayrowset-m-nrowsread.md",
+ "redirect_url": "/cpp/data/oledb/carrayrowset-class#nrowsread",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/carrayrowset-operator.md",
+ "redirect_url": "/cpp/data/oledb/carrayrowset-class#operator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/carrayrowset-snapshot.md",
+ "redirect_url": "/cpp/data/oledb/carrayrowset-class#snapshot",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbookmark-cbookmark.md",
+ "redirect_url": "/cpp/data/oledb/cbookmark-class#cbookmark",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbookmark-getbuffer.md",
+ "redirect_url": "/cpp/data/oledb/cbookmark-class#getbuffer",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbookmark-getsize.md",
+ "redirect_url": "/cpp/data/oledb/cbookmark-class#getsize",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbookmark-operator-equal.md",
+ "redirect_url": "/cpp/data/oledb/cbookmark-class#operator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbookmark-setbookmark.md",
+ "redirect_url": "/cpp/data/oledb/cbookmark-class#setbookmark",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-addrefrows.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#addrefrows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-cbulkrowset.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#cbulkrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-movefirst.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movefirst",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-movelast.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movelast",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-movenext.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movenext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-moveprev.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#moveprev",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-movetobookmark.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movetobookmark",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-movetoratio.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#movetoratio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-releaserows.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#releaserows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cbulkrowset-setrows.md",
+ "redirect_url": "/cpp/data/oledb/cbulkrowset-class#setrows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-close.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-create.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#create",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-createcommand.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#createcommand",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-getnextresult.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#getnextresult",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-getparameterinfo.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#getparameterinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-open.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#open",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-prepare.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#prepare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-releasecommand.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#releasecommand",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-setparameterinfo.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#setparameterinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccommand-unprepare.md",
+ "redirect_url": "/cpp/data/oledb/ccommand-class#unprepare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-cdataconnection.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#cdataconnection",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-copy.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-open.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#open",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-opennewsession.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#opennewsession",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-operator-bool.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_bool",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-operator-bool-ole-db.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_bool_ole",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-operator-cdatasource-amp.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_cdata_amp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-operator-cdatasource-star.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_cdata_star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-operator-csession-amp.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_csession_amp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdataconnection-operator-csession-star.md",
+ "redirect_url": "/cpp/data/oledb/cdataconnection-class#op_csession_star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-close.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-getinitializationstring.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#getinitializationstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-getproperties.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#getproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-getproperty.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#getproperty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-open.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#open",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-openfromfilename.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#openfromfilename",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-openfrominitializationstring.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#openfrominitializationstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-openwithpromptfilename.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#openwithpromptfilename",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdatasource-openwithservicecomponents.md",
+ "redirect_url": "/cpp/data/oledb/cdatasource-class#openwithservicecomponents",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdberrorinfo-getallerrorinfo.md",
+ "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#getallerrorinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdberrorinfo-getbasicerrorinfo.md",
+ "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#getbasicerrorinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdberrorinfo-getcustomerrorobject.md",
+ "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#getcustomerrorobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdberrorinfo-geterrorinfo.md",
+ "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#geterrorinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdberrorinfo-geterrorparameters.md",
+ "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#geterrorparameters",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdberrorinfo-geterrorrecords.md",
+ "redirect_url": "/cpp/data/oledb/cdberrorinfo-class#geterrorrecords",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropidset-addpropertyid.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropidset-class#addpropertyid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropidset-cdbpropidset.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropidset-class#cdbpropidset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropidset-operator-equal.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropidset-class#op_equal",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropidset-setguid.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropidset-class#setguid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropset-addproperty.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropset-class#addproperty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropset-cdbpropset.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropset-class#cdbpropset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropset-operator-equal.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropset-class#op_equal",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdbpropset-setguid.md",
+ "redirect_url": "/cpp/data/oledb/cdbpropset-class#setguid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-addbindentry.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#addbindentry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-cdynamicaccessor.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#cdynamicaccessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-close.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getblobhandling.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getblobhandling",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getblobsizelimit.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getblobsizelimit",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getbookmark.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getbookmark",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getcolumncount.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumncount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getcolumnflags.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumnflags",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getcolumninfo.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumninfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getcolumnname.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumnname",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getcolumntype.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getcolumntype",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getlength.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getlength",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getordinal.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getordinal",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getstatus.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-getvalue.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#getvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-setblobhandling.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setblobhandling",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-setblobsizelimit.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setblobsizelimit",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-setlength.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setlength",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-setstatus.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicaccessor-setvalue.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicaccessor-class#setvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-cdynamicparameteraccessor.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#cdynamicparameteraccessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparam.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparam",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamcount.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamio.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamlength.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamlength",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamname.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamname",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamstatus.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamstring.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-getparamtype.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#getparamtype",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparam.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparam",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparamlength.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparamlength",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparamstatus.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparamstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicparameteraccessor-setparamstring.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicparameteraccessor-class#setparamstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicstringaccessor-getstring.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicstringaccessor-class#getstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cdynamicstringaccessor-setstring.md",
+ "redirect_url": "/cpp/data/oledb/cdynamicstringaccessor-class#setstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumerator-find.md",
+ "redirect_url": "/cpp/data/oledb/cenumerator-class#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumerator-getmoniker.md",
+ "redirect_url": "/cpp/data/oledb/cenumerator-class#getmoniker",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumerator-open.md",
+ "redirect_url": "/cpp/data/oledb/cenumerator-class#open",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumeratoraccessor-m-bisparent.md",
+ "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#bisparent",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumeratoraccessor-m-ntype.md",
+ "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#ntype",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumeratoraccessor-m-szdescription.md",
+ "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#szdescription",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumeratoraccessor-m-szname.md",
+ "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#szname",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cenumeratoraccessor-m-szparsename.md",
+ "redirect_url": "/cpp/data/oledb/cenumeratoraccessor-class#szparsename",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cmanualaccessor-addbindentry.md",
+ "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#addbindentry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cmanualaccessor-addparameterentry.md",
+ "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#addparameterentry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cmanualaccessor-createaccessor.md",
+ "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#createaccessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cmanualaccessor-createparameteraccessor.md",
+ "redirect_url": "/cpp/data/oledb/cmanualaccessor-class#createparameteraccessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crestrictions-open.md",
+ "redirect_url": "/cpp/data/oledb/crestrictions-class#open",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-addrefrows.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#addrefrows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-close.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-compare.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-crowset.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#crowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-delete.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#delete",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-findnextrow.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#findnextrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-getapproximateposition.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#getapproximateposition",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-getdata.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#getdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-getdatahere.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#getdatahere",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-getoriginaldata.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#getoriginaldata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-getrowstatus.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#getrowstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-insert.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-issamerow.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#issamerow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-movefirst.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#movefirst",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-movelast.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#movelast",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-movenext.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#movenext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-moveprev.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#moveprev",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-movetobookmark.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#movetobookmark",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-movetoratio.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#movetoratio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-releaserows.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#releaserows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-setdata.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#setdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-undo.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#undo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-update.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#update",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowset-updateall.md",
+ "redirect_url": "/cpp/data/oledb/crowset-class#updateall",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csession-abort.md",
+ "redirect_url": "/cpp/data/oledb/csession-class#abort",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csession-close.md",
+ "redirect_url": "/cpp/data/oledb/csession-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csession-commit.md",
+ "redirect_url": "/cpp/data/oledb/csession-class#commit",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csession-gettransactioninfo.md",
+ "redirect_url": "/cpp/data/oledb/csession-class#gettransactioninfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csession-open.md",
+ "redirect_url": "/cpp/data/oledb/csession-class#open",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csession-starttransaction.md",
+ "redirect_url": "/cpp/data/oledb/csession-class#starttransaction",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cstreamrowset-close.md",
+ "redirect_url": "/cpp/data/oledb/cstreamrowset-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cstreamrowset-cstreamrowset.md",
+ "redirect_url": "/cpp/data/oledb/cstreamrowset-class#cstreamrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ctable-open.md",
+ "redirect_url": "/cpp/data/oledb/ctable-class#open",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cxmlaccessor-getxmlcolumndata.md",
+ "redirect_url": "/cpp/data/oledb/cxmlaccessor-class#getxmlcolumndata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cxmlaccessor-getxmlrowdata.md",
+ "redirect_url": "/cpp/data/oledb/cxmlaccessor-class#getxmlrowdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetnotifyimpl-onfieldchange.md",
+ "redirect_url": "/cpp/data/oledb/irowsetnotifyimpl-class#onfieldchange",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetnotifyimpl-onrowchange.md",
+ "redirect_url": "/cpp/data/oledb/irowsetnotifyimpl-class#onrowchange",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetnotifyimpl-onrowsetchange.md",
+ "redirect_url": "/cpp/data/oledb/irowsetnotifyimpl-class#onrowsetchange",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cassertions-cassertioninfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#assertion",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccatalogs-ccataloginfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#catalog",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccharactersets-ccharactersetinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#characterset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccheckconstraints-ccheckconstraintinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#checkconstraint",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccollations-ccollationinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#collation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccolumndomainusage-ccolumndomainusageinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#columndomainusage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccolumnprivileges-ccolumnprivilegeinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#columnprivilege",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ccolumns-ccolumnsinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#columns",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cconstraintcolumnusage-cconstraintcolumnusageinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#constraintcolumnusage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cconstrainttableusage-cconstrainttableusageinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#constrainttableusage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cforeignkeys-cforeignkeysinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#foreignkeys",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cindexes-cindexinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#index",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ckeycolumns-ckeycolumninfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#keycolumn",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cprimarykeys-cprimarykeyinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#primarykey",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cprocedurecolumns-cprocedurecolumninfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#procedurecolumn",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cprocedureparameters-cprocedureparaminfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#procedureparam",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cprocedures-cprocedureinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#procedure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cprovidertypes-cproviderinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#provider",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/creferentialconstraints-creferentialconstraintinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#referentialconstraint",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cschemata-cschematainfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#schemata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csqllanguages-csqllanguageinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#sqllanguage",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cstatistics-cstatisticinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#statistic",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ctableconstraints-ctableconstraintinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#tableconstraint",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ctableprivileges-ctableprivilegeinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#tableprivilege",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ctables-ctableinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#table",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ctranslations-ctranslationinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#translation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cusageprivileges-cusageprivilegeinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#usageprivilege",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cviewcolumnusage-cviewcolumninfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#viewcolumn",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cviews-cviewinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#view",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cviewtableusage-cviewtableinfo.md",
+ "redirect_url": "/cpp/data/oledb/schema-rowset-classes-and-typedef-classes#viewtable",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/atltraceerrorrecords.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#atltraceerrorrecords",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-accessor.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_accessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-accessor-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_accessor_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-column-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_column_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-param-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#begin_param_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-entry.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-entry-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-entry-length-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry_length_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-entry-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_entry_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-name.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-name-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-name-length-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name_length_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/blob-name-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#blob_name_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/bookmark-entry.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#bookmark_entry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-ex.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ex",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-length-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_length_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-ps.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-ps-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-ps-length-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps_length_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-ps-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_ps_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-type.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-entry-type-size.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_entry_type_size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-ex.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ex",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-length-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_length_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-ps.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-ps-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-ps-length-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps_length_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-ps-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_ps_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-type.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-type-ps.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type_ps",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-type-size.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type_size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/column-name-type-status.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#column_name_type_status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/define-command.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#define_command",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/define-command-ex.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#define_command_ex",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-accessor.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_accessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-accessor-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_accessor_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-column-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_column_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-param-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#end_param_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/set-param-type.md",
+ "redirect_url": "/cpp/data/oledb/macros-and-global-functions-for-ole-db-consumer-templates#set_param_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-getcolumninfo.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#getcolumninfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-getcommandfromid.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#getcommandfromid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-m-rgrowdata.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#rgrowdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-m-strcommandtext.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#strcommandtext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-m-strindextext.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#strindextext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-namefromdbid.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#namefromdbid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-setcommandtext.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#setcommmandtext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/crowsetimpl-validatecommandid.md",
+ "redirect_url": "/cpp/data/oledb/crowsetimpl-class#validatecommandid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csimplerow-addrefrow.md",
+ "redirect_url": "/cpp/data/oledb/csimplerow-class#addrefrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csimplerow-compare.md",
+ "redirect_url": "/cpp/data/oledb/csimplerow-class#compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csimplerow-csimplerow.md",
+ "redirect_url": "/cpp/data/oledb/csimplerow-class#csimplerow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csimplerow-m-dwref.md",
+ "redirect_url": "/cpp/data/oledb/csimplerow-class#dwref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csimplerow-m-irowset.md",
+ "redirect_url": "/cpp/data/oledb/csimplerow-class#irowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/csimplerow-releaserow.md",
+ "redirect_url": "/cpp/data/oledb/csimplerow-class#releaserow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cutlprops-getpropvalue.md",
+ "redirect_url": "/cpp/data/oledb/cutlprops-class#getpropvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cutlprops-isvalidvalue.md",
+ "redirect_url": "/cpp/data/oledb/cutlprops-class#isvalidvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cutlprops-oninterfacerequested.md",
+ "redirect_url": "/cpp/data/oledb/cutlprops-class#oninterfacerequested",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cutlprops-onpropertychanged.md",
+ "redirect_url": "/cpp/data/oledb/cutlprops-class#onpropertychanged",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/cutlprops-setpropvalue.md",
+ "redirect_url": "/cpp/data/oledb/cutlprops-class#setpropvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iaccessorimpl-addrefaccessor.md",
+ "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#addrefaccessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iaccessorimpl-createaccessor.md",
+ "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#createaccessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iaccessorimpl-getbindings.md",
+ "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#getbindings",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iaccessorimpl-iaccessorimpl.md",
+ "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#iaccessorimpl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iaccessorimpl-releaseaccessor.md",
+ "redirect_url": "/cpp/data/oledb/iaccessorimpl-class#releaseaccessor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icolumnsinfoimpl-getcolumninfo.md",
+ "redirect_url": "/cpp/data/oledb/icolumnsinfoimpl-class#getcolumninfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icolumnsinfoimpl-mapcolumnids.md",
+ "redirect_url": "/cpp/data/oledb/icolumnsinfoimpl-class#mapcolumnids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-cancel.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#cancel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-cancelexecution.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#cancelexecution",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-createrowset.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#createrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-execute.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#execute",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-getdbsession.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#getdbsession",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-icommandimpl.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#icommandimpl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-m-bcancel.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#bcancel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-m-bcancelwhenexecuting.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#bcancelwhenexecuting",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandimpl-m-bisexecuting.md",
+ "redirect_url": "/cpp/data/oledb/icommandimpl-class#bisexecuting",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandpropertiesimpl-getproperties.md",
+ "redirect_url": "/cpp/data/oledb/icommandpropertiesimpl-class#getproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandpropertiesimpl-setproperties.md",
+ "redirect_url": "/cpp/data/oledb/icommandpropertiesimpl-class#setproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandtextimpl-getcommandtext.md",
+ "redirect_url": "/cpp/data/oledb/icommandtextimpl-class#getcommandtext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandtextimpl-m-strcommandtext.md",
+ "redirect_url": "/cpp/data/oledb/icommandtextimpl-class#strcommandtext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/icommandtextimpl-setcommandtext.md",
+ "redirect_url": "/cpp/data/oledb/icommandtextimpl-class#setcommandtext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iconverttypeimpl-canconvert.md",
+ "redirect_url": "/cpp/data/oledb/iconverttypeimpl-class#canconvert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbcreatecommandimpl-createcommand.md",
+ "redirect_url": "/cpp/data/oledb/idbcreatecommandimpl-class#createcommand",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbcreatesessionimpl-createsession.md",
+ "redirect_url": "/cpp/data/oledb/idbcreatesessionimpl-class#createsession",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbinitializeimpl-idbinitializeimpl.md",
+ "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#idbinitializeimpl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbinitializeimpl-initialize.md",
+ "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#initialize",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbinitializeimpl-m-dwstatus.md",
+ "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#dwstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbinitializeimpl-m-pcutlpropinfo.md",
+ "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#pcutlpropinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbinitializeimpl-uninitialize.md",
+ "redirect_url": "/cpp/data/oledb/idbinitializeimpl-class#uninitialize",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbpropertiesimpl-getproperties.md",
+ "redirect_url": "/cpp/data/oledb/idbpropertiesimpl-class#getproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbpropertiesimpl-getpropertyinfo.md",
+ "redirect_url": "/cpp/data/oledb/idbpropertiesimpl-class#getpropertyinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbpropertiesimpl-setproperties.md",
+ "redirect_url": "/cpp/data/oledb/idbpropertiesimpl-class#setproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbschemarowsetimpl-checkrestrictions.md",
+ "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#checkrestrictions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbschemarowsetimpl-createschemarowset.md",
+ "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#createschemarowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbschemarowsetimpl-getrowset.md",
+ "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#getrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbschemarowsetimpl-getschemas.md",
+ "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#getschemas",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/idbschemarowsetimpl-setrestrictions.md",
+ "redirect_url": "/cpp/data/oledb/idbschemarowsetimpl-class#setrestrictions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-adderrorrecord.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#adderrorrecord",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-getbasicerrorinfo.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#getbasicerrorinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-getcustomerrorobject.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#getcustomerrorobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrordescriptionstring.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrordescriptionstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorguid.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorguid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorhelpcontext.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorhelpcontext",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorhelpfile.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorhelpfile",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorinfo.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorinfo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorparameters.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorparameters",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-getrecordcount.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#getrecordcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-geterrorsource.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#geterrorsource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/ierrorrecordsimpl-m-rgerrors.md",
+ "redirect_url": "/cpp/data/oledb/ierrorrecordsimpl-class#rgerrors",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetinfoimpl-getproperties.md",
+ "redirect_url": "/cpp/data/oledb/irowsetinfoimpl-class#getproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetinfoimpl-getreferencedrowset.md",
+ "redirect_url": "/cpp/data/oledb/irowsetinfoimpl-class#getreferencedrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetinfoimpl-getspecification.md",
+ "redirect_url": "/cpp/data/oledb/irowsetinfoimpl-class#getspecification",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetlocateimpl-compare.md",
+ "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetlocateimpl-getrowsat.md",
+ "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#getrowsat",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetlocateimpl-getrowsbybookmark.md",
+ "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#getrowsbybookmark",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetlocateimpl-hash.md",
+ "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#hash",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetlocateimpl-m-rgbookmarks.md",
+ "redirect_url": "/cpp/data/oledb/irowsetlocateimpl-class#rgbookmarks",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetnotifycp-fire-onfieldchange.md",
+ "redirect_url": "/cpp/data/oledb/irowsetnotifycp-class#onfieldchange",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetnotifycp-fire-onrowchange.md",
+ "redirect_url": "/cpp/data/oledb/irowsetnotifycp-class#onrowchange",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetnotifycp-fire-onrowsetchange.md",
+ "redirect_url": "/cpp/data/oledb/irowsetnotifycp-class#onrowsetchange",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-getpendingrows.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#getpendingrows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-getoriginaldata.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#getoriginaldata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-getrowstatus.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#getrowstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-isupdateallowed.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#isupdateallowed",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-m-mapcacheddata.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#mapcacheddata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-setdata.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#setdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-undo.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#undo",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetupdateimpl-update.md",
+ "redirect_url": "/cpp/data/oledb/irowsetupdateimpl-class#update",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/isessionpropertiesimpl-getproperties.md",
+ "redirect_url": "/cpp/data/oledb/isessionpropertiesimpl-class#getproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/isessionpropertiesimpl-setproperties.md",
+ "redirect_url": "/cpp/data/oledb/isessionpropertiesimpl-class#setproperties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/igetdatasourceimpl-getdatasource.md",
+ "redirect_url": "/cpp/data/oledb/igetdatasourceimpl-class#getdatasource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iopenrowsetimpl-createrowset.md",
+ "redirect_url": "/cpp/data/oledb/iopenrowsetimpl-class#createrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/iopenrowsetimpl-openrowset.md",
+ "redirect_url": "/cpp/data/oledb/iopenrowsetimpl-class#openrowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetchangeimpl-deleterows.md",
+ "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#deleterows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetchangeimpl-flushdata.md",
+ "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#flushdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetchangeimpl-insertrow.md",
+ "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#insertrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetchangeimpl-setdata.md",
+ "redirect_url": "/cpp/data/oledb/irowsetchangeimpl-class#setdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetcreatorimpl-setsite.md",
+ "redirect_url": "/cpp/data/oledb/irowsetcreatorimpl-class#setsite",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetidentityimpl-issamerow.md",
+ "redirect_url": "/cpp/data/oledb/irowsetidentityimpl-class#issamerow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-addrefrows.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#addrefrows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-createrow.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#createrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-getdata.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#getdata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-getdbstatus.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#getdbstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-getnextrows.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#getnextrows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-irowsetimpl.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#irowsetimpl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-m-bcanfetchback.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#bcanfetchback",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-m-bcanscrollback.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#bcanscrollback",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-m-breset.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#breset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-m-irowset.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#irowset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-m-rgrowhandles.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#rgrowhandles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-refrows.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#refrows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-releaserows.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#releaserows",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-restartposition.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#restartposition",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/irowsetimpl-setdbstatus.md",
+ "redirect_url": "/cpp/data/oledb/irowsetimpl-class#setdbstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-property-set.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_property_set",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-property-set-ex.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_property_set_ex",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-propset-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_propset_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-provider-column-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_provider_column_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/begin-schema-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#begin_schema_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/chain-property-set.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#chain_property_set",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-property-set.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_property_set",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-propset-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_propset_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-provider-column-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_provider_column_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/end-schema-map.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#end_schema_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/provider-column-entry.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/provider-column-entry-gn.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_gn",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/provider-column-entry-fixed.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_fixed",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/provider-column-entry-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/provider-column-entry-str.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_str",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/provider-column-entry-type-length.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_type_length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/provider-column-entry-wstr.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#provider_column_entry_wstr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/property-info-entry.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#property_info_entry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/property-info-entry-ex.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#property_info_entry_ex",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/property-info-entry-value.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#property_info_entry_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/data/oledb/schema-entry.md",
+ "redirect_url": "/cpp/data/oledb/macros-for-ole-db-provider-templates#schema_entry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/index.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#collection_adapter",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-base-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#base",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-collection-adapter-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#collection_adapter_collection_adapter",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-mapped-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#mapped_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/collection-adapter-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/make-collection-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#make_collection",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/range-adapter-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#range_adapter",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/range-adapter-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#range_adapter_op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/range-adapter-range-adapter-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/adapter-stl-clr#range_adapter_range_adapter",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/binary-delegate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#binary_delegate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/binary-delegate-noreturn-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#binary_delegate_noreturn",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/binary-negate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#negate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/bind1st-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#bind1st",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/bind2nd-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#bind2nd",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/binder1st-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#binder1st",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/binder2nd-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#binder2nd",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/divides-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#divides",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/equal-to-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#equal_to",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/greater-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#greater",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-migrate-to-clr-safe-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/pure-and-verifiable-code-cpp-cli",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/mixed-pure-and-verifiable-feature-comparison-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/pure-and-verifiable-code-cpp-cli",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/greater-equal-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#greater_equal",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/less-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#less",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/less-equal-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#less_equal",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/logical-and-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#logical_and",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/logical-not-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#logical_not",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/logical-or-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#logical_or",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/minus-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#minus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/modulus-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#modulus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiplies-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#multiplies",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/negate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#negate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/not-equal-to-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#not_equal_to",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/not1-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#not1",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/not2-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#not2",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/plus-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#plus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/unary-delegate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#unary_delegate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/unary-delegate-noreturn-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#unary_delegate_noreturn",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/unary-negate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/functional-stl-clr#unary_negate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/adjacent-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#adjacent_find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/binary-search-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#binary_search",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/copy-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/copy-backward-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#copy_backward",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/count-if-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#count_if",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/equal-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#equal",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/fill-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#fill",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/fill-n-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#fill_n",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/find-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find_end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/find-first-of-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find_first_of",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/find-if-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#find_if",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/for-each-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#for_each",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/generate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#generate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/generate-n-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#generate_n",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/includes-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#includes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/inplace-merge-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#inplace_merge",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/iter-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#iter_swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lexicographical-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#lexicographical_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/make-heap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#make_heap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/max-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#max",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/max-element-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#max_element",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/merge-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#merge",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/min-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#min",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/min-element-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#min_element",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/mismatch-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#mismatch",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/next-permutation-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#next_permuatation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/nth-element-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#nth_element",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/partial-sort-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#partial_sort",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/partial-sort-copy-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#partial_sort_copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/partition-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#partition",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pop-heap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#pop_heap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/prev-permutation-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#prev_permutation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/push-heap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#push_heap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/random-shuffle-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#random_shuffle",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/remove-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/rremove-copy-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove_copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/remove-copy-if-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove_copy_if",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/remove-if-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#remove_if",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/replace-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/replace-copy-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace_copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/replace-copy-if-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace_copy_if",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/replace-if-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#replace_if",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/reverse-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#reverse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/reverse-copy-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#reverse_copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/rotate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#rotate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/rotate-copy-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#rotate_copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/search-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#search",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/search-n-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#search_n",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-difference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_difference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-intersection-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_intersection",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-symmetric-difference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_symmetric_difference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-union-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#set_union",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/sort-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#sort",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/sort-heap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#sort_heap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stable-partition-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#stable_partition",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stable-sort-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#stable_sort",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/swap-ranges-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#swap_ranges",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/transform-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#transform",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/unique-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#unique",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/unique-copy-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#unique_copy",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/algorithm-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-at-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#at",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-back-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#back_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-deque-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#deque",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-front-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#front_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-operator-inequality-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-operator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#operator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-pop-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#pop_back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-pop-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#pop_front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-push-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#push_back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-push-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#push_front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-resize-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#resize",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/deque-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-deque-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-deque-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-assign-deque-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-deque-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-deque-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-deque-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/deque-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-bucket-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#bucket_count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-hash-delegate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#hash_delegate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-hash-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#hash_map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-hasher-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#hasher",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-mapped-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#mapped_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-max-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#max_load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-operator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#op",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-rehash-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#rehash",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-map-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-map-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-bucket-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#bucket_count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-hash-delegate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#hash_delegate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-hash-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#hash_multimap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-hasher-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#hasher",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-mapped-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#mapped_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-max-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#max_load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#op",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-rehash-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#rehash",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multimap-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multimap-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-bucket-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-hash-delegate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#hash_delegate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-hash-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#hash_multiset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-hasher-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#hasher",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-max-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#max_load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#op",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-rehash-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#rehash",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-multiset-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-multiset-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-bucket-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#bucket_count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-hash-delegate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#hash_delegate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-hash-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#hash_set",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-hasher-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#hasher",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-max-load-factor-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#max_load_factor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#op",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-rehash-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#rehash",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/hash-set-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/hash-set-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-back-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#back_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-front-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#front_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-list-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#list",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-merge-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#merge",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-pop-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#pop_back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-pop-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#pop_front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-push-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#push_back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-push-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#push_front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-remove-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#remove",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-remove-if-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#remove_if",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-resize-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#resize",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-reverse-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#reverse",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-sort-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#sort",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-splice-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#splice",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-unique-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#unique",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/list-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-list-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-list-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-list-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-list-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-list-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-list-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/list-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#map",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-mapped-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#mapped_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-operator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/map-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-map-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/map-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-mapped-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#mapped_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#multimap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multimap-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-multimap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multimap-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#multiset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/multiset-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-multiset-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/multiset-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/accumulate-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/numeric-stl-clr#accumulate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/adjacent-difference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/numeric-stl-clr#adjacent_difference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/inner-product-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/numeric-stl-clr#inner_product",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/partial-sum-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/numeric-stl-clr#partial_sum",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-container-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#container_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-get-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#get_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-pop-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#pop",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-priority-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#priority_queue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-push-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#push",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-top-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#top",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-top-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#top_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/priority-queue-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/priority-queue-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-back-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#back_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-container-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#container_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-front-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#front_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-get-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#get_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-pop-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#pop",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-push-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#push",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-queue-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#queue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/queue-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/queue-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-count-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#count",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-equal-range-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#equal_range",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-find-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#find",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#generic_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-key-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#key_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-key-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#key_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-key-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#key_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-lower-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#lower_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-make-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#make_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-set-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#set",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-upper-bound-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#upper_bound",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-value-comp-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#value_comp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-value-compare-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#value_compare",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/set-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/set-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-stack-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-stack-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-stack-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-stack-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-stack-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-stack-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-container-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#container_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-get-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#get_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-pop-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#pop",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-push-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#push",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-stack-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#stack",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-top-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#top",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-top-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#top_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/stack-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/stack-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/make-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#make_pair",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#pair",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-first-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#first",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-first-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#first_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-pair-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#pair_pair",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-second-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#second",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-second-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#second_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/pair-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/utility-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-inequality-vector-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op_neq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-than-vector-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op_lt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-less-or-equal-vector-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op_lteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-equality-vector-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op_eq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-than-vector-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op_gt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/operator-greater-or-equal-vector-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op_gteq",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-at-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#at",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-back-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#back_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-begin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-capacity-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#capacity",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-clear-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#clear",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-const-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#const_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-const-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#const_reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-const-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#const_reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-difference-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#difference_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-empty-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#empty",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-end-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-erase-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#erase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-front-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#front",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-front-item-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#front_item",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-generic-container-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_container",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-generic-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-generic-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_revere_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-generic-value-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#generic_value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-insert-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#insert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-operator-assign-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op_as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-operator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#op",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-pop-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#pop_back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-push-back-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#push_back",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-rbegin-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#rbegin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-reference-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-rend-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#rend",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-reserve-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#reserve",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-resize-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#resize",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-reverse-iterator-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#reverse_iterator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-size-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#size",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-size-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#size_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-swap-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-to-array-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#to_array",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-value-type-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#value_type",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/vector-vector-stl-clr.md",
+ "redirect_url": "/cpp/dotnet/vector-stl-clr#vector",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-use-regular-expressions-for-simple-matching-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_simple",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-use-regular-expressions-to-extract-data-fields-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_extract",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-use-regular-expressions-to-rearrange-data-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_rearrange",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-use-regular-expressions-to-search-and-replace-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_search",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-use-regular-expressions-to-validate-data-formatting-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#regex_validate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-parse-strings-using-the-split-method-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#parse_split",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-parse-strings-using-regular-expressions-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/regular-expressions-cpp-cli#parse_regex",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-enumerate-files-in-a-directory-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#enumerate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-monitor-file-system-changes-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#monitor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-read-a-binary-file-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#read_binary",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-read-a-text-file-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#read_text",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-retrieve-file-information-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#retrieve",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-write-a-binary-file-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#write_binary",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-write-a-text-file-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/file-handling-and-i-o-cpp-cli#write_text",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-convert-image-file-formats-with-the-dotnet-framework.md",
+ "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#convert",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-display-images-with-the-dotnet-framework.md",
+ "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#display",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-draw-shapes-with-the-dotnet-framework.md",
+ "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#draw",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-rotate-images-with-the-dotnet-framework.md",
+ "redirect_url": "/cpp/dotnet/graphics-operations-cpp-cli#rotate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-determine-if-shutdown-has-started-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#determine_shutdown",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-determine-the-user-interactive-state-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#determine_user",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-read-data-from-the-windows-registry-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#read_registry",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-read-windows-performance-counters-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#read_performance",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-retrieve-text-from-the-clipboard-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_text",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-retrieve-the-dotnet-framework-version-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_dotnet",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-retrieve-the-current-username-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_current",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-retrieve-the-local-machine-name-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_local",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-retrieve-the-windows-version-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_version",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-retrieve-time-elapsed-since-startup-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#retrieve_time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-store-text-in-the-clipboard-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#store_text",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-write-data-to-the-windows-registry-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/windows-operations-cpp-cli#write_data",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-marshal-ansi-strings-for-adonet-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_ansi",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-marshal-bstr-strings-for-adonet-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_bstr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-marshal-unicode-strings-for-adonet-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_unicode",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-marshal-a-variant-for-adonet-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_variant",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-marshal-a-safearray-for-adonet-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/data-access-using-adonet-cpp-cli#marshal_safearray",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-implement-is-and-as-csharp-keywords-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/interoperability-with-other-dotnet-languages-cpp-cli#implement_isas",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-implement-the-lock-csharp-keyword-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/interoperability-with-other-dotnet-languages-cpp-cli#implement_lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-consume-a-csharp-indexer-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/interoperability-with-other-dotnet-languages-cpp-cli#consume_indexer",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/managed-types-and-the-main-function-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#main_functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/dotnet-framework-equivalents-to-cpp-native-types-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#dotnet",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/version-issues-for-value-types-nested-in-native-types-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#version_issues",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-test-for-equality-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#test_equality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-diagnose-and-fix-assembly-compatibility-problems-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/managed-types-cpp-cli#diagnose_fix",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-implement-a-plug-in-component-architecture-using-reflection-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/reflection-cpp-cli#implement",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-enumerate-data-types-in-assemblies-using-reflection-cpp-cli.md.md",
+ "redirect_url": "/cpp/dotnet/reflection-cpp-cli#enumerate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/cpp-cli-migration-primer.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/outline-of-changes-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/language-keywords-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/managed-types-cpp-cl.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/declaration-of-a-managed-class-type.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/declaration-of-a-clr-reference-class-object.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/declaration-of-a-clr-array.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/changes-in-constructor-initialization-order.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/changes-in-destructor-semantics.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/member-declarations-within-a-class-or-interface-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/property-declaration.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/property-index-declaration.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/delegates-and-events.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/sealing-a-virtual-function.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/overloaded-operators.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/changes-to-conversion-operators.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/explicit-override-of-an-interface-member.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/iterating-over-stl-collection-by-using-for-each.md",
+ "redirect_url": "/cpp/dotnet/for-each-in",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-iterate-over-arrays-with-for-each.md",
+ "redirect_url": "/cpp/dotnet/for-each-in",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-iterate-over-a-generic-collection-with-for-each.md",
+ "redirect_url": "/cpp/dotnet/for-each-in",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/how-to-iterate-over-a-user-defined-collection-with-for-each.md",
+ "redirect_url": "/cpp/dotnet/for-each-in",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/private-virtual-functions.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/static-const-int-linkage-is-no-longer-literal.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/value-types-and-their-behaviors-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/clr-enum-type.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/implicit-boxing-of-value-types.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/a-tracking-handle-to-a-boxed-value.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/value-type-semantics.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/general-language-changes-cpp-cli.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/string-literal.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/param-array-and-ellipsis.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/typeof-goes-to-t-typeid.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/initializer-lists.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/cast-notation-and-introduction-of-safe-cast-angles.md",
+ "redirect_url": "/cpp/dotnet/dotnet-programming-with-cpp-cli-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-members.md",
+ "redirect_url": "/cpp/dotnet/lock-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-lock.md",
+ "redirect_url": "/cpp/dotnet/lock-class#lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-tilde-lock.md",
+ "redirect_url": "/cpp/dotnet/lock-class#tilde-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-is-locked.md",
+ "redirect_url": "/cpp/dotnet/lock-class#is-locked",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-operator-bool.md",
+ "redirect_url": "/cpp/dotnet/lock-class#operator-bool",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-acquire.md",
+ "redirect_url": "/cpp/dotnet/lock-class#acquire",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-try-acquire.md",
+ "redirect_url": "/cpp/dotnet/lock-class#try-acquire",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-release.md",
+ "redirect_url": "/cpp/dotnet/lock-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-operator-equality.md",
+ "redirect_url": "/cpp/dotnet/lock-class#operator-equality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/lock-operator-inequality.md",
+ "redirect_url": "/cpp/dotnet/lock-class#operator-inequality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/marshal-context-marshal-context.md",
+ "redirect_url": "/cpp/dotnet/marshal-context-class#marshal-context",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/marshal-context-tilde-marshal-context.md",
+ "redirect_url": "/cpp/dotnet/marshal-context-class#tilde-marshal-context",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/marshal-context-marshal-as.md",
+ "redirect_url": "/cpp/dotnet/marshal-context-class#marshal-as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-members.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-ptr.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#ptr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-tilde-ptr.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#tilde-ptr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-attach.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#attach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-createinstance.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#createInstance",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-detach.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#detach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-getinterface.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#getInterface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-queryinterface.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#queryInterface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-release.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-operator-assign.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-operator-arrow.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#operator-arrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-operator-logical-not.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#operator-logical-not",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/ptr-operator-bool.md",
+ "redirect_url": "/cpp/dotnet/com-ptr-class#operator-bool",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/error-messages/compiler-errors-1/index.md",
+ "redirect_url": "/cpp/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/error-messages/compiler-errors-2/index.md",
+ "redirect_url": "/cpp/error-messages/compiler-errors-2/compiler-errors-c2500-through-c2599",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/error-messages/compiler-warnings/index.md",
+ "redirect_url": "/cpp/error-messages/compiler-warnings/compiler-warnings-c4000-through-c4199",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/error-messages/index.md",
+ "redirect_url": "/cpp/error-messages/compiler-errors-1/c-cpp-build-errors",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/error-messages/tool-errors/index.md",
+ "redirect_url": "/cpp/error-messages/tool-errors/tool-errors-overview",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/error-messages/tool-errors/resource-compiler-errors-rw1004-through-rw4004.md",
+ "redirect_url": "/cpp/error-messages/tool-errors/resource-compiler-errors-rc1000-through-rc4413",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/ide/index.md",
+ "redirect_url": "/cpp/ide/ide_and_tools_for_visual_cpp_development",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/building-external-projects.md",
+ "redirect_url": "/cpp/build/open-folder-projects-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/redistributing-database-support-files.md",
+ "redirect_url": "/cpp/data/data-access-in-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/wizard-support-for-other-languages.md",
+ "redirect_url": "/cpp/ide/creating-desktop-projects-by-using-application-wizards",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/specify-project-location-and-source-files.md",
+ "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/specify-project-settings-create-new-project-from-existing-code-files-wizard.md",
+ "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/specify-debug-configuration-settings.md",
+ "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/ide/specify-release-configuration.md",
+ "redirect_url": "/cpp/build/how-to-create-a-cpp-project-from-existing-code",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/intrinsics/index.md",
+ "redirect_url": "/cpp/intrinsics/compiler-intrinsics",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/active-documents-on-the-internet.md",
+ "redirect_url": "/cpp/mfc/activex-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/afxdll-versions.md",
+ "redirect_url": "/cpp/mfc/mfc-library-versions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/an-example-of-the-comments.md",
+ "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/decrement-implementation-comment.md",
+ "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/decrement-constructors-comment.md",
+ "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/decrement-attributes-comment.md",
+ "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/decrement-operations-comment.md",
+ "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/decrement-overridables-comment.md",
+ "redirect_url": "/cpp/mfc/using-the-mfc-source-files",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/document-template-strings-mfc-add-class-wizard.md",
+ "redirect_url": "/cpp/mfc/reference/mfc-add-class-wizard",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/drag-and-drop-customizing.md",
+ "redirect_url": "/cpp/mfc/drag-and-drop-ole#customize-drag-and-drop",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/drag-and-drop-implementing-a-drop-source.md",
+ "redirect_url": "/cpp/mfc/drag-and-drop-ole#implement-a-drop-source",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/drag-and-drop-implementing-a-drop-target.md",
+ "redirect_url": "/cpp/mfc/drag-and-drop-ole#implement-a-drop-target",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/automatic-linking-of-mfc-library-version.md",
+ "redirect_url": "/cpp/mfc/mfc-library-versions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/dynamic-link-library-support.md",
+ "redirect_url": "/cpp/mfc/mfc-library-versions#dynamic-link-library-support",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/index.md",
+ "redirect_url": "/cpp/mfc/mfc-desktop-applications",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/library-naming-conventions.md",
+ "redirect_url": "/cpp/mfc/mfc-library-versions#mfc-static-library-naming-conventions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/abc-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/abcfloat-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/bitmap-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/bitmapinfo-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/button-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#button-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/callback-function-for-cdc-enumobjects.md",
+ "redirect_url": "/cpp/mfc/reference/callback-functions-used-by-mfc#enum_objects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/callback-function-for-cdc-graystring.md",
+ "redirect_url": "/cpp/mfc/reference/callback-functions-used-by-mfc#graystring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/coloradjustment-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/combo-box-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#combo-box-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/compareitemstruct-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/createstruct-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/callback-function-for-cdc-setabortproc.md",
+ "redirect_url": "/cpp/mfc/reference/callback-functions-used-by-mfc#setabortproc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/devnames-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/drawitemstruct-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/edit-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#edit-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/extended-window-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#extended-window-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/filetime-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/frame-window-styles-mfc.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#frame-window-styles-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/index.md",
+ "redirect_url": "/cpp/mfc/reference/mfc-classes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/linger-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/list-box-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#list-box-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/logbrush-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/logpen-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/message-box-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#message-box-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/minmaxinfo-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/msg-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/msg-structure1.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/nccalcsize-params-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/paintstruct-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/point-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/point-structure1.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/rect-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/rect-structure1.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/rgndata-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/scroll-bar-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#scroll-bar-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/sockaddr-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/sockaddr-in-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/static-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#static-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/systemtime-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/systemtime-structure1.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/windowplacement-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/window-styles.md",
+ "redirect_url": "/cpp/mfc/reference/styles-used-by-mfc#window-styles",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/wm-command-message-handler.md",
+ "redirect_url": "/cpp/mfc/reference/message-maps-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/windowpos-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/windowpos-structure1.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/xform-structure.md",
+ "redirect_url": "/cpp/mfc/reference/structures-used-by-mfc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/mfc/reference/cacceleratedeceleratetransition-class1.md",
+ "redirect_url": "/cpp/mfc/reference/cacceleratedeceleratetransition-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/mfc/unicode-in-mfc.md",
+ "redirect_url": "/cpp/mfc/mfc-library-versions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/avoiding-problem-areas-with-multithread-programs.md",
+ "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/c-run-time-library-functions-for-thread-control.md",
+ "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/compiling-and-linking-multithread-programs.md",
+ "redirect_url": "/cpp/parallel/sample-multithread-c-program",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/include-files-for-multithreading.md",
+ "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/library-support-for-multithreading.md",
+ "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/multithread-programs.md",
+ "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/writing-a-multithreaded-win32-program.md",
+ "redirect_url": "/cpp/parallel/multithreading-with-c-and-win32",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/contents.md",
+ "redirect_url": "/cpp/parallel/openmp/openmp-c-and-cpp-application-program-interface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/openmp-data-types.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/openmp-libraries.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-library-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/amp/index.md",
+ "redirect_url": "/cpp/parallel/amp/cpp-amp-cpp-accelerated-massive-parallelism",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/amp/reference/index.md",
+ "redirect_url": "/cpp/parallel/amp/reference/reference-cpp-amp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/concrt/convert-an-openmp-loop-that uses-exception-handling.md",
+ "redirect_url": "/cpp/parallel/concrt/convert-an-openmp-loop-that-uses-exception-handling",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/parallel/concrt/index.md",
+ "redirect_url": "/cpp/parallel/concrt/concurrency-runtime",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/concrt/reference/index.md",
+ "redirect_url": "/cpp/parallel/concrt/reference/reference-concurrency-runtime",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/index.md",
+ "redirect_url": "/cpp/parallel/parallel-programming-in-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/index.md",
+ "redirect_url": "/cpp/parallel/openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/index.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-libraries",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/copyin.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#copyin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/copyprivate.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#copyprivate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/default-openmp.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#default-openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/firstprivate.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#firstprivate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/if-openmp.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#if-openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/lastprivate.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#lastprivate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/nowait.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#nowait",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/num-threads.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#num-threads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/ordered-openmp-clauses.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#ordered-openmp-clauses",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/private-openmp.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#private-openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/reduction.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#reduction",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/schedule.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#schedule",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/shared-openmp.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-clauses#shared-openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-lock-t.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-nest-lock-t.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/atomic.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#atomic",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/barrier.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#barrier",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/critical.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#critical",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/flush-openmp.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#flush-openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/for-openmp.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#for-openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/master.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#master",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/ordered-openmp-directives.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#ordered-openmp-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/parallel.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#parallel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/sections-openmp.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#sections-openmp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/single.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#single",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/threadprivate.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-directives#threadprivate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-dynamic.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-dynamic",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-nested.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-nested",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-num-threads.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-num-threads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-schedule.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-environment-variables#omp-schedule",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-destroy-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-destroy-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-destroy-nest-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-destroy-nest-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-dynamic.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-dynamic",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-max-threads.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-max-threads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-nested.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-nested",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-num-procs.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-num-procs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-num-threads.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-num-threads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-thread-num.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-thread-num",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-wtick.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-wtick",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-get-wtime.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-get-wtime",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-init-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-init-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-init-nest-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-init-nest-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-in-parallel.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-in-parallel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-set-dynamic.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-dynamic",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-set-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-set-nest-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-nest-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-set-nested.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-nested",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-set-num-threads.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-set-num-threads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-test-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-test-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-test-nest-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-test-nest-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-unset-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-unset-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/reference/omp-unset-nest-lock.md",
+ "redirect_url": "/cpp/parallel/openmp/reference/openmp-functions#omp-unset-nest-lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/porting/index.md",
+ "redirect_url": "/cpp/porting/visual-cpp-porting-and-upgrading-guide",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/porting/porting-data-applications.md",
+ "redirect_url": "/cpp/data/data-access-programming-mfc-atl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/preprocessor/index.md",
+ "redirect_url": "/cpp/preprocessor/c-cpp-preprocessor-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/preprocessor/conventions.md",
+ "redirect_url": "/cpp/preprocessor/grammar-summary-c-cpp#conventions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/preprocessor/definitions-for-the-grammar-summary.md",
+ "redirect_url": "/cpp/preprocessor/grammar-summary-c-cpp#definitions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/preprocessor/preprocessor-grammar.md",
+ "redirect_url": "/cpp/preprocessor/grammar-summary-c-cpp#grammar",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/security/index.md",
+ "redirect_url": "/cpp/security/security-best-practices-for-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/standard-library/index.md",
+ "redirect_url": "/cpp/standard-library/cpp-standard-library-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/standard-library/system-error-typedefs.md",
+ "redirect_url": "/cpp/standard-library/system-error-enums#errc",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/text/index.md",
+ "redirect_url": "/cpp/text/text-and-strings-in-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/cloud-and-web-programming-in-visual-cpp.md",
+ "redirect_url": "/cpp/cloud/cloud-and-web-programming-in-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/cpp-conformance-improvements-2017.md",
+ "redirect_url": "/cpp/overview/cpp-conformance-improvements",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/cpp-rest-sdk-codename-casablanca.md",
+ "redirect_url": "/cpp/cloud/cpp-rest-sdk-codename-casablanca",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/how-to-report-a-problem-with-the-visual-cpp-toolset.md",
+ "redirect_url": "/cpp/overview/how-to-report-a-problem-with-the-visual-cpp-toolset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/how-user-account-control-uac-affects-your-application.md",
+ "redirect_url": "/cpp/security/how-user-account-control-uac-affects-your-application",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/index.md",
+ "redirect_url": "/cpp/overview/visual-cpp-in-visual-studio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/running-as-a-member-of-the-users-group.md",
+ "redirect_url": "/cpp/security/running-as-a-member-of-the-users-group",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/security-best-practices-for-cpp.md",
+ "redirect_url": "/cpp/security/security-best-practices-for-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/supported-platforms-visual-cpp.md",
+ "redirect_url": "/cpp/overview/supported-platforms-visual-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/visual-cpp-help-and-community.md",
+ "redirect_url": "/cpp/overview/visual-cpp-help-and-community",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/visual-cpp-in-visual-studio.md",
+ "redirect_url": "/cpp/overview/visual-cpp-in-visual-studio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/visual-cpp-samples.md",
+ "redirect_url": "/cpp/overview/visual-cpp-samples",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/top/what-s-new-for-visual-cpp-in-visual-studio.md",
+ "redirect_url": "/cpp/overview/what-s-new-for-visual-cpp-in-visual-studio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/index.md",
+ "redirect_url": "/cpp/windows/overview-of-windows-programming-in-cpp",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/accelerator-key-property.md",
+ "redirect_url": "/cpp/windows/setting-accelerator-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/accelerator-modifier-property.md",
+ "redirect_url": "/cpp/windows/setting-accelerator-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/accelerator-type-property.md",
+ "redirect_url": "/cpp/windows/setting-accelerator-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/id-property.md",
+ "redirect_url": "/cpp/windows/setting-accelerator-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-an-entry-to-an-accelerator-table.md",
+ "redirect_url": "/cpp/windows/editing-accelerator-tables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-properties-of-multiple-accelerator-keys.md",
+ "redirect_url": "/cpp/windows/editing-accelerator-tables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deleting-an-entry-from-an-accelerator-table.md",
+ "redirect_url": "/cpp/windows/editing-accelerator-tables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-in-an-accelerator-table.md",
+ "redirect_url": "/cpp/windows/editing-accelerator-tables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/finding-an-entry-in-an-accelerator-table.md",
+ "redirect_url": "/cpp/windows/editing-accelerator-tables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/moving-or-copying-an-accelerator-table-entry-to-another-resource-script-file.md",
+ "redirect_url": "/cpp/windows/editing-accelerator-tables",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/associating-an-accelerator-key-with-a-menu-item.md",
+ "redirect_url": "/cpp/windows/predefined-accelerator-keys",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-new-custom-or-data-resource.md",
+ "redirect_url": "/cpp/windows/binary-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-binary-data.md",
+ "redirect_url": "/cpp/windows/binary-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/finding-binary-data.md",
+ "redirect_url": "/cpp/windows/binary-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/opening-a-resource-for-binary-editing.md",
+ "redirect_url": "/cpp/windows/binary-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-multiple-controls.md",
+ "redirect_url": "/cpp/windows/adding-a-control-to-a-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/dialog-editor-tab-toolbox.md",
+ "redirect_url": "/cpp/windows/adding-a-control-to-a-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/sizing-a-control-while-you-add-it.md",
+ "redirect_url": "/cpp/windows/adding-a-control-to-a-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-properties-for-an-activex-control.md",
+ "redirect_url": "/cpp/windows/viewing-and-adding-activex-controls-to-a-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/insert-activex-control-dialog-box.md",
+ "redirect_url": "/cpp/windows/viewing-and-adding-activex-controls-to-a-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/selecting-multiple-controls.md",
+ "redirect_url": "/cpp/windows/selecting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/specifying-the-dominant-control.md",
+ "redirect_url": "/cpp/windows/selecting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/aligning-controls-on-a-guide.md",
+ "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-and-setting-guides-and-margins.md",
+ "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/disabling-guides.md",
+ "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/guide-settings-dialog-box.md",
+ "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/modifying-the-layout-grid.md",
+ "redirect_url": "/cpp/windows/dialog-editor-states-guides-and-grids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/arranging-push-buttons-along-the-right-or-bottom-of-a-dialog-box.md",
+ "redirect_url": "/cpp/windows/aligning-groups-of-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/centering-controls-in-a-dialog-box.md",
+ "redirect_url": "/cpp/windows/aligning-groups-of-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/evening-the-spacing-between-controls.md",
+ "redirect_url": "/cpp/windows/aligning-groups-of-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-controls-to-a-dialog-causes-the-dialog-to-no-longer-function.md",
+ "redirect_url": "/cpp/windows/troubleshooting-the-dialog-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/using-the-richedit-1-0-control-with-mfc.md",
+ "redirect_url": "/cpp/windows/troubleshooting-the-dialog-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/cropping-or-extending-an-entire-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/resizing-an-entire-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/shrinking-or-stretching-an-entire-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/shrinking-or-stretching-part-of-an-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/resizing-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/displaying-or-hiding-the-toolbar-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/text-tool-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/text-tool-font-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-font-of-text-on-an-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/toolbar-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-magnification-factor-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/window-panes-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/displaying-or-hiding-the-pixel-grid-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/window-panes-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/custom-color-selector-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/customizing-or-changing-colors-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/load-palette-colors-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/saving-and-loading-different-color-palettes-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/displaying-or-hiding-the-colors-window-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/colors-window-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/new-device-image-type-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/creating-a-device-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/custom-image-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/creating-a-device-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/open-device-image-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/creating-a-device-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/using-the-256-color-palette-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/creating-a-256-color-icon-or-cursor-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/inserting-a-new-menu-between-existing-menus.md",
+ "redirect_url": "/cpp/windows/creating-a-menu",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-commands-to-a-menu.md",
+ "redirect_url": "/cpp/windows/creating-a-menu",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/connecting-a-pop-up-menu-to-your-application.md",
+ "redirect_url": "/cpp/windows/creating-pop-up-menus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/viewing-a-menu-as-a-pop-up-menu.md",
+ "redirect_url": "/cpp/windows/creating-pop-up-menus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/moving-and-copying-menus-and-menu-commands.md",
+ "redirect_url": "/cpp/windows/selecting-multiple-menus-or-menu-commands",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deleting-menus-and-menu-commands.md",
+ "redirect_url": "/cpp/windows/selecting-multiple-menus-or-menu-commands",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/associating-menu-commands-with-status-bar-text-in-mfc-applications.md",
+ "redirect_url": "/cpp/windows/associating-a-menu-command-with-an-accelerator-key",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/assigning-access-keys-to-menu-commands.md",
+ "redirect_url": "/cpp/windows/associating-a-menu-command-with-an-accelerator-key",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/finding-a-string.md",
+ "redirect_url": "/cpp/windows/string-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-or-deleting-a-string.md",
+ "redirect_url": "/cpp/windows/string-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/moving-a-string-from-one-resource-file-to-another.md",
+ "redirect_url": "/cpp/windows/string-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-properties-of-a-string.md",
+ "redirect_url": "/cpp/windows/string-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-caption-property-of-multiple-strings.md",
+ "redirect_url": "/cpp/windows/string-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-formatting-or-special-characters-to-a-string.md",
+ "redirect_url": "/cpp/windows/string-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/new-toolbar-resource-dialog-box.md",
+ "redirect_url": "/cpp/windows/converting-bitmaps-to-toolbars",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-new-toolbar-button.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/moving-a-toolbar-button.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/copying-buttons-from-a-toolbar.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deleting-a-toolbar-button.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/inserting-a-space-between-buttons-on-a-toolbar.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/removing-space-between-buttons-on-a-toolbar.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-properties-of-a-toolbar-button.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/toolbar-button-properties.md",
+ "redirect_url": "/cpp/windows/creating-moving-and-editing-toolbar-buttons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-a-string-in-a-version-information-resource.md",
+ "redirect_url": "/cpp/windows/version-information-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-version-information-for-another-language.md",
+ "redirect_url": "/cpp/windows/version-information-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deleting-a-version-information-block.md",
+ "redirect_url": "/cpp/windows/version-information-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/accessing-version-information-from-within-your-program.md",
+ "redirect_url": "/cpp/windows/version-information-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-properties-of-a-resource.md",
+ "redirect_url": "/cpp/windows/viewing-and-editing-resources-in-a-resource-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/previewing-resources.md",
+ "redirect_url": "/cpp/windows/viewing-and-editing-resources-in-a-resource-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-a-control-to-a-dialog-box.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-control-properties.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deleting-a-control.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/viewing-and-adding-activex-controls-to-a-dialog-box.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-event-handlers-for-dialog-box-controls.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/default-control-events.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/defining-member-variables-for-dialog-controls.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/specifying-the-location-and-size-of-a-dialog-box.md",
+ "redirect_url": "/cpp/windows/testing-a-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/making-controls-the-same-width-height-or-size.md",
+ "redirect_url": "/cpp/windows/sizing-individual-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/setting-the-size-of-the-combo-box-and-its-drop-down-list.md",
+ "redirect_url": "/cpp/windows/sizing-individual-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/setting-the-width-of-a-horizontal-scroll-bar.md",
+ "redirect_url": "/cpp/windows/sizing-individual-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-dialog-box-that-users-cannot-exit.md",
+ "redirect_url": "/cpp/windows/creating-a-new-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-names-of-symbol-header-files.md",
+ "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-a-symbol-s-numeric-value.md",
+ "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/symbol-value-restrictions.md",
+ "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/symbol-name-restrictions.md",
+ "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/mfc-database-programming-symbols.md",
+ "redirect_url": "/cpp/windows/mfc-predefined-symbols",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/mfc-windows-programming-symbols.md",
+ "redirect_url": "/cpp/windows/mfc-predefined-symbols",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/resource-symbols-dialog-box.md",
+ "redirect_url": "/cpp/windows/viewing-resource-symbols",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/add-resource-dialog-box.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/new-custom-resource-dialog-box.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/resource-view-window.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/resource-includes-dialog-box.md",
+ "redirect_url": "/cpp/windows/how-to-include-resources-at-compile-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-specify-include-directories-for-resources.md",
+ "redirect_url": "/cpp/windows/how-to-include-resources-at-compile-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-change-the-language-or-condition-of-a-resource-while-copying.md",
+ "redirect_url": "/cpp/windows/how-to-copy-resources",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-open-a-manifest-resource.md",
+ "redirect_url": "/cpp/windows/manifest-resources",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-open-a-resource-script-file-outside-of-a-project-standalone.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-open-a-resource-script-file-in-text-format.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/grid-settings-dialog-box-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/selecting-foreground-or-background-colors-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/filling-a-bounded-area-of-an-image-with-a-color-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/picking-up-a-color-from-an-image-to-use-elsewhere-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/choosing-a-transparent-or-opaque-background-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/inverting-the-colors-in-a-selection-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/customizing-or-changing-colors-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/saving-and-loading-different-color-palettes-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/colors-window-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-menu-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-device-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-an-image-for-a-different-display-device-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/copying-a-device-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deleting-a-device-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-transparent-or-inverse-regions-in-device-images.md",
+ "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-256-color-icon-or-cursor-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/setting-a-cursor-s-hot-spot-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-submenu.md",
+ "redirect_url": "/cpp/windows/creating-a-menu",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-pop-up-menus.md",
+ "redirect_url": "/cpp/windows/creating-a-menu",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-new-toolbars.md",
+ "redirect_url": "/cpp/windows/toolbar-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/converting-bitmaps-to-toolbars.md",
+ "redirect_url": "/cpp/windows/toolbar-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-moving-and-editing-toolbar-buttons.md",
+ "redirect_url": "/cpp/windows/toolbar-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-tool-tip-for-a-toolbar-button.md",
+ "redirect_url": "/cpp/windows/toolbar-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-add-mfc-support-to-resource-script-files.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/files-affected-by-resource-editing.md",
+ "redirect_url": "/cpp/windows/editable-file-types-for-resources",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deleting-unassigned-symbols.md",
+ "redirect_url": "/cpp/windows/changing-unassigned-symbols",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/dialog-editor-states-guides-and-grids.md",
+ "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/grouping-radio-buttons-on-a-dialog-box.md",
+ "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/aligning-groups-of-controls.md",
+ "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-the-tab-order-of-controls.md",
+ "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-create-a-resource.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-use-resource-templates.md",
+ "redirect_url": "/cpp/windows/how-to-create-a-resource-script-file",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-managed-resource-files.md",
+ "redirect_url": "/cpp/windows/how-to-copy-resources",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-import-and-export-resources.md",
+ "redirect_url": "/cpp/windows/how-to-copy-resources",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/how-to-search-for-symbols-in-resources.md",
+ "redirect_url": "/cpp/windows/how-to-include-resources-at-compile-time",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editable-file-types-for-resources.md",
+ "redirect_url": "/cpp/windows/resource-files-visual-studio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/manifest-resources.md",
+ "redirect_url": "/cpp/windows/resource-files-visual-studio",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/viewing-resource-symbols.md",
+ "redirect_url": "/cpp/windows/creating-new-symbols",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/opening-the-resource-editor-for-a-given-symbol.md",
+ "redirect_url": "/cpp/windows/creating-new-symbols",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-unassigned-symbols.md",
+ "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/including-shared-read-only-or-calculated-symbols.md",
+ "redirect_url": "/cpp/windows/changing-a-symbol-or-symbol-name-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/viewing-and-editing-resources-in-a-resource-editor.md",
+ "redirect_url": "/cpp/windows/resource-editors",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/setting-accelerator-properties.md",
+ "redirect_url": "/cpp/windows/accelerator-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-accelerator-tables.md",
+ "redirect_url": "/cpp/windows/accelerator-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/showing-or-hiding-the-dialog-editor-toolbar.md",
+ "redirect_url": "/cpp/windows/dialog-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/switching-between-dialog-box-controls-and-code.md",
+ "redirect_url": "/cpp/windows/dialog-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/accelerator-keys-for-the-dialog-editor.md",
+ "redirect_url": "/cpp/windows/dialog-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/testing-a-dialog-box.md",
+ "redirect_url": "/cpp/windows/creating-a-new-dialog-box",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/custom-controls-in-the-dialog-editor.md",
+ "redirect_url": "/cpp/windows/controls-in-dialog-boxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/troubleshooting-the-dialog-editor.md",
+ "redirect_url": "/cpp/windows/adding-editing-or-deleting-controls",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/adding-values-to-a-combo-box-control.md",
+ "redirect_url": "/cpp/windows/defining-mnemonics-access-keys",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/selecting-controls.md",
+ "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/sizing-individual-controls.md",
+ "redirect_url": "/cpp/windows/arrangement-of-controls-on-dialog-boxes",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/selecting-multiple-menus-or-menu-commands.md",
+ "redirect_url": "/cpp/windows/creating-a-menu",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/associating-a-menu-command-with-an-accelerator-key.md",
+ "redirect_url": "/cpp/windows/menu-command-properties",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/image-menu-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/toolbar-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/window-panes-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/icons-and-cursors-image-resources-for-display-devices-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/creating-an-icon-or-other-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/saving-bitmaps-as-gifs-or-jpegs-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/creating-an-icon-or-other-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/converting-an-image-from-one-format-to-another-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/creating-an-icon-or-other-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/drawing-lines-or-closed-figures-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/using-a-drawing-tool-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-custom-brush-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/using-a-drawing-tool-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-parts-of-an-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/flipping-an-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/resizing-an-image-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-an-image-outside-of-a-project-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/changing-image-properties-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/selecting-an-area-of-an-image-image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/editing-graphical-resources-image-editor-for-icons.md",
+ "redirect_url": "/cpp/windows/image-editor-for-icons",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creating-a-menu.md",
+ "redirect_url": "/cpp/windows/menu-editor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activationfactory-activationfactory-constructor.md",
+ "redirect_url": "/cpp/windows/activationfactory-class#activationfactory",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activationfactory-addref-method.md",
+ "redirect_url": "/cpp/windows/activationfactory-class#addref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activationfactory-getiids-method.md",
+ "redirect_url": "/cpp/windows/activationfactory-class#getiids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activationfactory-getruntimeclassname-method.md",
+ "redirect_url": "/cpp/windows/activationfactory-class#getruntimeclassname",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activationfactory-gettrustlevel-method.md",
+ "redirect_url": "/cpp/windows/activationfactory-class#gettrustlevel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activationfactory-queryinterface-method.md",
+ "redirect_url": "/cpp/windows/activationfactory-class#queryinterface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activationfactory-release-method.md",
+ "redirect_url": "/cpp/windows/activationfactory-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/argtraits-args-constant.md",
+ "redirect_url": "/cpp/windows/argtraits-structure#args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/argtraitshelper-args-constant.md",
+ "redirect_url": "/cpp/windows/argtraitshelper-structure#args",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-asyncbase-constructor.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#asyncbase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-cancel-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#cancel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-checkvalidstatefordelegatecall-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#checkvalidstatefordelegatecall",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-checkvalidstateforresultscall-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#checkvalidstateforresultscall",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-close-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-continueasyncoperation-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#continueasyncoperation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-currentstatus-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#currentstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-errorcode-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#errorcode",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-firecompletion-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#firecompletion",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-fireprogress-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#fireprogress",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-get-errorcode-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#get-errorcode",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-get-id-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#get-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-get-status-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#get-status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-getoncomplete-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#getoncomplete",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-getonprogress-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#getonprogress",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-oncancel-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#oncancel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-onclose-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#onclose",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-onstart-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#onstart",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-put-id-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#put-id",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-putoncomplete-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#putoncomplete",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-putonprogress-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#putonprogress",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-start-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#start",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-trytransitiontocompleted-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#trytransitiontocompleted",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/asyncbase-trytransitiontoerror-method.md",
+ "redirect_url": "/cpp/windows/asyncbase-class#trytransitiontoerror",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/boolstruct-member-data-member.md",
+ "redirect_url": "/cpp/windows/boolstruct-structure#member",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/callback-function-windows-runtime-cpp-template-library.md",
+ "redirect_url": "/cpp/windows/callback-function-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/chaininterfaces-cancastto-method.md",
+ "redirect_url": "/cpp/windows/chaininterfaces-structure#cancastto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/chaininterfaces-casttounknown-method.md",
+ "redirect_url": "/cpp/windows/chaininterfaces-structure#casttounknown",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/chaininterfaces-fillarraywithiid-method.md",
+ "redirect_url": "/cpp/windows/chaininterfaces-structure#fillarraywithiid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/chaininterfaces-iidcount-constant.md",
+ "redirect_url": "/cpp/windows/chaininterfaces-structure#iidcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/chaininterfaces-verify-method.md",
+ "redirect_url": "/cpp/windows/chaininterfaces-structure#verify",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/classfactory-addref-method.md",
+ "redirect_url": "/cpp/windows/classfactory-class#addref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/classfactory-classfactory-constructor.md",
+ "redirect_url": "/cpp/windows/classfactory-class#classfactory",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/classfactory-lockserver-method.md",
+ "redirect_url": "/cpp/windows/classfactory-class#lockserver",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/classfactory-queryinterface-method.md",
+ "redirect_url": "/cpp/windows/classfactory-class#queryinterface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/classfactory-release-method.md",
+ "redirect_url": "/cpp/windows/classfactory-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-tilde-comptr-destructor.md",
+ "redirect_url": "/cpp/windows/comptr-class#tilde-comptr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-as-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-asiid-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#asiid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-asweak-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#asweak",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-attach-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#attach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-comptr-constructor.md",
+ "redirect_url": "/cpp/windows/comptr-class#comptr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-copyto-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#copyto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-detach-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#detach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-get-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#get",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-getaddressof-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#getaddressof",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-internaladdref-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#internaladdref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-internalrelease-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#internalrelease",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-operator-microsoft-wrl-details-booltype-operator.md",
+ "redirect_url": "/cpp/windows/comptr-class#operator-microsoft-wrl-details-booltype",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-operator-ampersand-operator.md",
+ "redirect_url": "/cpp/windows/comptr-class#operator-ampersand",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-operator-assign-operator.md",
+ "redirect_url": "/cpp/windows/comptr-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-operator-arrow-operator.md",
+ "redirect_url": "/cpp/windows/comptr-class#operator-arrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-ptr-data-member.md",
+ "redirect_url": "/cpp/windows/comptr-class#ptr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-releaseandgetaddressof-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#releaseandgetaddressof",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-reset.md",
+ "redirect_url": "/cpp/windows/comptr-class#reset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-swap-method.md",
+ "redirect_url": "/cpp/windows/comptr-class#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-operator-equality-operator.md",
+ "redirect_url": "/cpp/windows/comptr-class#operator-equality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptr-operator-inequality-operator.md",
+ "redirect_url": "/cpp/windows/comptr-class#operator-inequality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-comptrref-constructor.md",
+ "redirect_url": "/cpp/windows/comptrref-class#comptrref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-getaddressof-method.md",
+ "redirect_url": "/cpp/windows/comptrref-class#getaddressof",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-operator-interfacetype-star-star-operator.md",
+ "redirect_url": "/cpp/windows/comptrref-class#operator-interfacetype-star-star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-operator-t-star-operator.md",
+ "redirect_url": "/cpp/windows/comptrref-class#operator-t-star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-operator-void-star-star-operator.md",
+ "redirect_url": "/cpp/windows/comptrref-class#operator-void-star-star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-operator-star-operator.md",
+ "redirect_url": "/cpp/windows/comptrref-class#operator-star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-operator-equality-operator.md",
+ "redirect_url": "/cpp/windows/comptrref-class#operator-equality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-operator-inequality-operator.md",
+ "redirect_url": "/cpp/windows/comptrref-class#operator-inequality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrref-releaseandgetaddressof-method.md",
+ "redirect_url": "/cpp/windows/comptrref-class#releaseandgetaddressof",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrrefbase-operator-iinspectable-star-star-operator.md",
+ "redirect_url": "/cpp/windows/comptrrefbase-class#operator-iinspectable-star-star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrrefbase-operator-iunknown-star-star-operator.md",
+ "redirect_url": "/cpp/windows/comptrrefbase-class#operator-iunknown-star-star",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/comptrrefbase-ptr-data-member.md",
+ "redirect_url": "/cpp/windows/comptrrefbase-class#ptr",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creatormap-activationid-data-member.md",
+ "redirect_url": "/cpp/windows/creatormap-structure#activationid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creatormap-factorycache-data-member.md",
+ "redirect_url": "/cpp/windows/creatormap-structure#factorycache",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creatormap-factorycreator-data-member.md",
+ "redirect_url": "/cpp/windows/creatormap-structure#factorycreator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/creatormap-servername-data-member.md",
+ "redirect_url": "/cpp/windows/creatormap-structure#servername",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsection-tilde-criticalsection-destructor.md",
+ "redirect_url": "/cpp/windows/criticalsection-class#tilde-criticalsection",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsection-criticalsection-constructor.md",
+ "redirect_url": "/cpp/windows/criticalsection-class#criticalsection",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsection-cs-data-member.md",
+ "redirect_url": "/cpp/windows/criticalsection-class#cs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsection-isvalid-method.md",
+ "redirect_url": "/cpp/windows/criticalsection-class#isvalid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsection-lock-method.md",
+ "redirect_url": "/cpp/windows/criticalsection-class#lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsection-trylock-method.md",
+ "redirect_url": "/cpp/windows/criticalsection-class#trylock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsectiontraits-getinvalidvalue-method.md",
+ "redirect_url": "/cpp/windows/criticalsectiontraits-structure#getinvalidvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/criticalsectiontraits-unlock-method.md",
+ "redirect_url": "/cpp/windows/criticalsectiontraits-structure#unlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deferrableeventargs-getdeferral-method.md",
+ "redirect_url": "/cpp/windows/deferrableeventargs-class#getdeferral",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/deferrableeventargs-invokeallfinished-method.md",
+ "redirect_url": "/cpp/windows/deferrableeventargs-class#invokeallfinished",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/dontusenewusemake-operator-new-operator.md",
+ "redirect_url": "/cpp/windows/dontusenewusemake-class#operator-new",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/event-class-windows-runtime-cpp-template-library.md",
+ "redirect_url": "/cpp/windows/event-class-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/event-event-constructor-windows-runtime-cpp-template-library.md",
+ "redirect_url": "/cpp/windows/event-class-wrl#event",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/event-operator-assign-operator.md",
+ "redirect_url": "/cpp/windows/event-class-wrl#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-add-method.md",
+ "redirect_url": "/cpp/windows/eventsource-class#add",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-addremovelock-data-member.md",
+ "redirect_url": "/cpp/windows/eventsource-class#addremovelock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-eventsource-constructor.md",
+ "redirect_url": "/cpp/windows/eventsource-class#eventsource",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-getsize-method.md",
+ "redirect_url": "/cpp/windows/eventsource-class#getsize",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-invokeall-method.md",
+ "redirect_url": "/cpp/windows/eventsource-class#invokeall",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-remove-method.md",
+ "redirect_url": "/cpp/windows/eventsource-class#remove",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-targets-data-member.md",
+ "redirect_url": "/cpp/windows/eventsource-class#targets",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventsource-targetspointerlock-data-member.md",
+ "redirect_url": "/cpp/windows/eventsource-class#targetspointerlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventtargetarray-tilde-eventtargetarray-destructor.md",
+ "redirect_url": "/cpp/windows/eventtargetarray-class#tilde-eventtargetarray",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventtargetarray-addtail-method.md",
+ "redirect_url": "/cpp/windows/eventtargetarray-class#addtail",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventtargetarray-begin-method.md",
+ "redirect_url": "/cpp/windows/eventtargetarray-class#begin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventtargetarray-end-method.md",
+ "redirect_url": "/cpp/windows/eventtargetarray-class#end",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventtargetarray-eventtargetarray-constructor.md",
+ "redirect_url": "/cpp/windows/eventtargetarray-class#eventtargetarray",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/eventtargetarray-length-method.md",
+ "redirect_url": "/cpp/windows/eventtargetarray-class#length",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/factorycache-cookie-data-member.md",
+ "redirect_url": "/cpp/windows/factorycache-structure#cookie",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/factorycache-factory-data-member.md",
+ "redirect_url": "/cpp/windows/factorycache-structure#factory",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-createglobalinterfacetable-method.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#createglobalinterfacetable",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-disconnectobject-method.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#disconnectobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-ftmbase-constructor.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#ftmbase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-getmarshalsizemax-method.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#getmarshalsizemax",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-getunmarshalclass-method.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#getunmarshalclass",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-marshalinterface-method.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#marshalinterface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-marshaller-data-member.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#marshaller",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-releasemarshaldata-method.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#releasemarshaldata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/ftmbase-unmarshalinterface-method.md",
+ "redirect_url": "/cpp/windows/ftmbase-class#unmarshalinterface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlenulltraits-close-method.md",
+ "redirect_url": "/cpp/windows/handlenulltraits-structure#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlenulltraits-getinvalidvalue-method.md",
+ "redirect_url": "/cpp/windows/handlenulltraits-structure#getinvalidvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-tilde-handlet-destructor.md",
+ "redirect_url": "/cpp/windows/handlet-class#tilde-handlet",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-attach-method.md",
+ "redirect_url": "/cpp/windows/handlet-class#attach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-close-method.md",
+ "redirect_url": "/cpp/windows/handlet-class#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-detach-method.md",
+ "redirect_url": "/cpp/windows/handlet-class#detach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-get-method.md",
+ "redirect_url": "/cpp/windows/handlet-class#get",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-handle-data-member.md",
+ "redirect_url": "/cpp/windows/handlet-class#handle",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-handlet-constructor.md",
+ "redirect_url": "/cpp/windows/handlet-class#handlet",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-internalclose-method.md",
+ "redirect_url": "/cpp/windows/handlet-class#internalclose",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-isvalid-method.md",
+ "redirect_url": "/cpp/windows/handlet-class#isvalid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handlet-operator-assign-operator.md",
+ "redirect_url": "/cpp/windows/handlet-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handletraits-close-method.md",
+ "redirect_url": "/cpp/windows/handletraits-structure#close",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/handletraits-getinvalidvalue-method.md",
+ "redirect_url": "/cpp/windows/handletraits-structure#getinvalidvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-hstring-constructor.md",
+ "redirect_url": "/cpp/windows/hstring-class#hstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-tilde-hstring-destructor.md",
+ "redirect_url": "/cpp/windows/hstring-class#tilde-hstring",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-attach-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#attach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-copyto-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#copyto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-detach-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#detach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-get-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#get",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-getaddressof-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#getaddressof",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-isvalid-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#isvalid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-makereference-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#makereference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-release-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-set-method.md",
+ "redirect_url": "/cpp/windows/hstring-class#set",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-operator-assign-operator.md",
+ "redirect_url": "/cpp/windows/hstring-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-operator-less-than-operator.md",
+ "redirect_url": "/cpp/windows/hstring-class#operator-less-than",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-operator-equality-operator.md",
+ "redirect_url": "/cpp/windows/hstring-class#operator-equality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstring-operator-inequality-operator.md",
+ "redirect_url": "/cpp/windows/hstring-class#operator-inequality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstringreference-hstringreference-constructor.md",
+ "redirect_url": "/cpp/windows/hstringreference-class#hstringreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstringreference-copyto-method.md",
+ "redirect_url": "/cpp/windows/hstringreference-class#copyto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstringreference-get-method.md",
+ "redirect_url": "/cpp/windows/hstringreference-class#get",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstringreference-operator-assign-operator.md",
+ "redirect_url": "/cpp/windows/hstringreference-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstringreference-operator-less-than-operator.md",
+ "redirect_url": "/cpp/windows/hstringreference-class#operator-less-than",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstringreference-operator-equality-operator.md",
+ "redirect_url": "/cpp/windows/hstringreference-class#operator-equality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/hstringreference-operator-inequality-operator.md",
+ "redirect_url": "/cpp/windows/hstringreference-class#operator-inequality",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implements-cancastto-method.md",
+ "redirect_url": "/cpp/windows/implements-structure#cancastto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implements-casttounknown-method.md",
+ "redirect_url": "/cpp/windows/implements-structure#casttounknown",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implements-fillarraywithiid-method.md",
+ "redirect_url": "/cpp/windows/implements-structure#fillarraywithiid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implements-iidcount-constant.md",
+ "redirect_url": "/cpp/windows/implements-structure#iidcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implementshelper-cancastto-method.md",
+ "redirect_url": "/cpp/windows/implementshelper-structure#cancastto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implementshelper-casttounknown-method.md",
+ "redirect_url": "/cpp/windows/implementshelper-structure#casttounknown",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implementshelper-fillarraywithiid-method.md",
+ "redirect_url": "/cpp/windows/implementshelper-structure#fillarraywithiid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/implementshelper-iidcount-constant.md",
+ "redirect_url": "/cpp/windows/implementshelper-structure#iidcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/interfacetraits-cancastto-method.md",
+ "redirect_url": "/cpp/windows/interfacetraits-structure#cancastto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/interfacetraits-casttobase-method.md",
+ "redirect_url": "/cpp/windows/interfacetraits-structure#casttobase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/interfacetraits-casttounknown-method.md",
+ "redirect_url": "/cpp/windows/interfacetraits-structure#casttounknown",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/interfacetraits-fillarraywithiid-method.md",
+ "redirect_url": "/cpp/windows/interfacetraits-structure#fillarraywithiid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/interfacetraits-iidcount-constant.md",
+ "redirect_url": "/cpp/windows/interfacetraits-structure#iidcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/interfacetraits-verify-method.md",
+ "redirect_url": "/cpp/windows/interfacetraits-structure#verify",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/invokehelper-callback-data-member.md",
+ "redirect_url": "/cpp/windows/invokehelper-structure#callback",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/invokehelper-invoke-method.md",
+ "redirect_url": "/cpp/windows/invokehelper-structure#invoke",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/invokehelper-invokehelper-constructor.md",
+ "redirect_url": "/cpp/windows/invokehelper-structure#invokehelper",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/isbaseofstrict-value-constant.md",
+ "redirect_url": "/cpp/windows/isbaseofstrict-structure#value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/issame-value-constant.md",
+ "redirect_url": "/cpp/windows/issame-structure#value",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/makeallocator-tilde-makeallocator-destructor.md",
+ "redirect_url": "/cpp/windows/makeallocator-class#tilde-makeallocator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/makeallocator-allocate-method.md",
+ "redirect_url": "/cpp/windows/makeallocator-class#allocate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/makeallocator-detach-method.md",
+ "redirect_url": "/cpp/windows/makeallocator-class#detach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/makeallocator-makeallocator-constructor.md",
+ "redirect_url": "/cpp/windows/makeallocator-class#makeallocator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-tilde-module-destructor.md",
+ "redirect_url": "/cpp/windows/module-class#tilde-module",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-create-method.md",
+ "redirect_url": "/cpp/windows/module-class#create",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-decrementobjectcount-method.md",
+ "redirect_url": "/cpp/windows/module-class#decrementobjectcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-getactivationfactory-method.md",
+ "redirect_url": "/cpp/windows/module-class#getactivationfactory",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-getclassobject-method.md",
+ "redirect_url": "/cpp/windows/module-class#getclassobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-getmodule-method.md",
+ "redirect_url": "/cpp/windows/module-class#getmodule",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-getobjectcount-method.md",
+ "redirect_url": "/cpp/windows/module-class#getobjectcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-incrementobjectcount-method.md",
+ "redirect_url": "/cpp/windows/module-class#incrementobjectcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-module-constructor.md",
+ "redirect_url": "/cpp/windows/module-class#module",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-objectcount-data-member.md",
+ "redirect_url": "/cpp/windows/module-class#objectcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-registercomobject-method.md",
+ "redirect_url": "/cpp/windows/module-class#registercomobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-registerobjects-method.md",
+ "redirect_url": "/cpp/windows/module-class#registerobjects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-registerwinrtobject-method.md",
+ "redirect_url": "/cpp/windows/module-class#registerwinrtobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-releasenotifier-data-member.md",
+ "redirect_url": "/cpp/windows/module-class#releasenotifier",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-terminate-method.md",
+ "redirect_url": "/cpp/windows/module-class#terminate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-unregistercomobject-method.md",
+ "redirect_url": "/cpp/windows/module-class#unregistercomobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-unregisterobjects-method.md",
+ "redirect_url": "/cpp/windows/module-class#unregisterobjects",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-unregisterwinrtobject-method.md",
+ "redirect_url": "/cpp/windows/module-class#unregisterwinrtobject",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-genericreleasenotifier-callback-data-member.md",
+ "redirect_url": "/cpp/windows/module-genericreleasenotifier-class#genericreleasenotifier-callback",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-genericreleasenotifier-genericreleasenotifier-constructor.md",
+ "redirect_url": "/cpp/windows/module-genericreleasenotifier-class#genericreleasenotifier-genericreleasenotifier",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-genericreleasenotifier-invoke-method.md",
+ "redirect_url": "/cpp/windows/module-genericreleasenotifier-class#genericreleasenotifier-invoke",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-methodreleasenotifier-invoke-method.md",
+ "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-invoke",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-methodreleasenotifier-method-data-member.md",
+ "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-method",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-methodreleasenotifier-methodreleasenotifier-constructor.md",
+ "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-methodreleasenotifier",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-methodreleasenotifier-object-data-member.md",
+ "redirect_url": "/cpp/windows/module-methodreleasenotifier-class#methodreleasenotifier-object",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-releasenotifier-invoke-method.md",
+ "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-invoke",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-releasenotifier-release.md",
+ "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-releasenotifier-releasenotifier-constructor.md",
+ "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-releasenotifier",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/module-releasenotifier-tilde-releasenotifier-destructor.md",
+ "redirect_url": "/cpp/windows/module-releasenotifier-class#releasenotifier-tilde-releasenotifier",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/modulebase-tilde-modulebase-destructor.md",
+ "redirect_url": "/cpp/windows/modulebase-class#tilde-modulebase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/modulebase-decrementobjectcount-method.md",
+ "redirect_url": "/cpp/windows/modulebase-class#decrementobjectcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/modulebase-incrementobjectcount-method.md",
+ "redirect_url": "/cpp/windows/modulebase-class#incrementobjectcount",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/modulebase-modulebase-constructor.md",
+ "redirect_url": "/cpp/windows/modulebase-class#modulebase",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/mutex-class1.md",
+ "redirect_url": "/cpp/windows/mutex-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/mutex-lock-method.md",
+ "redirect_url": "/cpp/windows/mutex-class#lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/mutex-mutex-constructor.md",
+ "redirect_url": "/cpp/windows/mutex-class#mutex",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/mutex-operator-assign-operator.md",
+ "redirect_url": "/cpp/windows/mutex-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/mutextraits-unlock-method.md",
+ "redirect_url": "/cpp/windows/mutextraits-structure#unlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/roinitializewrapper-roinitializewrapper-constructor.md",
+ "redirect_url": "/cpp/windows/roinitializewrapper-class#roinitializewrapper",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/roinitializewrapper-tilde-roinitializewrapper-destructor.md",
+ "redirect_url": "/cpp/windows/roinitializewrapper-class#tilde-roinitializewrapper",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/roinitializewrapper-hresult-parens-operator.md",
+ "redirect_url": "/cpp/windows/roinitializewrapper-class#hresult",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-tilde-runtimeclass-destructor.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#tilde-runtimeclass",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-addref-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#addref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-decrementreference-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#decrementreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-getiids-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#getiids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-getruntimeclassname-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#getruntimeclassname",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-gettrustlevel-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#gettrustlevel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-getweakreference-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#getweakreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-internaladdref-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#internaladdref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-queryinterface-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#queryinterface",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-release-method.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-runtimeclass-constructor.md",
+ "redirect_url": "/cpp/windows/runtimeclass-class#runtimeclass",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclassflags-value-constant.md",
+ "redirect_url": "/cpp/windows/runtimeclassflags-structure#value-constant",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclassbaset-asiid-method.md",
+ "redirect_url": "/cpp/windows/runtimeclassbaset-structure#asiid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/runtimeclassbaset-getimplementediids-method.md",
+ "redirect_url": "/cpp/windows/runtimeclassbaset-structure#getimplementediids",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safeint-safeint.md",
+ "redirect_url": "/cpp/windows/safeint-class#safeint",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safeadd.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safeadd",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safecast.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safecast",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safedivide.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safedivide",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safeequals.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safeequals",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safegreaterthan.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safegreaterthan",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safegreaterthanequals.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safegreaterthanequals",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safelessthan.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safelessthan",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safelessthanequals.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safelessthanequals",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safemodulus.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safemodulus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safemultiply.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safemultiply",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safenotequals.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safenotequals",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safesubtract.md",
+ "redirect_url": "/cpp/windows/safeint-functions#safesubtract",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/safeintexception-safeintexception.md",
+ "redirect_url": "/cpp/windows/safeintexception-class#safeintexception",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/semaphore-lock-method.md",
+ "redirect_url": "/cpp/windows/semaphore-class#lock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/semaphore-operator-assign-operator.md",
+ "redirect_url": "/cpp/windows/semaphore-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/semaphore-semaphore-constructor.md",
+ "redirect_url": "/cpp/windows/semaphore-class#semaphore",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/semaphoretraits-unlock-method.md",
+ "redirect_url": "/cpp/windows/semaphoretraits-structure#unlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/simpleactivationfactory-activateinstance-method.md",
+ "redirect_url": "/cpp/windows/simpleactivationfactory-class#activateinstance",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/simpleactivationfactory-getruntimeclassname-method.md",
+ "redirect_url": "/cpp/windows/simpleactivationfactory-class#getruntimeclassname",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/simpleactivationfactory-gettrustlevel-method.md",
+ "redirect_url": "/cpp/windows/simpleactivationfactory-class#gettrustlevel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/simpleclassfactory-createinstance-method.md",
+ "redirect_url": "/cpp/windows/simpleclassfactory-class#createinstance",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-auto-gcroot.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#auto-gcroot",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-get.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#get",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-operator-arrow.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-arrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-operator-assign.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-operator-auto-gcroot.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-auto-gcroot",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-operator-bool.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-bool",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-operator-logical-not.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#operator-logical-not",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-release.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-reset.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#reset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-swap.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-tilde-auto-gcroot.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#tilde-auto-gcroot",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-members.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#members",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-gcroot-attach.md",
+ "redirect_url": "/cpp/dotnet/auto-gcroot-class#attach",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlock-tilde-srwlock-destructor.md",
+ "redirect_url": "/cpp/windows/srwlock-class#tilde-srwlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlock-lockexclusive-method.md",
+ "redirect_url": "/cpp/windows/srwlock-class#lockexclusive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlock-lockshared-method.md",
+ "redirect_url": "/cpp/windows/srwlock-class#lockshared",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlock-srwlock-constructor.md",
+ "redirect_url": "/cpp/windows/srwlock-class#srwlock-constructor",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlock-srwlock-data-member.md",
+ "redirect_url": "/cpp/windows/srwlock-class#srwlock-data-member",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlock-trylockexclusive-method.md",
+ "redirect_url": "/cpp/windows/srwlock-class#trylockexclusive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlock-trylockshared-method.md",
+ "redirect_url": "/cpp/windows/srwlock-class#trylockshared",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlockexclusivetraits-getinvalidvalue-method.md",
+ "redirect_url": "/cpp/windows/srwlockexclusivetraits-structure#getinvalidvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlockexclusivetraits-unlock-method.md",
+ "redirect_url": "/cpp/windows/srwlockexclusivetraits-structure#unlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlocksharedtraits-getinvalidvalue-method.md",
+ "redirect_url": "/cpp/windows/srwlocksharedtraits-structure#getinvalidvalue",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/srwlocksharedtraits-unlock-method.md",
+ "redirect_url": "/cpp/windows/srwlocksharedtraits-structure#unlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/swap-function-windows-runtime-cpp-template-library.md",
+ "redirect_url": "/cpp/windows/swap-function-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockt-tilde-synclockt-destructor.md",
+ "redirect_url": "/cpp/windows/synclockt-class#tilde-synclockt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockt-islocked-method.md",
+ "redirect_url": "/cpp/windows/synclockt-class#islocked",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockt-sync-data-member.md",
+ "redirect_url": "/cpp/windows/synclockt-class#sync",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockt-synclockt-constructor.md",
+ "redirect_url": "/cpp/windows/synclockt-class#synclockt",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockt-unlock-method.md",
+ "redirect_url": "/cpp/windows/synclockt-class#unlock",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockwithstatust-getstatus-method.md",
+ "redirect_url": "/cpp/windows/synclockwithstatust-class#getstatus",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockwithstatust-islocked-method.md",
+ "redirect_url": "/cpp/windows/synclockwithstatust-class#islocked",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockwithstatust-status-data-member.md",
+ "redirect_url": "/cpp/windows/synclockwithstatust-class#status",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/synclockwithstatust-synclockwithstatust-constructor.md",
+ "redirect_url": "/cpp/windows/synclockwithstatust-class#synclockwithstatust",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/verifyinheritancehelper-verify-method.md",
+ "redirect_url": "/cpp/windows/verifyinheritancehelper-structure#verify",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/verifyinterfacehelper-verify-method.md",
+ "redirect_url": "/cpp/windows/verifyinterfacehelper-structure#verify",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakref-tilde-weakref-destructor.md",
+ "redirect_url": "/cpp/windows/weakref-class#tilde-weakref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakref-as-method.md",
+ "redirect_url": "/cpp/windows/weakref-class#as",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakref-asiid-method.md",
+ "redirect_url": "/cpp/windows/weakref-class#asiid",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakref-copyto-method.md",
+ "redirect_url": "/cpp/windows/weakref-class#copyto",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakref-operator-ampersand-operator.md",
+ "redirect_url": "/cpp/windows/weakref-class#operator-ampersand-operator",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakref-weakref-constructor.md",
+ "redirect_url": "/cpp/windows/weakref-class#weakref",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl-class-library-project-template.md",
+ "redirect_url": "/cpp/windows/windows-runtime-cpp-template-library-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/walkthrough-creating-a-basic-windows-runtime-component-using-wrl.md",
+ "redirect_url": "/cpp/windows/windows-runtime-cpp-template-library-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakreference-class1.md",
+ "redirect_url": "/cpp/windows/weakreference-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakreference-tilde-weakreference-destructor.md",
+ "redirect_url": "/cpp/windows/weakreference-class#tilde-weakreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakreference-decrementstrongreference-method.md",
+ "redirect_url": "/cpp/windows/weakreference-class#decrementstrongreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakreference-incrementstrongreference-method.md",
+ "redirect_url": "/cpp/windows/weakreference-class#incrementstrongreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakreference-resolve-method.md",
+ "redirect_url": "/cpp/windows/weakreference-class#resolve",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakreference-setunknown-method.md",
+ "redirect_url": "/cpp/windows/weakreference-class#setunknown",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/weakreference-weakreference-constructor.md",
+ "redirect_url": "/cpp/windows/weakreference-class#weakreference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/cpp-attributes-reference.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/attributed-programming-concepts.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/purpose-of-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/basic-mechanics-of-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/building-an-attributed-program.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/attribute-categories.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/attribute-contexts.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/attributes-requirements.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-attributes-com-net",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/attribute-programming-faq.md",
+ "redirect_url": "/cpp/windows/attributes/attribute-programming-faq",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/aggregatable.md",
+ "redirect_url": "/cpp/windows/attributes/aggregatable",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/aggregates.md",
+ "redirect_url": "/cpp/windows/attributes/aggregates",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/appobject.md",
+ "redirect_url": "/cpp/windows/attributes/appobject",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/array-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/array-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/async-uuid.md",
+ "redirect_url": "/cpp/windows/attributes/async-uuid",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/attributes-alphabetical-reference.md",
+ "redirect_url": "/cpp/windows/attributes/attributes-alphabetical-reference",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/attributes-by-group.md",
+ "redirect_url": "/cpp/windows/attributes/attributes-by-group",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/bindable.md",
+ "redirect_url": "/cpp/windows/attributes/bindable",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/call-as.md",
+ "redirect_url": "/cpp/windows/attributes/call-as",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/case-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/case-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/class-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/class-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/coclass.md",
+ "redirect_url": "/cpp/windows/attributes/coclass",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/com-interface-entry-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/com-interface-entry-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/compiler-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/compiler-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/control.md",
+ "redirect_url": "/cpp/windows/attributes/control",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/cpp-quote.md",
+ "redirect_url": "/cpp/windows/attributes/cpp-quote",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/custom-attributes-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/custom-attributes-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/custom-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/custom-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/data-member-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/data-member-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/db-accessor.md",
+ "redirect_url": "/cpp/windows/attributes/db-accessor",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/db-column.md",
+ "redirect_url": "/cpp/windows/attributes/db-column",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/db-command.md",
+ "redirect_url": "/cpp/windows/attributes/db-command",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/db-param.md",
+ "redirect_url": "/cpp/windows/attributes/db-param",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/db-source.md",
+ "redirect_url": "/cpp/windows/attributes/db-source",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/db-table.md",
+ "redirect_url": "/cpp/windows/attributes/db-table",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/default-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/default-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/defaultbind.md",
+ "redirect_url": "/cpp/windows/attributes/defaultbind",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/defaultcollelem.md",
+ "redirect_url": "/cpp/windows/attributes/defaultcollelem",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/defaultvalue.md",
+ "redirect_url": "/cpp/windows/attributes/defaultvalue",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/defaultvtable.md",
+ "redirect_url": "/cpp/windows/attributes/defaultvtable",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/dispinterface.md",
+ "redirect_url": "/cpp/windows/attributes/dispinterface",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/displaybind.md",
+ "redirect_url": "/cpp/windows/attributes/displaybind",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/dual.md",
+ "redirect_url": "/cpp/windows/attributes/dual",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/emitidl.md",
+ "redirect_url": "/cpp/windows/attributes/emitidl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/entry.md",
+ "redirect_url": "/cpp/windows/attributes/entry",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/event-receiver.md",
+ "redirect_url": "/cpp/windows/attributes/event-receiver",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/event-source.md",
+ "redirect_url": "/cpp/windows/attributes/event-source",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/export.md",
+ "redirect_url": "/cpp/windows/attributes/export",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/first-is.md",
+ "redirect_url": "/cpp/windows/attributes/first-is",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/helpcontext.md",
+ "redirect_url": "/cpp/windows/attributes/helpcontext",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/helpfile.md",
+ "redirect_url": "/cpp/windows/attributes/helpfile",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/helpstring.md",
+ "redirect_url": "/cpp/windows/attributes/helpstring",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/helpstringcontext.md",
+ "redirect_url": "/cpp/windows/attributes/helpstringcontext",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/helpstringdll.md",
+ "redirect_url": "/cpp/windows/attributes/helpstringdll",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/hidden.md",
+ "redirect_url": "/cpp/windows/attributes/hidden",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/id.md",
+ "redirect_url": "/cpp/windows/attributes/id",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/idl-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/idl-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/idl-module.md",
+ "redirect_url": "/cpp/windows/attributes/idl-module",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/idl-quote.md",
+ "redirect_url": "/cpp/windows/attributes/idl-quote",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/iid-is.md",
+ "redirect_url": "/cpp/windows/attributes/iid-is",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/immediatebind.md",
+ "redirect_url": "/cpp/windows/attributes/immediatebind",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/implements-category.md",
+ "redirect_url": "/cpp/windows/attributes/implements-category",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/implements-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/implements-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/import.md",
+ "redirect_url": "/cpp/windows/attributes/import",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/importidl.md",
+ "redirect_url": "/cpp/windows/attributes/importidl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/importlib.md",
+ "redirect_url": "/cpp/windows/attributes/importlib",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/in-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/in-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/include-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/include-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/includelib-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/includelib-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/last-is.md",
+ "redirect_url": "/cpp/windows/attributes/last-is",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/lcid.md",
+ "redirect_url": "/cpp/windows/attributes/lcid",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/length-is.md",
+ "redirect_url": "/cpp/windows/attributes/length-is",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/library-block.md",
+ "redirect_url": "/cpp/windows/attributes/library-block",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/licensed.md",
+ "redirect_url": "/cpp/windows/attributes/licensed",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/local-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/local-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/max-is.md",
+ "redirect_url": "/cpp/windows/attributes/max-is",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/method-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/method-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/module-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/module-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/ms-union.md",
+ "redirect_url": "/cpp/windows/attributes/ms-union",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/no-injected-text.md",
+ "redirect_url": "/cpp/windows/attributes/no-injected-text",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/nonbrowsable.md",
+ "redirect_url": "/cpp/windows/attributes/nonbrowsable",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/noncreatable.md",
+ "redirect_url": "/cpp/windows/attributes/noncreatable",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/nonextensible.md",
+ "redirect_url": "/cpp/windows/attributes/nonextensible",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/object-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/object-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/odl.md",
+ "redirect_url": "/cpp/windows/attributes/odl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/ole-db-consumer-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/ole-db-consumer-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/oleautomation.md",
+ "redirect_url": "/cpp/windows/attributes/oleautomation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/optional-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/optional-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/out-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/out-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/parameter-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/parameter-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/pointer-default.md",
+ "redirect_url": "/cpp/windows/attributes/pointer-default",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/pragma.md",
+ "redirect_url": "/cpp/windows/attributes/pragma",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/progid.md",
+ "redirect_url": "/cpp/windows/attributes/progid",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/propget.md",
+ "redirect_url": "/cpp/windows/attributes/propget",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/propput.md",
+ "redirect_url": "/cpp/windows/attributes/propput",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/propputref.md",
+ "redirect_url": "/cpp/windows/attributes/propputref",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/ptr.md",
+ "redirect_url": "/cpp/windows/attributes/ptr",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/public-cpp-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/public-cpp-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/range-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/range-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/rdx.md",
+ "redirect_url": "/cpp/windows/attributes/rdx",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/readonly-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/readonly-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/ref-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/ref-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/registration-script.md",
+ "redirect_url": "/cpp/windows/attributes/registration-script",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/requestedit.md",
+ "redirect_url": "/cpp/windows/attributes/requestedit",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/requires-category.md",
+ "redirect_url": "/cpp/windows/attributes/requires-category",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/restricted.md",
+ "redirect_url": "/cpp/windows/attributes/restricted",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/retval.md",
+ "redirect_url": "/cpp/windows/attributes/retval",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/satype.md",
+ "redirect_url": "/cpp/windows/attributes/satype",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/size-is.md",
+ "redirect_url": "/cpp/windows/attributes/size-is",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/source-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/source-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/stand-alone-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/stand-alone-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/string-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/string-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/support-error-info.md",
+ "redirect_url": "/cpp/windows/attributes/support-error-info",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/switch-is.md",
+ "redirect_url": "/cpp/windows/attributes/switch-is",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/switch-type.md",
+ "redirect_url": "/cpp/windows/attributes/switch-type",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/synchronize.md",
+ "redirect_url": "/cpp/windows/attributes/synchronize",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/threading-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/threading-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/transmit-as.md",
+ "redirect_url": "/cpp/windows/attributes/transmit-as",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/typedef-enum-union-and-struct-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/typedef-enum-union-and-struct-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/uidefault.md",
+ "redirect_url": "/cpp/windows/attributes/uidefault",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/unique-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/unique-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/usesgetlasterror.md",
+ "redirect_url": "/cpp/windows/attributes/usesgetlasterror",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/uuid-cpp-attributes.md",
+ "redirect_url": "/cpp/windows/attributes/uuid-cpp-attributes",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/v1-enum.md",
+ "redirect_url": "/cpp/windows/attributes/v1-enum",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/vararg.md",
+ "redirect_url": "/cpp/windows/attributes/vararg",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/version-cpp.md",
+ "redirect_url": "/cpp/windows/attributes/version-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/vi-progid.md",
+ "redirect_url": "/cpp/windows/attributes/vi-progid",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/wire-marshal.md",
+ "redirect_url": "/cpp/windows/attributes/wire-marshal",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/windows-desktop-applications-cpp.md",
+ "redirect_url": "/cpp/windows/desktop-applications-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-auto-handle.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#auto-handle",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-tilde-auto-handle.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#tilde-auto-handle",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-members.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#members",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-get.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#get",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-operator-arrow.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#operator-arrow",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-operator-assign.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#operator-assign",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-operator-auto-handle.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#operator-auto-handle",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-operator-bool.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#operator-bool",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-operator-logical-not.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#operator-logical-not",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-release.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#release",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-reset.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#reset",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/dotnet/auto-handle-swap.md",
+ "redirect_url": "/cpp/dotnet/auto-handle-class#swap",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/activatableclass-macros.md",
+ "redirect_url": "/cpp/cppcx/wrl/activatableclass-macros",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/activateinstance-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/activateinstance-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/activationfactorycallback-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/activationfactorycallback-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/activationfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/activationfactory-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/agileactivationfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/agileactivationfactory-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/agileeventsource-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/agileeventsource-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/argtraitshelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/argtraitshelper-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/argtraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/argtraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/asweak-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/asweak-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/asyncbase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/asyncbase-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/asyncresulttype-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/asyncresulttype-enumeration",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/asyncstatusinternal-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/asyncstatusinternal-enumeration",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/boolstruct-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/boolstruct-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/callback-function-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/callback-function-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/canceltransitionpolicy-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/canceltransitionpolicy-enumeration",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/chaininterfaces-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/chaininterfaces-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/classfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/classfactory-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/cloakediid-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/cloakediid-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/comparestringordinal-method.md",
+ "redirect_url": "/cpp/cppcx/wrl/comparestringordinal-method",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/composablebase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/composablebase-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/comptr-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/comptr-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/comptrrefbase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/comptrrefbase-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/comptrref-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/comptrref-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/createactivationfactory-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/createactivationfactory-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/createclassfactory-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/createclassfactory-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/creatormap-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/creatormap-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/criticalsection-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/criticalsection-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/criticalsectiontraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/criticalsectiontraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/deferrableeventargs-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/deferrableeventargs-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/derefhelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/derefhelper-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/dontusenewusemake-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/dontusenewusemake-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/enableif-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/enableif-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/event-class-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/event-class-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/eventsource-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/eventsource-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/eventtargetarray-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/eventtargetarray-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/eventtraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/eventtraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/factorycacheflags-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/factorycacheflags-enumeration",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/factorycache-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/factorycache-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/filehandletraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/filehandletraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/ftmbase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/ftmbase-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/getactivationfactory-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/getactivationfactory-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/getmodulebase-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/getmodulebase-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/handlenulltraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/handlenulltraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/handlet-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/handlet-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/handletraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/handletraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-complete-asynchronous-operations-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-complete-asynchronous-operations-using-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-create-a-classic-com-component-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-create-a-classic-com-component-using-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-handle-events-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-handle-events-using-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-instantiate-wrl-components-directly.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-instantiate-wrl-components-directly",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/hstring-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/hstring-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/hstringreference-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/hstringreference-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/iid-ppv-args-helper-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/iid-ppv-args-helper-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/implementsbase-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/implementsbase-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/implementshelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/implementshelper-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/implements-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/implements-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/inspectableclass-macro.md",
+ "redirect_url": "/cpp/cppcx/wrl/inspectableclass-macro",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/interfacelisthelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/interfacelisthelper-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/interfacelist-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/interfacelist-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/interfacetraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/interfacetraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/invokehelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/invokehelper-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/invokemodeoptions-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/invokemodeoptions-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/isbaseofstrict-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/isbaseofstrict-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/issame-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/issame-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/key-wrl-apis-by-category.md",
+ "redirect_url": "/cpp/cppcx/wrl/key-wrl-apis-by-category",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/makeallocator-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/makeallocator-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/makeandinitialize-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/makeandinitialize-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/make-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/make-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/microsoft-wrl-details-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-details-namespace",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/microsoft-wrl-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-namespace",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/microsoft-wrl-wrappers-details-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-details-namespace",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/microsoft-wrl-wrappers-handletraits-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-handletraits-namespace",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/microsoft-wrl-wrappers-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-namespace",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/mixin-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/mixin-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/modulebase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/modulebase-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/module-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/module-genericreleasenotifier-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-genericreleasenotifier-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/module-methodreleasenotifier-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-methodreleasenotifier-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/module-releasenotifier-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-releasenotifier-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/moduletype-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/moduletype-enumeration",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/move-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/move-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/mutex-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/mutex-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/mutextraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/mutextraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/nil-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/nil-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/operator-equality-operator-microsoft-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/operator-equality-operator-microsoft-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/operator-inequality-operator-microsoft-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/operator-inequality-operator-microsoft-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/operator-less-than-operator-microsoft-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/operator-less-than-operator-microsoft-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/raiseexception-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/raiseexception-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/removeiunknown-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/removeiunknown-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/removereference-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/removereference-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/roinitializewrapper-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/roinitializewrapper-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/runtimeclassbase-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclassbase-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/runtimeclassbaset-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclassbaset-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/runtimeclass-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclass-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/runtimeclassflags-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclassflags-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/runtimeclasstype-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclasstype-enumeration",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/semaphore-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/semaphore-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/semaphoretraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/semaphoretraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/simpleactivationfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/simpleactivationfactory-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/simpleclassfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/simpleclassfactory-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/srwlock-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/srwlock-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/srwlockexclusivetraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/srwlockexclusivetraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/srwlocksharedtraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/srwlocksharedtraits-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/swap-function-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/swap-function-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/synclockt-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/synclockt-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/synclockwithstatust-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/synclockwithstatust-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/terminatemap-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/terminatemap-function",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md",
+ "redirect_url": "/cpp/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/verifyinheritancehelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/verifyinheritancehelper-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/verifyinterfacehelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/verifyinterfacehelper-structure",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md",
+ "redirect_url": "/cpp/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/weakref-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/weakref-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/weakreference-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/weakreference-class",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/windows-foundation-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/windows-foundation-namespace",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/windows-runtime-cpp-template-library-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/windows-runtime-cpp-template-library-wrl",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/wrl-reference.md",
+ "redirect_url": "/cpp/cppcx/wrl/wrl-reference",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/wrl/activatableclass-macros.md",
+ "redirect_url": "/cpp/cppcx/wrl/activatableclass-macros",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/activateinstance-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/activateinstance-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/activationfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/activationfactory-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/activationfactorycallback-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/activationfactorycallback-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/agileactivationfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/agileactivationfactory-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/agileeventsource-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/agileeventsource-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/argtraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/argtraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/argtraitshelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/argtraitshelper-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/asweak-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/asweak-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/asyncbase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/asyncbase-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/asyncresulttype-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/asyncresulttype-enumeration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/asyncstatusinternal-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/asyncstatusinternal-enumeration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/boolstruct-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/boolstruct-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/callback-function-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/callback-function-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/canceltransitionpolicy-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/canceltransitionpolicy-enumeration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/chaininterfaces-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/chaininterfaces-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/classfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/classfactory-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/cloakediid-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/cloakediid-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/comparestringordinal-method.md",
+ "redirect_url": "/cpp/cppcx/wrl/comparestringordinal-method",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/composablebase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/composablebase-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/comptr-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/comptr-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/comptrref-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/comptrref-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/comptrrefbase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/comptrrefbase-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/createactivationfactory-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/createactivationfactory-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/createclassfactory-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/createclassfactory-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/creatormap-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/creatormap-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/criticalsection-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/criticalsection-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/criticalsectiontraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/criticalsectiontraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/deferrableeventargs-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/deferrableeventargs-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/derefhelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/derefhelper-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/dontusenewusemake-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/dontusenewusemake-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/enableif-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/enableif-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/event-class-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/event-class-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/eventsource-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/eventsource-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/eventtargetarray-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/eventtargetarray-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/eventtraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/eventtraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/factorycache-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/factorycache-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/factorycacheflags-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/factorycacheflags-enumeration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/filehandletraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/filehandletraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/ftmbase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/ftmbase-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/getactivationfactory-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/getactivationfactory-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/getmodulebase-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/getmodulebase-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/handlenulltraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/handlenulltraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/handlet-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/handlet-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/handletraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/handletraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/how-to-complete-asynchronous-operations-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-complete-asynchronous-operations-using-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/how-to-create-a-classic-com-component-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-create-a-classic-com-component-using-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/how-to-handle-events-using-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-handle-events-using-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/how-to-instantiate-wrl-components-directly.md",
+ "redirect_url": "/cpp/cppcx/wrl/how-to-instantiate-wrl-components-directly",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/hstring-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/hstring-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/hstringreference-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/hstringreference-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/iid-ppv-args-helper-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/iid-ppv-args-helper-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/implements-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/implements-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/implementsbase-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/implementsbase-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/implementshelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/implementshelper-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/inspectableclass-macro.md",
+ "redirect_url": "/cpp/cppcx/wrl/inspectableclass-macro",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/interfacelist-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/interfacelist-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/interfacelisthelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/interfacelisthelper-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/interfacetraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/interfacetraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/invokehelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/invokehelper-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/invokemodeoptions-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/invokemodeoptions-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/isbaseofstrict-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/isbaseofstrict-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/issame-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/issame-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/key-wrl-apis-by-category.md",
+ "redirect_url": "/cpp/cppcx/wrl/key-wrl-apis-by-category",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/make-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/make-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/makeallocator-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/makeallocator-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/makeandinitialize-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/makeandinitialize-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/microsoft-wrl-details-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-details-namespace",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/microsoft-wrl-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-namespace",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/microsoft-wrl-wrappers-details-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-details-namespace",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/microsoft-wrl-wrappers-handletraits-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-handletraits-namespace",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/microsoft-wrl-wrappers-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/microsoft-wrl-wrappers-namespace",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/mixin-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/mixin-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/module-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/module-genericreleasenotifier-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-genericreleasenotifier-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/module-methodreleasenotifier-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-methodreleasenotifier-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/module-releasenotifier-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/module-releasenotifier-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/modulebase-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/modulebase-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/moduletype-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/moduletype-enumeration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/move-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/move-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/mutex-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/mutex-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/mutextraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/mutextraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/nil-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/nil-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/operator-equality-operator-microsoft-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/operator-equality-operator-microsoft-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/operator-inequality-operator-microsoft-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/operator-inequality-operator-microsoft-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/operator-less-than-operator-microsoft-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/operator-less-than-operator-microsoft-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/raiseexception-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/raiseexception-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/removeiunknown-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/removeiunknown-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/removereference-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/removereference-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/roinitializewrapper-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/roinitializewrapper-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/runtimeclass-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclass-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/runtimeclassbase-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclassbase-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/runtimeclassbaset-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclassbaset-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/runtimeclassflags-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclassflags-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/runtimeclasstype-enumeration.md",
+ "redirect_url": "/cpp/cppcx/wrl/runtimeclasstype-enumeration",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/semaphore-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/semaphore-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/semaphoretraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/semaphoretraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/simpleactivationfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/simpleactivationfactory-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/simpleclassfactory-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/simpleclassfactory-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/srwlock-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/srwlock-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/srwlockexclusivetraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/srwlockexclusivetraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/srwlocksharedtraits-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/srwlocksharedtraits-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/swap-function-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/swap-function-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/synclockt-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/synclockt-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/synclockwithstatust-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/synclockwithstatust-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/terminatemap-function.md",
+ "redirect_url": "/cpp/cppcx/wrl/terminatemap-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md",
+ "redirect_url": "/cpp/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/verifyinheritancehelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/verifyinheritancehelper-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/verifyinterfacehelper-structure.md",
+ "redirect_url": "/cpp/cppcx/wrl/verifyinterfacehelper-structure",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation.md",
+ "redirect_url": "/cpp/cppcx/wrl/walkthrough-creating-a-windows-store-app-using-wrl-and-media-foundation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/weakref-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/weakref-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/weakreference-class.md",
+ "redirect_url": "/cpp/cppcx/wrl/weakreference-class",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/windows-foundation-namespace.md",
+ "redirect_url": "/cpp/cppcx/wrl/windows-foundation-namespace",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/windows-runtime-cpp-template-library-wrl.md",
+ "redirect_url": "/cpp/cppcx/wrl/windows-runtime-cpp-template-library-wrl",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/wrl/wrl-reference.md",
+ "redirect_url": "/cpp/cppcx/wrl/wrl-reference",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/windows/abstract-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/abstract-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/arrays-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/arrays-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/attribute-parameter-types-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/attribute-parameter-types-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/attribute-targets-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/attribute-targets-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/boxing-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/boxing-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/c-style-casts-with-clr-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/c-style-casts-with-clr-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/classes-and-structs-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/classes-and-structs-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/compiler-support-for-type-traits-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/compiler-support-for-type-traits-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/component-extensions-for-runtime-platforms.md",
+ "redirect_url": "/cpp/extensions/component-extensions-for-runtime-platforms",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/constraints-on-generic-type-parameters-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/constraints-on-generic-type-parameters-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/consuming-generics-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/consuming-generics-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/context-sensitive-keywords-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/context-sensitive-keywords-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/delegate-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/delegate-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/enum-class-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/enum-class-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/event-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/event-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/exception-handling-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/exception-handling-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/explicit-overrides-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/explicit-overrides-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/extensions-that-are-specific-to-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/extensions-that-are-specific-to-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/generic-classes-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/generic-classes-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/generic-delegates-visual-cpp.md",
+ "redirect_url": "/cpp/extensions/generic-delegates-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/generic-functions-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/generic-functions-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/generic-interfaces-visual-cpp.md",
+ "redirect_url": "/cpp/extensions/generic-interfaces-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/generics-and-templates-visual-cpp.md",
+ "redirect_url": "/cpp/extensions/generics-and-templates-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/generics-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/generics-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/handle-to-object-operator-hat-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/handle-to-object-operator-hat-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-declare-and-use-interior-pointers-and-managed-arrays-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/how-to-declare-and-use-interior-pointers-and-managed-arrays-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/how-to-declare-interior-pointers-with-the-const-keyword-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-declare-pinning-pointers-and-value-types.md",
+ "redirect_url": "/cpp/extensions/how-to-declare-pinning-pointers-and-value-types",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-declare-value-types-with-the-interior-ptr-keyword-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/how-to-declare-value-types-with-the-interior-ptr-keyword-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-improve-performance-with-generics-visual-cpp.md",
+ "redirect_url": "/cpp/extensions/how-to-improve-performance-with-generics-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/how-to-overload-functions-with-interior-pointers-and-native-pointers-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/how-to-pin-pointers-and-arrays.md",
+ "redirect_url": "/cpp/extensions/how-to-pin-pointers-and-arrays",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/identifier-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/identifier-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/interface-class-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/interface-class-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/interior-ptr-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/interior-ptr-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/literal-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/literal-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/new-new-slot-in-vtable-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/new-new-slot-in-vtable-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/nullptr-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/nullptr-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/override-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/override-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/override-specifiers-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/override-specifiers-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/overview-of-generics-in-visual-cpp.md",
+ "redirect_url": "/cpp/extensions/overview-of-generics-in-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/partial-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/partial-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/pin-ptr-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/pin-ptr-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/platform-default-and-cli-namespaces-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/platform-default-and-cli-namespaces-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/property-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/property-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/ref-new-gcnew-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/ref-new-gcnew-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/safe-cast-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/safe-cast-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/sealed-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/sealed-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/string-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/string-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/tracking-reference-operator-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/tracking-reference-operator-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/type-forwarding-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/type-forwarding-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/typeid-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/typeid-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/user-defined-attributes-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/user-defined-attributes-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/variable-argument-lists-dot-dot-dot-cpp-cli.md",
+ "redirect_url": "/cpp/extensions/variable-argument-lists-dot-dot-dot-cpp-cli",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/windows/windows-runtime-and-managed-templates-cpp-component-extensions.md",
+ "redirect_url": "/cpp/extensions/windows-runtime-and-managed-templates-cpp-component-extensions",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/deploying-native-desktop-applications-visual-cpp.md",
+ "redirect_url": "/cpp/windows/deploying-native-desktop-applications-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/deployment-in-visual-cpp.md",
+ "redirect_url": "/cpp/windows/deployment-in-visual-cpp",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/deployment-concepts.md",
+ "redirect_url": "/cpp/windows/deployment-concepts",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/understanding-the-dependencies-of-a-visual-cpp-application.md",
+ "redirect_url": "/cpp/windows/understanding-the-dependencies-of-a-visual-cpp-application",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/determining-which-dlls-to-redistribute.md",
+ "redirect_url": "/cpp/windows/determining-which-dlls-to-redistribute",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/choosing-a-deployment-method.md",
+ "redirect_url": "/cpp/windows/choosing-a-deployment-method",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/universal-crt-deployment.md",
+ "redirect_url": "/cpp/windows/universal-crt-deployment",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/redistributing-visual-cpp-files.md",
+ "redirect_url": "/cpp/windows/redistributing-visual-cpp-files",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/redistributing-components-by-using-merge-modules.md",
+ "redirect_url": "/cpp/windows/redistributing-components-by-using-merge-modules",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/redistributing-visual-cpp-activex-controls.md",
+ "redirect_url": "/cpp/windows/redistributing-visual-cpp-activex-controls",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/redistributing-the-mfc-library.md",
+ "redirect_url": "/cpp/windows/redistributing-the-mfc-library",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/redistributing-an-atl-application.md",
+ "redirect_url": "/cpp/windows/redistributing-an-atl-application",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/deployment-examples.md",
+ "redirect_url": "/cpp/windows/deployment-examples",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project.md",
+ "redirect_url": "/cpp/windows/walkthrough-deploying-a-visual-cpp-application-by-using-a-setup-project",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder.md",
+ "redirect_url": "/cpp/windows/walkthrough-deploying-a-visual-cpp-application-to-an-application-local-folder",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package.md",
+ "redirect_url": "/cpp/windows/deploying-visual-cpp-application-by-using-the-vcpp-redistributable-package",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/preparing-a-test-machine-to-run-a-debug-executable.md",
+ "redirect_url": "/cpp/windows/preparing-a-test-machine-to-run-a-debug-executable",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/redistributing-web-client-applications.md",
+ "redirect_url": "/cpp/windows/redistributing-web-client-applications",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/clickonce-deployment-for-visual-cpp-applications.md",
+ "redirect_url": "/cpp/windows/clickonce-deployment-for-visual-cpp-applications",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/running-a-cpp-clr-application-on-a-previous-runtime-version.md",
+ "redirect_url": "/cpp/windows/running-a-cpp-clr-application-on-a-previous-runtime-version",
+ "redirect_document_id": true
+ },
+ {
+ "source_path": "docs/build/reference/hlsl-property-pages-advanced.md",
+ "redirect_url": "/cpp/build/reference/hlsl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/hlsl-property-pages-general.md",
+ "redirect_url": "/cpp/build/reference/hlsl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/build/reference/hlsl-property-pages-output-files.md",
+ "redirect_url": "/cpp/build/reference/hlsl-property-pages",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/1-1-scope.md",
+ "redirect_url": "/cpp/parallel/openmp/1-introduction#11-scope",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/1-2-definition-of-terms.md",
+ "redirect_url": "/cpp/parallel/openmp/1-introduction#12-definition-of-terms",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/1-3-execution-model.md",
+ "redirect_url": "/cpp/parallel/openmp/1-introduction#13-execution-model",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/1-4-compliance.md",
+ "redirect_url": "/cpp/parallel/openmp/1-introduction#14-compliance",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/1-5-normative-references.md",
+ "redirect_url": "/cpp/parallel/openmp/1-introduction#15-normative-references",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/1-6-organization.md",
+ "redirect_url": "/cpp/parallel/openmp/1-introduction#16-organization",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/4-1-omp-schedule.md",
+ "redirect_url": "/cpp/parallel/openmp/4-environment-variables#41-omp_schedule",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/4-2-omp-num-threads.md",
+ "redirect_url": "/cpp/parallel/openmp/4-environment-variables#42-omp_num_threads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/4-3-omp-dynamic.md",
+ "redirect_url": "/cpp/parallel/openmp/4-environment-variables#43-omp_dynamic",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/4-4-omp-nested.md",
+ "redirect_url": "/cpp/parallel/openmp/4-environment-variables#44-omp_nested",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/c-1-notation.md",
+ "redirect_url": "/cpp/parallel/openmp/c-openmp-c-and-cpp-grammar#c1-notation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/c-2-rules.md",
+ "redirect_url": "/cpp/parallel/openmp/c-openmp-c-and-cpp-grammar#c2-rules",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-1-directive-format.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#21-directive-format",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-2-conditional-compilation.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#22-conditional-compilation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-3-parallel-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#23-parallel-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-4-work-sharing-constructs.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#24-work-sharing-constructs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-4-1-for-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#241-for-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-4-2-sections-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#242-sections-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-4-3-single-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#243-single-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-5-combined-parallel-work-sharing-constructs.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#25-combined-parallel-work-sharing-constructs",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-5-1-parallel-for-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#251-parallel-for-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-5-2-parallel-sections-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#252-parallel-sections-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-6-master-and-synchronization-directives.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#26-master-and-synchronization-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-6-1-master-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#261-master-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-6-2-critical-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#262-critical-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-6-3-barrier-directive.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#263-barrier-directive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-6-4-atomic-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#264-atomic-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-6-5-flush-directive.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#265-flush-directive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-6-6-ordered-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#266-ordered-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-data-environment.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#27-data-environment",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-1-threadprivate-directive.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#271-threadprivate-directive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-data-sharing-attribute-clauses.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#272-data-sharing-attribute-clauses",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-1-private.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2721-private",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-2-firstprivate.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2722-firstprivate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-3-lastprivate.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2723-lastprivate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-4-shared.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2724-shared",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-5-default.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2725-default",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-6-reduction.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2726-reduction",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-7-copyin.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2727-copyin",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-7-2-8-copyprivate.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#2728-copyprivate",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-8-directive-binding.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#28-directive-binding",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/2-9-directive-nesting.md",
+ "redirect_url": "/cpp/parallel/openmp/2-directives#29-directive-nesting",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-execution-environment-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#31-execution-environment-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-2-lock-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#32-lock-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-3-timing-routines.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#33-timing-routines",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-1-omp-set-num-threads-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#311-omp_set_num_threads-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-2-omp-get-num-threads-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#312-omp_get_num_threads-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-3-omp-get-max-threads-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#313-omp_get_max_threads-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-4-omp-get-thread-num-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#314-omp_get_thread_num-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-5-omp-get-num-procs-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#315-omp_get_num_procs-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-6-omp-in-parallel-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#316-omp_in_parallel-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-7-omp-set-dynamic-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#317-omp_set_dynamic-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-8-omp-get-dynamic-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#318-omp_get_dynamic-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-9-omp-set-nested-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#319-omp_set_nested-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-1-10-omp-get-nested-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#3110-omp_get_nested-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-2-1-omp-init-lock-and-omp-init-nest-lock-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#321-omp_init_lock-and-omp_init_nest_lock-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-2-2-omp-destroy-lock-and-omp-destroy-nest-lock-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#322-omp_destroy_lock-and-omp_destroy_nest_lock-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-2-3-omp-set-lock-and-omp-set-nest-lock-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#323-omp_set_lock-and-omp_set_nest_lock-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-2-4-omp-unset-lock-and-omp-unset-nest-lock-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#324-omp_unset_lock-and-omp_unset_nest_lock-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-2-5-omp-test-lock-and-omp-test-nest-lock-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#325-omp_test_lock-and-omp_test_nest_lock-functions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-3-1-omp-get-wtime-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#331-omp_get_wtime-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/3-3-2-omp-get-wtick-function.md",
+ "redirect_url": "/cpp/parallel/openmp/3-run-time-library-functions#332-omp_get_wtick-function",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-1-executing-a-simple-loop-in-parallel.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a1-a-simple-loop-in-parallel",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-2-specifying-conditional-compilation.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a2-conditional-compilation",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-3-using-parallel-regions.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a3-parallel-regions",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-4-using-the-nowait-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a4-the-nowait-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-5-using-the-critical-directive.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a5-the-critical-directive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-6-using-the-lastprivate-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a6-the-lastprivate-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-7-using-the-reduction-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a7-the-reduction-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-8-specifying-parallel-sections.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a8-parallel-sections",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-9-using-single-directives.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a9-single-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-10-specifying-sequential-ordering.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a10-sequential-ordering",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-11-specifying-a-fixed-number-of-threads.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a11-a-fixed-number-of-threads",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-12-using-the-atomic-directive.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a12-the-atomic-directive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-13-using-the-flush-directive-with-a-list.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a13-a-flush-directive-with-a-list",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-14-using-the-flush-directive-without-a-list.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a14-a-flush-directive-without-a-list",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-15-determining-the-number-of-threads-used.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a15-the-number-of-threads-used",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-16-using-locks.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a16-locks",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-17-using-nestable-locks.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a17-nestable-locks",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-18-nested-for-directives.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a18-nested-for-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-19-examples-showing-incorrect-nesting-of-work-sharing-directives.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a19-examples-showing-incorrect-nesting-of-work-sharing-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-20-binding-of-barrier-directives.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a20-bind-barrier-directives",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-21-scoping-variables-with-the-private-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a21-scope-variables-with-the-private-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-22-using-the-default-none-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a22-the-defaultnone-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-23-examples-of-the-ordered-directive.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a23-examples-of-the-ordered-directive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-24-example-of-the-private-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a24-example-of-the-private-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-25-examples-of-the-copyprivate-data-attribute-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a25-examples-of-the-copyprivate-data-attribute-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-26-using-the-threadprivate-directive.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a26-the-threadprivate-directive",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-27-use-of-c99-variable-length-arrays.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a27-c99-variable-length-arrays",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-28-use-of-num-threads-clause.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a28-the-num_threads-clause",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-29-use-of-work-sharing-constructs-inside-a-critical-construct.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a29-work-sharing-constructs-inside-a-critical-construct",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-30-use-of-reprivatization.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a30-reprivatization",
+ "redirect_document_id": false
+ },
+ {
+ "source_path": "docs/parallel/openmp/a-31-thread-safe-lock-functions.md",
+ "redirect_url": "/cpp/parallel/openmp/a-examples#a31-thread-safe-lock-functions",
+ "redirect_document_id": false
+ }
+ ]
+}
diff --git a/docs/assembler/arm/arm-assembler-reference.md b/docs/assembler/arm/arm-assembler-reference.md
index 7fa9d92e87..cfc4a8215d 100644
--- a/docs/assembler/arm/arm-assembler-reference.md
+++ b/docs/assembler/arm/arm-assembler-reference.md
@@ -19,5 +19,6 @@ The articles in this section of the documentation provide reference material for
## See also
-[ARM Intrinsics](../../intrinsics/arm-intrinsics.md)
-[Compiler Intrinsics](../../intrinsics/compiler-intrinsics.md)
+[ARM intrinsics](../../intrinsics/arm-intrinsics.md)\
+[ARM64 intrinsics](../../intrinsics/arm64-intrinsics.md)\
+[Compiler intrinsics](../../intrinsics/compiler-intrinsics.md)
diff --git a/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md b/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md
index f2e6785b5f..63c57febfc 100644
--- a/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md
+++ b/docs/assembler/inline/using-c-or-cpp-in-asm-blocks.md
@@ -6,7 +6,7 @@ ms.assetid: ae8b2b52-6b75-42e3-ac0c-ad02d922ed97
---
# Using C or C++ in __asm Blocks
-** Microsoft Specific **
+**Microsoft Specific**
Because inline assembly instructions can be mixed with C or C++ statements, they can refer to C or C++ variables by name and use many other elements of those languages.
diff --git a/docs/assembler/masm/alias-masm.md b/docs/assembler/masm/alias-masm.md
index 5d47948e2b..5a00d05d1f 100644
--- a/docs/assembler/masm/alias-masm.md
+++ b/docs/assembler/masm/alias-masm.md
@@ -1,26 +1,27 @@
---
title: "ALIAS (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Alias"]
helpviewer_keywords: ["ALIAS directive"]
ms.assetid: d9725c49-58de-41da-ab01-b06a56cf5cf2
---
-# ALIAS (MASM)
+# ALIAS
The **ALIAS** directive creates an alternate name for a function. This lets you create multiple names for a function, or create libraries that allow the linker (LINK.exe) to map an old function to a new function.
## Syntax
-> ALIAS \<*alias*> = \<*actual-name*>
+> **ALIAS \<**_alias_**> = \<**_actual-name_**>**
#### Parameters
-*actual-name*
+*actual-name*\
The actual name of the function or procedure. The angle brackets are required.
-*alias*
+*alias*\
The alternate or alias name. The angle brackets are required.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/align-masm.md b/docs/assembler/masm/align-masm.md
index c22809d24a..c747ac0315 100644
--- a/docs/assembler/masm/align-masm.md
+++ b/docs/assembler/masm/align-masm.md
@@ -1,17 +1,17 @@
---
title: "ALIGN (MASM)"
-ms.date: "01/02/2019"
+ms.date: "12/17/2019"
f1_keywords: ["align"]
helpviewer_keywords: ["ALIGN directive"]
ms.assetid: 1c386b23-439f-4ec3-a6de-74427b25e47f
---
-# ALIGN (MASM)
+# ALIGN
The **ALIGN** directive aligns the next data element or instruction on an address that is a multiple of its parameter. The parameter must be a power of 2 (for example, 1, 2, 4, and so on) that is less than or equal to the segment alignment.
## Syntax
-> ALIGN [[*number*]]
+> **ALIGN** ⟦*constantExpression*⟧
## Remarks
@@ -23,5 +23,6 @@ When data is aligned, the skipped space is padded with zeroes. When instructions
## See also
-[EVEN](even.md)
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[EVEN](even.md)\
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/assume.md b/docs/assembler/masm/assume.md
index 7e72b862fb..d737faacab 100644
--- a/docs/assembler/masm/assume.md
+++ b/docs/assembler/masm/assume.md
@@ -1,25 +1,26 @@
---
title: "ASSUME"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: ["ASSUME"]
helpviewer_keywords: ["ASSUME directive"]
ms.assetid: cd162070-aee9-4c65-babc-005c6cc73d7c
---
# ASSUME
-Enables error checking for register values.
+Enables error checking for register values. (32-bit MASM only.)
## Syntax
-> ASSUME *segregister*:*name* [[, *segregister*:*name*]]...
-> ASSUME *dataregister*:*type* [[, *dataregister*:*type*]]...
-> ASSUME *register*:ERROR [[, *register*:ERROR]]...
-> ASSUME [[*register*:]] NOTHING [[, *register*:NOTHING]]...
+> **ASSUME** *segregister*__:__*name* ⟦__,__ *segregister*__:__*name*...⟧\
+> **ASSUME** *dataregister*__:__*type* ⟦__,__ *dataregister*__:__*type*...⟧\
+> **ASSUME** *register*__:ERROR__ ⟦__,__ *register*__:ERROR__...⟧\
+> **ASSUME** ⟦*register*__:__⟧**NOTHING** ⟦__,__ *register*__:NOTHING__...⟧
## Remarks
-After an `ASSUME` is put into effect, the assembler watches for changes to the values of the given registers. **ERROR** generates an error if the register is used. **NOTHING** removes register error checking. You can combine different kinds of assumptions in one statement.
+After an **ASSUME** is put into effect, the assembler watches for changes to the values of the given registers. **ERROR** generates an error if the register is used. **NOTHING** removes register error checking. You can combine different kinds of assumptions in one statement.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-at.md b/docs/assembler/masm/at-at.md
index ed3f807ebc..2106bdf233 100644
--- a/docs/assembler/masm/at-at.md
+++ b/docs/assembler/masm/at-at.md
@@ -1,13 +1,13 @@
---
title: "@@:"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@@:"]
helpviewer_keywords: ["@@: symbol"]
ms.assetid: 4c0aa730-d534-4efd-9608-54d683d78654
---
# \@\@:
-Defines a code label recognizable only between *label1* and *label2*, where *label1* is either start of code or the previous `@@:` label, and *label2* is either end of code or the next `@@:` label. See [\@B](../../assembler/masm/at-b.md) and [\@F](../../assembler/masm/at-f.md).
+Defines a code label recognizable only between *label1* and *label2*, where *label1* is either start of code or the previous `@@:` label, and *label2* is either end of code or the next `@@:` label. See [\@B](at-b.md) and [\@F](at-f.md).
## Syntax
@@ -15,4 +15,5 @@ Defines a code label recognizable only between *label1* and *label2*, where *lab
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-b.md b/docs/assembler/masm/at-b.md
index 11a7032651..69d5ffd640 100644
--- a/docs/assembler/masm/at-b.md
+++ b/docs/assembler/masm/at-b.md
@@ -1,18 +1,19 @@
---
title: "@B"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@B"]
helpviewer_keywords: ["@B symbol"]
ms.assetid: ca17c71a-4a5d-4470-a098-484c781dbfa7
---
-# @B
+# \@B
-The location of the previous [@@:](../../assembler/masm/at-at.md) label.
+The location of the previous [\@\@:](at-at.md) label.
## Syntax
-> @B
+> **\@B**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-catstr.md b/docs/assembler/masm/at-catstr.md
index 6373edb809..76e37e914c 100644
--- a/docs/assembler/masm/at-catstr.md
+++ b/docs/assembler/masm/at-catstr.md
@@ -1,18 +1,19 @@
---
title: "@CatStr"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@CatStr"]
helpviewer_keywords: ["@CatStr symbol"]
ms.assetid: 01fcc590-1ec2-42f6-b868-ed0433297c26
---
-# @CatStr
+# \@CatStr
Macro function that concatenates one or more strings. Returns a string.
## Syntax
-> @CatStr( string1 [[, string2...]] )
+> **\@CatStr(** *string1* ⟦__,__ *string2*...⟧ **)**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-code.md b/docs/assembler/masm/at-code.md
index 710404db92..bbcb648909 100644
--- a/docs/assembler/masm/at-code.md
+++ b/docs/assembler/masm/at-code.md
@@ -1,18 +1,19 @@
---
title: "@code"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@code"]
helpviewer_keywords: ["@code symbol"]
ms.assetid: 44e050e6-d254-4157-9022-cf6afbaa0515
---
-# @code
+# \@code
The name of the code segment (text macro).
## Syntax
-> @code
+> **\@code**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-codesize.md b/docs/assembler/masm/at-codesize.md
index efee2f4764..e85a49aa63 100644
--- a/docs/assembler/masm/at-codesize.md
+++ b/docs/assembler/masm/at-codesize.md
@@ -1,18 +1,19 @@
---
title: "@CodeSize"
-ms.date: "08/30/2018"
+ms.date: "11/21/2019"
f1_keywords: ["@CodeSize"]
helpviewer_keywords: ["@CodeSize symbol"]
ms.assetid: 6e18d99f-9999-41fe-9330-b80de8f735d5
---
-# @CodeSize
+# \@CodeSize
0 for **TINY**, **SMALL**, **COMPACT**, and **FLAT** models, and 1 for **MEDIUM**, **LARGE**, and **HUGE** models (numeric equate).
## Syntax
-> @CodeSize
+> **\@CodeSize**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-cpu.md b/docs/assembler/masm/at-cpu.md
index 80cd8892e6..f281916613 100644
--- a/docs/assembler/masm/at-cpu.md
+++ b/docs/assembler/masm/at-cpu.md
@@ -1,18 +1,19 @@
---
title: "@Cpu"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Cpu"]
helpviewer_keywords: ["@Cpu symbol"]
ms.assetid: 04f9fdf6-9772-407e-9c09-c12bed29087b
---
-# @Cpu
+# \@Cpu
A bit mask specifying the processor mode (numeric equate).
## Syntax
-> @Cpu
+> **\@Cpu**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-curseg.md b/docs/assembler/masm/at-curseg.md
index 823775093b..a232e162f6 100644
--- a/docs/assembler/masm/at-curseg.md
+++ b/docs/assembler/masm/at-curseg.md
@@ -1,18 +1,19 @@
---
title: "@CurSeg"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@CurSeg"]
helpviewer_keywords: ["@CurSeg symbol"]
ms.assetid: 8fbf90c1-7734-4113-9ba2-6ec664b3b59f
---
-# @CurSeg
+# \@CurSeg
The name of the current segment (text macro).
## Syntax
-> @CurSeg
+> **\@CurSeg**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-data.md b/docs/assembler/masm/at-data.md
index f4d8362c68..7ff06cfcfe 100644
--- a/docs/assembler/masm/at-data.md
+++ b/docs/assembler/masm/at-data.md
@@ -1,18 +1,19 @@
---
title: "@data"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@data"]
helpviewer_keywords: ["@data symbol"]
ms.assetid: d3e99fb0-4c9e-40a8-9e2d-15de3b01a2fe
---
-# @data
+# \@data
The name of the default data group. Evaluates to DGROUP for all models except **FLAT**. Evaluates to **FLAT** under the **FLAT** memory model (text macro).
## Syntax
-> @data
+> **\@data**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-datasize.md b/docs/assembler/masm/at-datasize.md
index a34973c7ce..94842ee0b0 100644
--- a/docs/assembler/masm/at-datasize.md
+++ b/docs/assembler/masm/at-datasize.md
@@ -1,18 +1,19 @@
---
title: "@DataSize"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@DataSize"]
helpviewer_keywords: ["@DataSize symbol"]
ms.assetid: c31dd6ab-0706-43ed-9a5d-024730f7931b
---
-# @DataSize
+# \@DataSize
0 for **TINY**, **SMALL**, **MEDIUM**, and **FLAT** models, 1 for **COMPACT** and **LARGE** models, and 2 for **HUGE** model (numeric equate).
## Syntax
-> @DataSize
+> **\@DataSize**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-date.md b/docs/assembler/masm/at-date.md
index 6d824ef210..1e93f81f8f 100644
--- a/docs/assembler/masm/at-date.md
+++ b/docs/assembler/masm/at-date.md
@@ -1,18 +1,19 @@
---
title: "@Date"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Date"]
helpviewer_keywords: ["@Date symbol"]
ms.assetid: e5af496b-c5c8-4724-a54a-6880fcd67ee3
---
-# @Date
+# \@Date
The system date in the format mm/dd/yy (text macro).
## Syntax
-> @Date
+> **\@Date**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-environ.md b/docs/assembler/masm/at-environ.md
index 750dc75095..471e846b91 100644
--- a/docs/assembler/masm/at-environ.md
+++ b/docs/assembler/masm/at-environ.md
@@ -1,18 +1,19 @@
---
title: "@Environ"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Environ"]
helpviewer_keywords: ["@Environ symbol"]
ms.assetid: 4b0b7e93-9ebe-413b-8196-1a504eb6d1d0
---
-# @Environ
+# \@Environ
Value of environment variable *envvar* (macro function).
## Syntax
-> @Environ( envvar )
+> **\@Environ(** *envvar* **)**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-f.md b/docs/assembler/masm/at-f.md
index 9fc4772b5d..6515fafe90 100644
--- a/docs/assembler/masm/at-f.md
+++ b/docs/assembler/masm/at-f.md
@@ -1,18 +1,19 @@
---
title: "@F"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@F"]
helpviewer_keywords: ["@F symbol"]
ms.assetid: fa717dc8-e5a4-420d-ad3c-cb64ed258a60
---
-# @F
+# \@F
-The location of the next [@@:](../../assembler/masm/at-at.md) label.
+The location of the next [\@\@:](at-at.md) label.
## Syntax
-> @F
+> **\@F**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-fardata-q.md b/docs/assembler/masm/at-fardata-q.md
index c7613d6234..d11d44469f 100644
--- a/docs/assembler/masm/at-fardata-q.md
+++ b/docs/assembler/masm/at-fardata-q.md
@@ -1,18 +1,19 @@
---
title: "@fardata?"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@fardata?"]
helpviewer_keywords: ["@fardata? symbol"]
ms.assetid: 5184ac8d-c433-4136-81b2-3e7f6082415d
---
-# @fardata?
+# \@fardata?
-The name of the segment defined by the [.FARDATA?](../../assembler/masm/dot-fardata-q.md) directive (text macro).
+The name of the segment defined by the [.FARDATA?](dot-fardata-q.md) directive (text macro).
## Syntax
-> @fardata?
+> **\@fardata?**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-fardata.md b/docs/assembler/masm/at-fardata.md
index 20d8f5a9be..e1cb845c67 100644
--- a/docs/assembler/masm/at-fardata.md
+++ b/docs/assembler/masm/at-fardata.md
@@ -1,18 +1,19 @@
---
title: "@fardata"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@fardata"]
helpviewer_keywords: ["@fardata symbol"]
ms.assetid: b1e096b3-54fc-44ef-bbe6-0c6d5f5d206d
---
-# @fardata
+# \@fardata
-The name of the segment defined by the [.FARDATA](../../assembler/masm/dot-fardata.md) directive (text macro).
+The name of the segment defined by the [.FARDATA](dot-fardata.md) directive (text macro).
## Syntax
-> @fardata
+> **\@fardata**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-filecur.md b/docs/assembler/masm/at-filecur.md
index a7b5fbde38..828cca07a2 100644
--- a/docs/assembler/masm/at-filecur.md
+++ b/docs/assembler/masm/at-filecur.md
@@ -1,18 +1,19 @@
---
title: "@FileCur"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@FileCur"]
helpviewer_keywords: ["@FileCur symbol"]
ms.assetid: f00f36df-ff6a-4dc7-9800-dc23a300f1d4
---
-# @FileCur
+# \@FileCur
The name of the current file (text macro).
## Syntax
-> @FileCur
+> **\@FileCur**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-filename.md b/docs/assembler/masm/at-filename.md
index b8c15fe16a..ea902b8024 100644
--- a/docs/assembler/masm/at-filename.md
+++ b/docs/assembler/masm/at-filename.md
@@ -1,18 +1,19 @@
---
title: "@FileName"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@FileName"]
helpviewer_keywords: ["@FileName symbol"]
ms.assetid: a713bf70-2abd-4953-b187-7875ded58e52
---
-# @FileName
+# \@FileName
The base name of the main file being assembled (text macro).
## Syntax
-> @FileName
+> **\@FileName**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-instr.md b/docs/assembler/masm/at-instr.md
index 8388d28324..80d9d5e436 100644
--- a/docs/assembler/masm/at-instr.md
+++ b/docs/assembler/masm/at-instr.md
@@ -1,18 +1,19 @@
---
title: "@InStr"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@InStr"]
helpviewer_keywords: ["@InStr symbol"]
ms.assetid: 980d5b9f-2b88-4306-8955-df6cd2133e68
---
-# @InStr
+# \@InStr
Macro function that finds the first occurrence of *string2* in *string1*, beginning at *position* within *string1*. If *position* does not appear, search begins at start of *string1*. Returns a position integer or 0 if *string2* is not found.
## Syntax
-> @InStr( [[position]], string1, string2 )
+> **\@InStr(** ⟦*position*⟧__,__ *string1*__,__ *string2* **)**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-interface.md b/docs/assembler/masm/at-interface.md
index 138533dd4d..af5eab2aa2 100644
--- a/docs/assembler/masm/at-interface.md
+++ b/docs/assembler/masm/at-interface.md
@@ -1,18 +1,19 @@
---
title: "@Interface"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Interface"]
helpviewer_keywords: ["@Interface symbol"]
ms.assetid: 266ecba9-9e96-4086-8ee4-a3d0161b6e29
---
-# @Interface
+# \@Interface
Information about the language parameters (numeric equate).
## Syntax
-> @Interface
+> **\@Interface**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-line.md b/docs/assembler/masm/at-line.md
index bd6b5f765f..e907328655 100644
--- a/docs/assembler/masm/at-line.md
+++ b/docs/assembler/masm/at-line.md
@@ -1,18 +1,19 @@
---
title: "@Line"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Line"]
helpviewer_keywords: ["@Line symbol"]
ms.assetid: f879fda0-c046-478a-acbd-2e7ff7f7ddad
---
-# @Line
+# \@Line
The source line number in the current file (numeric equate).
## Syntax
-> @Line
+> **\@Line**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-model.md b/docs/assembler/masm/at-model.md
index af5049015b..cf59240a8e 100644
--- a/docs/assembler/masm/at-model.md
+++ b/docs/assembler/masm/at-model.md
@@ -1,18 +1,19 @@
---
title: "@Model"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Model"]
helpviewer_keywords: ["@Model symbol"]
ms.assetid: a67c04ac-6ba7-458c-8138-0346e5b85eb6
---
-# @Model
+# \@Model
1 for **TINY** model, 2 for **SMALL** model, 3 for **COMPACT** model, 4 for **MEDIUM** model, 5 for **LARGE** model, 6 for **HUGE** model, and 7 for **FLAT** model (numeric equate).
## Syntax
-> @Model
+> **\@Model**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-sizestr.md b/docs/assembler/masm/at-sizestr.md
index 34d3b285c9..04b128e07d 100644
--- a/docs/assembler/masm/at-sizestr.md
+++ b/docs/assembler/masm/at-sizestr.md
@@ -1,18 +1,19 @@
---
title: "@SizeStr"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@SizeStr"]
helpviewer_keywords: ["@SizeStr symbol"]
ms.assetid: 91fa439a-7df1-4dd9-a0c7-82bae2eb68c9
---
-# @SizeStr
+# \@SizeStr
A macro function that returns the length of the given string. Returns an integer.
## Syntax
-> @SizeStr( string )
+> **\@SizeStr(** *string* **)**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-stack.md b/docs/assembler/masm/at-stack.md
index 712ff89d98..09aef4a532 100644
--- a/docs/assembler/masm/at-stack.md
+++ b/docs/assembler/masm/at-stack.md
@@ -1,18 +1,19 @@
---
title: "@stack"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@stack"]
helpviewer_keywords: ["@stack symbol"]
ms.assetid: 4f656d9f-c3d4-4e19-9d97-bdee01b41861
---
-# @stack
+# \@stack
DGROUP for near stacks or STACK for far stacks (text macro).
## Syntax
-> @stack
+> **\@stack**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-substr.md b/docs/assembler/masm/at-substr.md
index a834065643..00c8b76567 100644
--- a/docs/assembler/masm/at-substr.md
+++ b/docs/assembler/masm/at-substr.md
@@ -1,18 +1,19 @@
---
title: "@SubStr"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@SubStr"]
helpviewer_keywords: ["@SubStr symbol"]
ms.assetid: f4b8fc6e-14a0-46fe-8c27-6b3347a08504
---
-# @SubStr
+# \@SubStr
A macro function that returns a substring starting at *position*.
## Syntax
-> @SubStr( string, position [[, length]] )
+> **\@SubStr(** *string*__,__ *position* ⟦__,__ *length*⟧ **)**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-time.md b/docs/assembler/masm/at-time.md
index 5a32cb21a4..2924f80d33 100644
--- a/docs/assembler/masm/at-time.md
+++ b/docs/assembler/masm/at-time.md
@@ -1,18 +1,19 @@
---
title: "@Time"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Time"]
helpviewer_keywords: ["@Time symbol"]
ms.assetid: a9712e51-be60-4ac4-a497-54a1aa0a1acd
---
-# @Time
+# \@Time
The system time in 24-hour hh:mm:ss format (text macro).
## Syntax
-> @Time
+> **\@Time**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-version.md b/docs/assembler/masm/at-version.md
index 5a9bc3e7ea..e00766ea6b 100644
--- a/docs/assembler/masm/at-version.md
+++ b/docs/assembler/masm/at-version.md
@@ -1,18 +1,19 @@
---
title: "@Version"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@Version"]
helpviewer_keywords: ["@Version symbol"]
ms.assetid: d7005811-de5c-4f8f-96e9-0e50d7ebca90
---
-# @Version
+# \@Version
-615 in MASM 6.15 (text macro).
+The major and minor version of MASM reported at the command line, as a single number (text macro). For example, MASM version 14.23.28107.0 produces "1423".
## Syntax
-> @Version
+> **\@Version**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/at-wordsize.md b/docs/assembler/masm/at-wordsize.md
index 4970148453..eb125ec847 100644
--- a/docs/assembler/masm/at-wordsize.md
+++ b/docs/assembler/masm/at-wordsize.md
@@ -1,18 +1,19 @@
---
title: "@WordSize"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["@WordSize"]
helpviewer_keywords: ["@WordSize symbol"]
ms.assetid: a4fb3bf1-4f87-4306-ad4d-27d999ce2b3a
---
-# @WordSize
+# \@WordSize
Two for a 16-bit segment or four for a 32-bit segment (numeric equate).
## Syntax
-> @WordSize
+> **\@WordSize**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/byte-masm.md b/docs/assembler/masm/byte-masm.md
index 89c5e39ed8..45b9e1a0be 100644
--- a/docs/assembler/masm/byte-masm.md
+++ b/docs/assembler/masm/byte-masm.md
@@ -1,17 +1,17 @@
---
title: "BYTE (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["byte"]
helpviewer_keywords: ["BYTE directive"]
ms.assetid: 8dd94476-c069-4585-a478-3cb2e8e6ae54
---
-# BYTE (MASM)
+# BYTE
-Allocates and optionally initializes a byte of storage for each `initializer`.
+Allocates and optionally initializes a byte of storage for each *initializer*.
## Syntax
-> [[name]] BYTEinitializer [[, initializer]] ...
+> ⟦*name*⟧ **BYTE** *initializer* ⟦__,__ *initializer* ...⟧
## Remarks
@@ -19,6 +19,7 @@ Can also be used as a type specifier anywhere a type is legal.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[DB](../../assembler/masm/db.md)
-[SBYTE](../../assembler/masm/sbyte-masm.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[DB](db.md)\
+[SBYTE](sbyte-masm.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/catstr.md b/docs/assembler/masm/catstr.md
index 09c1f8d250..799348a4c5 100644
--- a/docs/assembler/masm/catstr.md
+++ b/docs/assembler/masm/catstr.md
@@ -1,6 +1,6 @@
---
title: "CATSTR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["CATSTR"]
helpviewer_keywords: ["CATSTR directive"]
ms.assetid: ae893190-8247-4435-a74e-de2f00db052f
@@ -11,12 +11,13 @@ Concatenates text items.
## Syntax
-> name CATSTR [[textitem1 [[, textitem2]] ...]]
+> *name* **CATSTR** ⟦*textitem1* ⟦__,__ *textitem2* ...⟧⟧
## Remarks
-Each text item can be a literal string, a constant preceded by a `%`, or the string returned by a macro function.
+Each text item can be a literal string, a constant preceded by a **%**, or the string returned by a macro function. **CATSTR** is a synonym for [TEXTEQU](textequ.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/comm.md b/docs/assembler/masm/comm.md
index c42d0e34f8..3e68711814 100644
--- a/docs/assembler/masm/comm.md
+++ b/docs/assembler/masm/comm.md
@@ -1,6 +1,6 @@
---
title: "COMM"
-ms.date: "08/30/2018"
+ms.date: "12/06/2019"
f1_keywords: ["COMM"]
helpviewer_keywords: ["COMM directive"]
ms.assetid: a23548c4-ad04-41fa-91da-945f228de742
@@ -11,7 +11,7 @@ Creates a communal variable with the attributes specified in *definition*.
## Syntax
-> **COMM** *definition* [, *definition*] ...
+> **COMM** *definition* ⟦__,__ *definition* ...⟧
## Remarks
@@ -19,9 +19,11 @@ Communal variables are allocated by the linker, and can't be initialized. This m
Each *definition* has the following form:
-[*langtype*] [**NEAR** | **FAR**] _label_**:**_type_[**:**_count_]
+⟦*language-type*⟧ ⟦**NEAR** | **FAR**⟧ _label_**:**_type_⟦**:**_count_⟧
-The optional *langtype* sets the naming conventions for the name that follows. It overrides any language specified by the **.MODEL** directive. The optional **NEAR** or **FAR** override the current memory model. The *label* is the name of the variable. The *type* can be any type specifier ([BYTE](../../assembler/masm/byte-masm.md), [WORD](../../assembler/masm/word.md), and so on) or an integer specifying the number of bytes. The optional *count* specifies the number of elements in the declared data object; the default is one.
+The *language-type*, **NEAR**, and **FAR** arguments are valid only in 32-bit MASM.
+
+The optional *language-type* sets the naming conventions for the name that follows. It overrides any language specified by the **.MODEL** directive. The optional **NEAR** or **FAR** override the current memory model. The *label* is the name of the variable. The *type* can be any type specifier ([BYTE](byte-masm.md), [WORD](word.md), and so on) or an integer specifying the number of bytes. The optional *count* specifies the number of elements in the declared data object. The default *count* is one.
## Example
@@ -33,4 +35,5 @@ COMM FAR ByteArray:BYTE:512
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/comment-masm.md b/docs/assembler/masm/comment-masm.md
index d11e05aece..2cc1e61c81 100644
--- a/docs/assembler/masm/comment-masm.md
+++ b/docs/assembler/masm/comment-masm.md
@@ -1,20 +1,21 @@
---
title: "COMMENT (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Comment"]
helpviewer_keywords: ["COMMENT directive"]
ms.assetid: b255ebf2-99b0-401c-a2c3-50ce57533578
---
-# COMMENT (MASM)
+# COMMENT
Treats all *text* between or on the same line as the delimiters as a comment.
## Syntax
-> COMMENT delimiter [[text]]
-> [[text]]
-> [[text]] delimiter [[text]]
+> **COMMENT** *delimiter* ⟦*text*⟧\
+> ⟦*text*⟧\
+> ⟦*text*⟧ *delimiter* ⟦*text*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/db.md b/docs/assembler/masm/db.md
index b841c69f12..1ae16274ad 100644
--- a/docs/assembler/masm/db.md
+++ b/docs/assembler/masm/db.md
@@ -1,17 +1,17 @@
---
title: "DB"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["DB"]
helpviewer_keywords: ["DB directive"]
ms.assetid: 0c69ccaa-043f-46e1-9f95-dc76d9bc87c8
---
# DB
-Allocates and optionally initializes a byte of storage for each `initializer`. `DB` is a synonym of [BYTE](../../assembler/masm/byte-masm.md)
+Allocates and optionally initializes a byte of storage for each *initializer*. **DB** is a synonym of [BYTE](byte-masm.md).
## Syntax
-> [[name]] DB initializer [[, initializer]] ...
+> ⟦*name*⟧ **DB** *initializer* ⟦__,__ *initializer* ...⟧
## Remarks
@@ -19,6 +19,7 @@ Can also be used as a type specifier anywhere a type is legal.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[DB](../../assembler/masm/db.md)
-[SBYTE](../../assembler/masm/sbyte-masm.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[DB](db.md)\
+[SBYTE](sbyte-masm.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dd.md b/docs/assembler/masm/dd.md
index d13001be21..b76c7b92cb 100644
--- a/docs/assembler/masm/dd.md
+++ b/docs/assembler/masm/dd.md
@@ -1,17 +1,17 @@
---
title: "DD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["dd"]
helpviewer_keywords: ["DD directive"]
ms.assetid: 0c238628-2fe2-437e-979d-a90bdae7b478
---
# DD
-Allocates and optionally initializes a double word (4 bytes) of storage for each `initializer`. `DD` is a synonym of [DWORD](../../assembler/masm/dword.md).
+Allocates and optionally initializes a double word (4 bytes) of storage for each *initializer*. **DD** is a synonym of [DWORD](dword.md).
## Syntax
-> [[name]] DD initializer [[, initializer]]...
+> ⟦*name*⟧ **DD** *initializer* ⟦__,__ *initializer* ...⟧
## Remarks
@@ -19,4 +19,5 @@ Can also be used as a type specifier anywhere a type is legal.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/df.md b/docs/assembler/masm/df.md
index 272b614877..d65b52f278 100644
--- a/docs/assembler/masm/df.md
+++ b/docs/assembler/masm/df.md
@@ -1,17 +1,17 @@
---
title: "DF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["DF"]
helpviewer_keywords: ["DF directive"]
ms.assetid: b5587c29-3da9-4c46-aa3a-1ec42d6fa703
---
# DF
-Allocates and optionally initializes 6 bytes of storage for each `initializer`. `DF` is a synonym of [FWORD](../../assembler/masm/fword.md).
+Allocates and optionally initializes 6 bytes of storage for each *initializer*. **DF** is a synonym of [FWORD](fword.md).
## Syntax
-> [[name]] DF initializer [[, initializer]]...
+> ⟦*name*⟧ **DF** *initializer* ⟦__,__ *initializer* ...⟧
## Remarks
@@ -19,4 +19,5 @@ Also can be used as a type specifier anywhere a type is legal.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/directives-reference.md b/docs/assembler/masm/directives-reference.md
index 4248a5ed65..c3f6da3142 100644
--- a/docs/assembler/masm/directives-reference.md
+++ b/docs/assembler/masm/directives-reference.md
@@ -1,6 +1,6 @@
---
title: "Directives Reference"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Directives Reference"]
helpviewer_keywords: ["MASM (Microsoft Macro Assembler), directives reference"]
ms.assetid: da6efcd1-18f7-41de-81cd-a002a02f9a22
@@ -11,149 +11,150 @@ ms.assetid: da6efcd1-18f7-41de-81cd-a002a02f9a22
||||
|-|-|-|
-|[.ALLOCSTACK](../../assembler/masm/dot-allocstack.md)|[.ENDPROLOG](../../assembler/masm/dot-endprolog.md)|[PROC](../../assembler/masm/proc.md)|
-|[.PUSHFRAME](../../assembler/masm/dot-pushframe.md)|[.PUSHREG](../../assembler/masm/dot-pushreg.md)|[.SAVEREG](../../assembler/masm/dot-savereg.md)|
-|[.SAVEXMM128](../../assembler/masm/dot-savexmm128.md)|[.SETFRAME](../../assembler/masm/dot-setframe.md)||
+|[.ALLOCSTACK](dot-allocstack.md)|[.ENDPROLOG](dot-endprolog.md)|[PROC](proc.md)|
+|[.PUSHFRAME](dot-pushframe.md)|[.PUSHREG](dot-pushreg.md)|[.SAVEREG](dot-savereg.md)|
+|[.SAVEXMM128](dot-savexmm128.md)|[.SETFRAME](dot-setframe.md)||
### Code Labels
|||
|-|-|
-|[ALIGN](../../assembler/masm/align-masm.md)|[EVEN](../../assembler/masm/even.md)|
-|[LABEL](../../assembler/masm/label-masm.md)|[ORG](../../assembler/masm/org.md)|
+|[ALIGN](align-masm.md)|[EVEN](even.md)|
+|[LABEL](label-masm.md)|[ORG](org.md)|
### Conditional Assembly
||||
|-|-|-|
-|[ELSE](../../assembler/masm/else-masm.md)|[ELSEIF](../../assembler/masm/elseif-masm.md)|[ELSEIF2](../../assembler/masm/elseif2.md)|
-|[IF](../../assembler/masm/if-masm.md)|[IF2](../../assembler/masm/if2.md)|[IFB](../../assembler/masm/ifb.md)/[IFNB](../../assembler/masm/ifnb.md)|
-|[IFDEF](../../assembler/masm/ifdef.md)/[IFNDEF](../../assembler/masm/ifndef.md)|[IFDIF](../../assembler/masm/ifdif.md)/[IFDIF[[I]]](../../assembler/masm/ifdif.md)|[IFE](../../assembler/masm/ife.md)|
-|[IFIDN](../../assembler/masm/ifidn.md)/[IFIDN[[I]]](../../assembler/masm/ifidn.md)|||
+|[ELSE](else-masm.md)|[ELSEIF](elseif-masm.md)|[ELSEIF2](elseif2.md)|
+|[IF](if-masm.md)|[IF2](if2.md)|[IFB](ifb.md)/[IFNB](ifnb.md)|
+|[IFDEF](ifdef.md)/[IFNDEF](ifndef.md)|[IFDIF](ifdif.md)/[IFDIF[[I]]](ifdif.md)|[IFE](ife.md)|
+|[IFIDN](ifidn.md)/[IFIDN[[I]]](ifidn.md)|||
### Conditional Control Flow
||||
|-|-|-|
-|[.BREAK](../../assembler/masm/dot-break.md)|[.CONTINUE](../../assembler/masm/dot-continue.md)|[.ELSE](../../assembler/masm/dot-else.md)|
-|[.ELSEIF](../../assembler/masm/dot-if.md)|[.ENDIF](../../assembler/masm/dot-endif.md)|[.ENDW](../../assembler/masm/dot-endw.md)|
-|[.IF](../../assembler/masm/dot-if.md)|[.REPEAT](../../assembler/masm/dot-repeat.md)|[.UNTIL](../../assembler/masm/dot-until.md)|
-|[.UNTILCXZ](../../assembler/masm/dot-untilcxz.md)|[.WHILE](../../assembler/masm/dot-while.md)||
+|[.BREAK](dot-break.md)|[.CONTINUE](dot-continue.md)|[.ELSE](dot-else.md)|
+|[.ELSEIF](dot-if.md)|[.ENDIF](dot-endif.md)|[.ENDW](dot-endw.md)|
+|[.IF](dot-if.md)|[.REPEAT](dot-repeat.md)|[.UNTIL](dot-until.md)|
+|[.UNTILCXZ](dot-untilcxz.md)|[.WHILE](dot-while.md)||
### Conditional Error
||||
|-|-|-|
-|[.ERR](../../assembler/masm/dot-err.md)|[.ERR2](../../assembler/masm/dot-err2.md)|[.ERRB](../../assembler/masm/dot-errb.md)|
-|[.ERRDEF](../../assembler/masm/dot-errdef.md)|[.ERRDIF](../../assembler/masm/dot-errdif.md)/[.ERRDIF[[I]]]](../../assembler/masm/dot-errdif.md)|[.ERRE](../../assembler/masm/dot-erre.md)|
-|[.ERRIDN](../../assembler/masm/dot-erridn.md)/[.ERRIDN[[I]]](../../assembler/masm/dot-erridn.md)|[.ERRNB](../../assembler/masm/dot-errnb.md)|[.ERRNDEF](../../assembler/masm/dot-errndef.md)|
-|[.ERRNZ](../../assembler/masm/dot-errnz.md)|||
+|[.ERR](dot-err.md)|[.ERR2](dot-err2.md)|[.ERRB](dot-errb.md)|
+|[.ERRDEF](dot-errdef.md)|[.ERRDIF](dot-errdif.md)/[.ERRDIF[[I]]]](dot-errdif.md)|[.ERRE](dot-erre.md)|
+|[.ERRIDN](dot-erridn.md)/[.ERRIDN[[I]]](dot-erridn.md)|[.ERRNB](dot-errnb.md)|[.ERRNDEF](dot-errndef.md)|
+|[.ERRNZ](dot-errnz.md)|||
### Data Allocation
||||
|-|-|-|
-|[ALIGN](../../assembler/masm/align-masm.md)|[BYTE](../../assembler/masm/byte-masm.md)/[SBYTE](../../assembler/masm/sbyte-masm.md)|[DWORD](../../assembler/masm/dword.md)/[SDWORD](../../assembler/masm/sdword.md)|
-|[EVEN](../../assembler/masm/even.md)|[FWORD](../../assembler/masm/fword.md)|[LABEL](../../assembler/masm/label-masm.md)|
-|[ORG](../../assembler/masm/org.md)|[QWORD](../../assembler/masm/qword.md)|[REAL4](../../assembler/masm/real4.md)|
-|[REAL8](../../assembler/masm/real8.md)|[REAL10](../../assembler/masm/real10.md)|[TBYTE](../../assembler/masm/tbyte.md)|
-|[WORD](../../assembler/masm/word.md)/[SWORD](../../assembler/masm/sword.md)|||
+|[ALIGN](align-masm.md)|[BYTE](byte-masm.md)/[SBYTE](sbyte-masm.md)|[DWORD](dword.md)/[SDWORD](sdword.md)|
+|[EVEN](even.md)|[FWORD](fword.md)|[LABEL](label-masm.md)|
+|[ORG](org.md)|[QWORD](qword.md)|[REAL4](real4.md)|
+|[REAL8](real8.md)|[REAL10](real10.md)|[TBYTE](tbyte.md)|
+|[WORD](word.md)/[SWORD](sword.md)|||
### Equates
||||
|-|-|-|
-|[=](../../assembler/masm/equal.md)|[EQU](../../assembler/masm/equ.md)|[TEXTEQU](../../assembler/masm/textequ.md)|
+|[=](equal.md)|[EQU](equ.md)|[TEXTEQU](textequ.md)|
### Listing Control
||||
|-|-|-|
-|[.CREF](../../assembler/masm/dot-cref.md)|[.LIST](../../assembler/masm/dot-list.md)|[.LISTALL](../../assembler/masm/dot-listall.md)|
-|[.LISTIF](../../assembler/masm/dot-listif.md)|[.LISTMACRO](../../assembler/masm/dot-listmacro.md)|[.LISTMACROALL](../../assembler/masm/dot-listmacroall.md)|
-|[.NOCREF](../../assembler/masm/dot-nocref.md)|[.NOLIST](../../assembler/masm/dot-nolist.md)|[.NOLISTIF](../../assembler/masm/dot-nolistif.md)|
-|[.NOLISTMACRO](../../assembler/masm/dot-nolistmacro.md)|[PAGE](../../assembler/masm/page.md)|[SUBTITLE](../../assembler/masm/subtitle.md)|
-|[.TFCOND](../../assembler/masm/dot-tfcond.md)|[TITLE](../../assembler/masm/title.md)||
+|[.CREF](dot-cref.md)|[.LIST](dot-list.md)|[.LISTALL](dot-listall.md)|
+|[.LISTIF](dot-listif.md)|[.LISTMACRO](dot-listmacro.md)|[.LISTMACROALL](dot-listmacroall.md)|
+|[.NOCREF](dot-nocref.md)|[.NOLIST](dot-nolist.md)|[.NOLISTIF](dot-nolistif.md)|
+|[.NOLISTMACRO](dot-nolistmacro.md)|[PAGE](page.md)|[SUBTITLE](subtitle.md)|
+|[.TFCOND](dot-tfcond.md)|[TITLE](title.md)||
### Macros
||||
|-|-|-|
-|[ENDM](../../assembler/masm/endm.md)|[EXITM](../../assembler/masm/exitm.md)|[GOTO](../../assembler/masm/goto-masm.md)|
-|[LOCAL](../../assembler/masm/local-masm.md)|[MACRO](../../assembler/masm/macro.md)|[PURGE](../../assembler/masm/purge.md)|
+|[ENDM](endm.md)|[EXITM](exitm.md)|[GOTO](goto-masm.md)|
+|[LOCAL](local-masm.md)|[MACRO](macro.md)|[PURGE](purge.md)|
### Miscellaneous
||||
|-|-|-|
-|[ALIAS](../../assembler/masm/alias-masm.md)|[ASSUME](../../assembler/masm/assume.md)|[COMMENT](../../assembler/masm/comment-masm.md)|
-|[ECHO](../../assembler/masm/echo.md)|[END](../../assembler/masm/end-masm.md)|[.FPO](../../assembler/masm/dot-fpo.md)|
-|[INCLUDE](../../assembler/masm/include-masm.md)|[INCLUDELIB](../../assembler/masm/includelib-masm.md)|[MMWORD](../../assembler/masm/mmword.md)|
-|[OPTION](../../assembler/masm/option-masm.md)|[POPCONTEXT](../../assembler/masm/popcontext.md)|[PUSHCONTEXT](../../assembler/masm/pushcontext.md)|
-|[.RADIX](../../assembler/masm/dot-radix.md)|[.SAFESEH](../../assembler/masm/dot-safeseh.md)|[XMMWORD](../../assembler/masm/xmmword.md)|
-|[YMMWORD](../../assembler/masm/ymmword.md)|||
+|[ALIAS](alias-masm.md)|[ASSUME](assume.md)|[COMMENT](comment-masm.md)|
+|[ECHO](echo.md)|[END](end-masm.md)|[.FPO](dot-fpo.md)|
+|[INCLUDE](include-masm.md)|[INCLUDELIB](includelib-masm.md)|[MMWORD](mmword.md)|
+|[OPTION](option-masm.md)|[POPCONTEXT](popcontext.md)|[PUSHCONTEXT](pushcontext.md)|
+|[.RADIX](dot-radix.md)|[.SAFESEH](dot-safeseh.md)|[XMMWORD](xmmword.md)|
+|[YMMWORD](ymmword.md)|||
### Procedures
||||
|-|-|-|
-|[ENDP](../../assembler/masm/endp.md)|[INVOKE](../../assembler/masm/invoke.md)|[PROC](../../assembler/masm/proc.md)|
-|[PROTO](../../assembler/masm/proto.md)|||
+|[ENDP](endp.md)|[INVOKE](invoke.md)|[PROC](proc.md)|
+|[PROTO](proto.md)|||
### Processor
||||
|-|-|-|
-|[.386](../../assembler/masm/dot-386.md)|[.386P](../../assembler/masm/dot-386p.md)|[.387](../../assembler/masm/dot-387.md)|
-|[.486](../../assembler/masm/dot-486.md)|[.486P](../../assembler/masm/dot-486p.md)|[.586](../../assembler/masm/dot-586.md)|
-|[.586P](../../assembler/masm/dot-586p.md)|[.686](../../assembler/masm/dot-686.md)|[.686P](../../assembler/masm/dot-686p.md)|
-|[.K3D](../../assembler/masm/dot-k3d.md)|[.MMX](../../assembler/masm/dot-mmx.md)|[.XMM](../../assembler/masm/dot-xmm.md)|
+|[.386](dot-386.md)|[.386P](dot-386p.md)|[.387](dot-387.md)|
+|[.486](dot-486.md)|[.486P](dot-486p.md)|[.586](dot-586.md)|
+|[.586P](dot-586p.md)|[.686](dot-686.md)|[.686P](dot-686p.md)|
+|[.K3D](dot-k3d.md)|[.MMX](dot-mmx.md)|[.XMM](dot-xmm.md)|
### Repeat Blocks
||||
|-|-|-|
-|[ENDM](../../assembler/masm/endm.md)|[FOR](../../assembler/masm/for-masm.md)|[FORC](../../assembler/masm/forc.md)|
-|[GOTO](../../assembler/masm/goto-masm.md)|[REPEAT](../../assembler/masm/repeat.md)|[WHILE](../../assembler/masm/while-masm.md)|
+|[ENDM](endm.md)|[FOR](for-masm.md)|[FORC](forc.md)|
+|[GOTO](goto-masm.md)|[REPEAT](repeat.md)|[WHILE](while-masm.md)|
### Scope
||||
|-|-|-|
-|[COMM](../../assembler/masm/comm.md)|[EXTERN](../../assembler/masm/extern-masm.md)|[EXTERNDEF](../../assembler/masm/externdef.md)|
-|[INCLUDELIB](../../assembler/masm/includelib-masm.md)|[PUBLIC](../../assembler/masm/public-masm.md)||
+|[COMM](comm.md)|[EXTERN](extern-masm.md)|[EXTERNDEF](externdef.md)|
+|[INCLUDELIB](includelib-masm.md)|[PUBLIC](public-masm.md)||
### Segment
||||
|-|-|-|
-|[.ALPHA](../../assembler/masm/dot-alpha.md)|[ASSUME](../../assembler/masm/assume.md)|[.DOSSEG](../../assembler/masm/dot-dosseg.md)|
-|[END](../../assembler/masm/end-masm.md)|[ENDS](../../assembler/masm/ends-masm.md)|[GROUP](../../assembler/masm/group.md)|
-|[SEGMENT](../../assembler/masm/segment.md)|[.SEQ](../../assembler/masm/dot-seq.md)||
+|[.ALPHA](dot-alpha.md)|[ASSUME](assume.md)|[.DOSSEG](dot-dosseg.md)|
+|[END](end-masm.md)|[ENDS](ends-masm.md)|[GROUP](group.md)|
+|[SEGMENT](segment.md)|[.SEQ](dot-seq.md)||
### Simplified Segment
||||
|-|-|-|
-|[.CODE](../../assembler/masm/dot-code.md)|[.CONST](../../assembler/masm/dot-const.md)|[.DATA](../../assembler/masm/dot-data.md)|
-|[.DATA?](../../assembler/masm/dot-data-q.md)|[.DOSSEG](../../assembler/masm/dot-dosseg.md)|[.EXIT](../../assembler/masm/dot-exit.md)|
-|[.FARDATA](../../assembler/masm/dot-fardata.md)|[.FARDATA?](../../assembler/masm/dot-fardata-q.md)|[.MODEL](../../assembler/masm/dot-model.md)|
-|[.STACK](../../assembler/masm/dot-stack.md)|[.STARTUP](../../assembler/masm/dot-startup.md)||
+|[.CODE](dot-code.md)|[.CONST](dot-const.md)|[.DATA](dot-data.md)|
+|[.DATA?](dot-data-q.md)|[.DOSSEG](dot-dosseg.md)|[.EXIT](dot-exit.md)|
+|[.FARDATA](dot-fardata.md)|[.FARDATA?](dot-fardata-q.md)|[.MODEL](dot-model.md)|
+|[.STACK](dot-stack.md)|[.STARTUP](dot-startup.md)||
### String
|||
|-|-|
-|[CATSTR](../../assembler/masm/catstr.md)|[INSTR](../../assembler/masm/instr.md)|
-|[SIZESTR](../../assembler/masm/sizestr.md)|[SUBSTR](../../assembler/masm/substr.md)|
+|[CATSTR](catstr.md)|[INSTR](instr.md)|
+|[SIZESTR](sizestr.md)|[SUBSTR](substr.md)|
### Structure and Record
||||
|-|-|-|
-|[ENDS](../../assembler/masm/ends-masm.md)|[RECORD](../../assembler/masm/record-masm.md)|[STRUCT](../../assembler/masm/struct-masm.md)|
-|[TYPEDEF](../../assembler/masm/typedef-masm.md)|[UNION](../../assembler/masm/union.md)||
+|[ENDS](ends-masm.md)|[RECORD](record-masm.md)|[STRUCT](struct-masm.md)|
+|[TYPEDEF](typedef-masm.md)|[UNION](union.md)||
## See also
-[Microsoft Macro Assembler Reference](../../assembler/masm/microsoft-macro-assembler-reference.md)
\ No newline at end of file
+[Microsoft Macro Assembler reference](microsoft-macro-assembler-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dollar.md b/docs/assembler/masm/dollar.md
index 8e1bb46c05..4f9de0f6a7 100644
--- a/docs/assembler/masm/dollar.md
+++ b/docs/assembler/masm/dollar.md
@@ -1,6 +1,6 @@
---
title: "$"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["$"]
helpviewer_keywords: ["$ symbol"]
ms.assetid: c9c36297-0dc2-4d41-b071-a22d8f4a47bb
@@ -11,8 +11,9 @@ The current value of the location counter.
## Syntax
-> $
+> **$**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols Reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dosseg.md b/docs/assembler/masm/dosseg.md
index 10a4227e6c..d8cc6437d8 100644
--- a/docs/assembler/masm/dosseg.md
+++ b/docs/assembler/masm/dosseg.md
@@ -1,18 +1,19 @@
---
title: "DOSSEG"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["DOSSEG"]
helpviewer_keywords: ["DOSSEG directive"]
ms.assetid: 4312826a-1547-4d48-bfd7-cfaf6d037609
---
# DOSSEG
-Identical to [.DOSSEG](../../assembler/masm/dot-dosseg.md), which is the preferred form.
+(32-bit MASM only.) Identical to [.DOSSEG](dot-dosseg.md), which is the preferred form.
## Syntax
-> DOSSEG
+> **DOSSEG**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-386.md b/docs/assembler/masm/dot-386.md
index 84aa5bd78c..aed5b9a4f5 100644
--- a/docs/assembler/masm/dot-386.md
+++ b/docs/assembler/masm/dot-386.md
@@ -1,17 +1,17 @@
---
title: ".386"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".386"]
helpviewer_keywords: [".386 directive"]
ms.assetid: a270d215-2d8c-4a86-9dcf-62d6e2fbfbb6
---
-# .386
+# .386 (32-bit MASM)
-Enables assembly of nonprivileged instructions for the 80386 processor; disables assembly of instructions introduced with later processors.
+Enables assembly of nonprivileged instructions for the 80386 processor; disables assembly of instructions introduced with later processors. (32-bit MASM only.)
## Syntax
-> .386
+> **.386**
## Remarks
@@ -19,4 +19,5 @@ Also enables 80387 instructions.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-386p.md b/docs/assembler/masm/dot-386p.md
index 96ebcb0a35..e4cb896cf0 100644
--- a/docs/assembler/masm/dot-386p.md
+++ b/docs/assembler/masm/dot-386p.md
@@ -1,17 +1,17 @@
---
title: ".386P"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".386P"]
helpviewer_keywords: [".386P directive"]
ms.assetid: 15199091-3bb7-4270-bb9b-878c1c2f2146
---
-# .386P
+# .386P (32-bit MASM)
-Enables assembly of all instructions (including privileged) for the 80386 processor; disables assembly of instructions introduced with later processors.
+Enables assembly of all instructions (including privileged) for the 80386 processor; disables assembly of instructions introduced with later processors. (32-bit MASM only.)
## Syntax
-> .386P
+> **.386P**
## Remarks
@@ -19,4 +19,5 @@ Also enables 80387 instructions.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-387.md b/docs/assembler/masm/dot-387.md
index bb6b81cb90..049950aa1c 100644
--- a/docs/assembler/masm/dot-387.md
+++ b/docs/assembler/masm/dot-387.md
@@ -1,18 +1,19 @@
---
title: ".387"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".387"]
helpviewer_keywords: [".387 directive"]
ms.assetid: 031fa63b-4b69-4043-9bb2-8dabbdbbf1a7
---
-# .387
+# .387 (32-bit MASM)
-Enables assembly of instructions for the 80387 coprocessor.
+Enables assembly of instructions for the 80387 coprocessor. (32-bit MASM only.)
## Syntax
-> .387
+> **.387**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-486.md b/docs/assembler/masm/dot-486.md
index 36ebf56497..1ef0298466 100644
--- a/docs/assembler/masm/dot-486.md
+++ b/docs/assembler/masm/dot-486.md
@@ -1,18 +1,19 @@
---
title: ".486"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".486"]
helpviewer_keywords: [".486 directive"]
ms.assetid: f2dfc3fc-f564-4014-874b-9fc68dd348dc
---
-# .486
+# .486 (32-bit MASM)
-Enables assembly of nonprivileged instructions for the 80486 processor.
+Enables assembly of nonprivileged instructions for the 80486 processor. (32-bit MASM only.)
## Syntax
-> .486
+> **.486**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-486p.md b/docs/assembler/masm/dot-486p.md
index 0b2545e402..58a2fca05b 100644
--- a/docs/assembler/masm/dot-486p.md
+++ b/docs/assembler/masm/dot-486p.md
@@ -1,18 +1,19 @@
---
title: ".486P"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".486P"]
helpviewer_keywords: [".486P directive"]
ms.assetid: ad1ff7a8-18e8-47cd-8e3b-dfd57a0ca370
---
-# .486P
+# .486P (32-bit MASM)
-Enables assembly of all instructions (including privileged) for the 80486 processor.
+Enables assembly of all instructions (including privileged) for the 80486 processor. (32-bit MASM only.)
## Syntax
-> .486P
+> **.486P**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-586.md b/docs/assembler/masm/dot-586.md
index 2a2da3c0c9..98f5054039 100644
--- a/docs/assembler/masm/dot-586.md
+++ b/docs/assembler/masm/dot-586.md
@@ -1,18 +1,19 @@
---
title: ".586"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".586"]
helpviewer_keywords: [".586 directive"]
ms.assetid: 8ceff033-8ce2-4b13-afd7-7f99c3396402
---
-# .586
+# .586 (32-bit MASM)
-Enables assembly of nonprivileged instructions for the Pentium processor.
+Enables assembly of nonprivileged instructions for the Pentium processor. (32-bit MASM only.)
## Syntax
-> .586
+> **.586**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-586p.md b/docs/assembler/masm/dot-586p.md
index 1dd0989cdc..3ac54e4e9c 100644
--- a/docs/assembler/masm/dot-586p.md
+++ b/docs/assembler/masm/dot-586p.md
@@ -1,18 +1,19 @@
---
title: ".586P"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".586P"]
helpviewer_keywords: [".586P directive"]
ms.assetid: 90da2a7d-66f4-4073-b1a9-874de6e8f05d
---
-# .586P
+# .586P (32-bit MASM)
-Enables assembly of all instructions (including privileged) for the Pentium processor.
+Enables assembly of all instructions (including privileged) for the Pentium processor. (32-bit MASM only.)
## Syntax
-> .586P
+> **.586P**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-686.md b/docs/assembler/masm/dot-686.md
index 17ec4ec4ed..a556cc4d1e 100644
--- a/docs/assembler/masm/dot-686.md
+++ b/docs/assembler/masm/dot-686.md
@@ -1,18 +1,19 @@
---
title: ".686"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".686"]
helpviewer_keywords: [".686 directive"]
ms.assetid: 58aa0688-8eb9-4456-8f91-9ff7ea744fe2
---
-# .686
+# .686 (32-bit MASM)
-Enables assembly of nonprivileged instructions for the Pentium Pro processor.
+Enables assembly of nonprivileged instructions for the Pentium Pro processor. (32-bit MASM only.)
## Syntax
-> .686
+> **.686**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-686p.md b/docs/assembler/masm/dot-686p.md
index 4e2baed717..f70e50193a 100644
--- a/docs/assembler/masm/dot-686p.md
+++ b/docs/assembler/masm/dot-686p.md
@@ -1,18 +1,19 @@
---
title: ".686P"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".686P"]
helpviewer_keywords: [".686P directive"]
ms.assetid: 06d9a9bf-50b1-4eed-b4a3-86b256c71b48
---
-# .686P
+# .686P (32-bit MASM)
-Enables assembly of all instructions (including privileged) for the Pentium Pro processor.
+Enables assembly of all instructions (including privileged) for the Pentium Pro processor. (32-bit MASM only.)
## Syntax
-> .686P
+> **.686P**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-allocstack.md b/docs/assembler/masm/dot-allocstack.md
index f4efe4e1e5..b66e23edc0 100644
--- a/docs/assembler/masm/dot-allocstack.md
+++ b/docs/assembler/masm/dot-allocstack.md
@@ -1,6 +1,6 @@
---
title: ".ALLOCSTACK"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ALLOCSTACK"]
helpviewer_keywords: [".ALLOCSTACK directive"]
ms.assetid: 9801594b-7ac2-4df2-a49d-07d9dd9af99e
@@ -11,17 +11,17 @@ Generates a **UWOP_ALLOC_SMALL** or a **UWOP_ALLOC_LARGE** with the specified si
## Syntax
-> .ALLOCSTACK size
+> **.ALLOCSTACK** *size*
## Remarks
MASM will choose the most efficient encoding for a given size.
-.ALLOCSTACK allows ml64.exe users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](../../assembler/masm/proc.md) FRAME declaration to the [.ENDPROLOG](../../assembler/masm/dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .ALLOCSTACK should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
+**.ALLOCSTACK** allows ml64.exe users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.ALLOCSTACK** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
-The `size` operand must be a multiple of 8.
+The *size* operand must be a multiple of 8.
-Fore more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## Sample
@@ -57,4 +57,5 @@ END
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-alpha.md b/docs/assembler/masm/dot-alpha.md
index 712a8d7a15..eec49aea1f 100644
--- a/docs/assembler/masm/dot-alpha.md
+++ b/docs/assembler/masm/dot-alpha.md
@@ -1,18 +1,19 @@
---
title: ".ALPHA"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".ALPHA"]
helpviewer_keywords: [".ALPHA directive"]
ms.assetid: 3f9d1386-6367-4cd7-a37f-2cd1cd46f2d7
---
-# .ALPHA
+# .ALPHA (32-bit MASM)
-Orders segments alphabetically.
+Orders segments alphabetically. (32-bit MASM only.)
## Syntax
-> .ALPHA
+> **.ALPHA**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-break.md b/docs/assembler/masm/dot-break.md
index c45bac559e..09538b7cd9 100644
--- a/docs/assembler/masm/dot-break.md
+++ b/docs/assembler/masm/dot-break.md
@@ -1,18 +1,19 @@
---
title: ".BREAK"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".BREAK"]
helpviewer_keywords: [".BREAK directive"]
ms.assetid: 4f55dfce-ff41-4a68-9423-b0077dfc9206
---
-# .BREAK
+# .BREAK (32-bit MASM)
-Generates code to terminate a [.WHILE](../../assembler/masm/dot-while.md) or [.REPEAT](../../assembler/masm/dot-repeat.md) block if *condition* is true.
+Generates code to terminate a [.WHILE](dot-while.md) or [.REPEAT](dot-repeat.md) block if *condition* is true. (32-bit MASM only.)
## Syntax
-> .BREAK [[.IF condition]]
+> **.BREAK** ⟦**.IF** *condition*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-code.md b/docs/assembler/masm/dot-code.md
index 0a69fe2b8a..eb6ad5ef64 100644
--- a/docs/assembler/masm/dot-code.md
+++ b/docs/assembler/masm/dot-code.md
@@ -1,25 +1,28 @@
---
title: ".CODE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".CODE"]
helpviewer_keywords: [".CODE directive"]
ms.assetid: 2b8c882c-c0d2-4fa3-8335-e6b12717a4f4
---
# .CODE
-When used with [.MODEL](../../assembler/masm/dot-model.md), indicates the start of a code segment.
+(32-bit MASM only.) When used with [.MODEL](dot-model.md), indicates the start of a code segment.
## Syntax
-> .CODE [[name]]
+> **.CODE** ⟦*name*⟧\
+> ⟦ *segmentItem* ⟧...\
+> ⟦ *codesegmentnameId* **ENDS**;;⟧\
-#### Parameters
+### Parameters
-|Parameter|Description|
-|---------------|-----------------|
-|`name`|Optional parameter that specifies the name of the code segment. The default name is _TEXT for tiny, small, compact, and flat [models](../../assembler/masm/dot-model.md). The default name is *modulename*_TEXT for other models.|
+*name*\
+Optional parameter that specifies the name of the code segment. The default name is **_TEXT** for tiny, small, compact, and flat [models](dot-model.md). The default name is *modulename*_TEXT for other models.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[.DATA](../../assembler/masm/dot-data.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[.DATA](dot-data.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
+
diff --git a/docs/assembler/masm/dot-const.md b/docs/assembler/masm/dot-const.md
index 73bb1739c7..a931260918 100644
--- a/docs/assembler/masm/dot-const.md
+++ b/docs/assembler/masm/dot-const.md
@@ -1,17 +1,18 @@
---
title: ".CONST"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".CONST"]
helpviewer_keywords: [".CONST directive"]
ms.assetid: d5c1d795-174c-48d2-8359-92fbbd7d4c6c
---
-# .CONST
+# .CONST (32-bit MASM)
-When used with [.MODEL](../../assembler/masm/dot-model.md), starts a constant data segment (with segment name CONST).
+When used with [.MODEL](dot-model.md), starts a constant data segment (with segment name **CONST**).
## Syntax
-> .CONST
+> **.CONST**
+> ⟦ *segmentItem* ⟧...
## Remarks
@@ -19,4 +20,5 @@ This segment has the read-only attribute.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-continue.md b/docs/assembler/masm/dot-continue.md
index fb382d0089..dcf49b1cf0 100644
--- a/docs/assembler/masm/dot-continue.md
+++ b/docs/assembler/masm/dot-continue.md
@@ -1,18 +1,19 @@
---
title: ".CONTINUE"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".CONTINUE"]
helpviewer_keywords: [".CONTINUE directive"]
ms.assetid: 60a6e46d-49e6-4d65-97d0-cbe8c47b3fab
---
-# .CONTINUE
+# .CONTINUE (32-bit MASM)
-Generates code to jump to the top of a [.WHILE](../../assembler/masm/dot-while.md) or [.REPEAT](../../assembler/masm/dot-repeat.md) block if `condition` is true.
+Generates code to jump to the top of a [.WHILE](dot-while.md) or [.REPEAT](dot-repeat.md) block if *condition* is true. (32-bit MASM only.)
## Syntax
-> .CONTINUE [[.IF condition]]
+> **.CONTINUE** ⟦**.IF** *condition*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-cref.md b/docs/assembler/masm/dot-cref.md
index df97df8548..b6c10fd8e8 100644
--- a/docs/assembler/masm/dot-cref.md
+++ b/docs/assembler/masm/dot-cref.md
@@ -1,6 +1,6 @@
---
title: ".CREF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".CREF"]
helpviewer_keywords: [".CREF directive"]
ms.assetid: 5bfb4f95-0a3f-4039-af29-f745039c92c1
@@ -11,8 +11,9 @@ Enables listing of symbols in the symbol portion of the symbol table and browser
## Syntax
-> .CREF
+> **.CREF**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-data-q.md b/docs/assembler/masm/dot-data-q.md
index 6ebbb85779..b5479a5039 100644
--- a/docs/assembler/masm/dot-data-q.md
+++ b/docs/assembler/masm/dot-data-q.md
@@ -1,18 +1,20 @@
---
title: ".DATA?"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".DATA?"]
helpviewer_keywords: [".DATA? directive"]
ms.assetid: f454f8d7-e23b-458c-a2c4-8441f1afdc82
---
# .DATA?
-When used with [.MODEL](../../assembler/masm/dot-model.md), starts a near data segment for uninitialized data (segment name _BSS).
+(32-bit MASM only.) When used with [.MODEL](dot-model.md), starts a near data segment for uninitialized data (segment name _BSS).
## Syntax
-> .DATA?
+> **.DATA?**\
+> ⟦ *segmentItem* ⟧...
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-data.md b/docs/assembler/masm/dot-data.md
index 57572f9f30..a207a96dd9 100644
--- a/docs/assembler/masm/dot-data.md
+++ b/docs/assembler/masm/dot-data.md
@@ -1,22 +1,25 @@
---
title: ".DATA"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".DATA"]
helpviewer_keywords: [".DATA directive"]
ms.assetid: 32797935-9c79-46e0-bf6f-07d0c2bf1dc1
---
# .DATA
-When used with [.MODEL](../../assembler/masm/dot-model.md), starts a near data segment for initialized data (segment name _DATA).
+ (32-bit MASM only.) When used with [.MODEL](dot-model.md), starts a near data segment for initialized data (segment name _DATA).
## Syntax
-> .DATA
+> **.DATA**\
+> ⟦ *segmentItem* ⟧...
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[.DATA?](../../assembler/masm/dot-data-q.md)
-[.CONST](../../assembler/masm/dot-const.md)
-[.FARDATA](../../assembler/masm/dot-fardata.md)
-[.FARDATA?](../../assembler/masm/dot-fardata-q.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[.DATA?](dot-data-q.md)\
+[.CONST](dot-const.md)\
+[.FARDATA](dot-fardata.md)\
+[.FARDATA?](dot-fardata-q.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
+
diff --git a/docs/assembler/masm/dot-dosseg.md b/docs/assembler/masm/dot-dosseg.md
index 582bd8351d..3382d6a5ee 100644
--- a/docs/assembler/masm/dot-dosseg.md
+++ b/docs/assembler/masm/dot-dosseg.md
@@ -1,22 +1,23 @@
---
title: ".DOSSEG"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".DOSSEG"]
helpviewer_keywords: [".DOSSEG directive"]
ms.assetid: 175ad470-0a2b-4e2b-b078-65e224fec040
---
-# .DOSSEG
+# .DOSSEG (32-bit MASM)
-Orders the segments according to the MS-DOS segment convention: CODE first, then segments not in DGROUP, and then segments in DGROUP.
+Orders the segments according to the MS-DOS segment convention: CODE first, then segments not in DGROUP, and then segments in DGROUP. (32-bit MASM only.)
## Syntax
-> .DOSSEG
+> **.DOSSEG**
## Remarks
-The segments in DGROUP follow this order: segments not in BSS or STACK, then BSS segments, and finally STACK segments. Primarily used for ensuring CodeView support in MASM stand-alone programs. Same as [DOSSEG](../../assembler/masm/dosseg.md).
+The segments in DGROUP follow this order: segments not in BSS or STACK, then BSS segments, and finally STACK segments. Primarily used for ensuring CodeView support in MASM stand-alone programs. Same as [DOSSEG](dosseg.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-else.md b/docs/assembler/masm/dot-else.md
index becd12ce84..39af77d231 100644
--- a/docs/assembler/masm/dot-else.md
+++ b/docs/assembler/masm/dot-else.md
@@ -1,20 +1,21 @@
---
title: ".ELSE"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".ELSE"]
helpviewer_keywords: [".ELSE directive"]
ms.assetid: ebfec69d-7107-47d1-9cb3-87c99cc8dff7
---
-# .ELSE
+# .ELSE (32-bit MASM)
## Syntax
-> .ELSE
+> **.ELSE**
## Remarks
-See [.IF](../../assembler/masm/dot-if.md).
+(32-bit MASM only.) See [.IF](dot-if.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-endif.md b/docs/assembler/masm/dot-endif.md
index 75521a488a..1f02167acc 100644
--- a/docs/assembler/masm/dot-endif.md
+++ b/docs/assembler/masm/dot-endif.md
@@ -1,20 +1,21 @@
---
title: ".ENDIF"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".ENDIF"]
helpviewer_keywords: [".ENDIF directive"]
ms.assetid: b9f25ed5-6634-40f7-bcbc-d3135f09cce6
---
-# .ENDIF
+# .ENDIF (32-bit MASM)
## Syntax
-> .ENDIF
+> **.ENDIF**
## Remarks
-See [.IF](../../assembler/masm/dot-if.md).
+(32-bit MASM only.) See [.IF](dot-if.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-endprolog.md b/docs/assembler/masm/dot-endprolog.md
index 572b4443b4..1d9307f715 100644
--- a/docs/assembler/masm/dot-endprolog.md
+++ b/docs/assembler/masm/dot-endprolog.md
@@ -1,6 +1,6 @@
---
title: ".ENDPROLOG"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ENDPROLOG"]
helpviewer_keywords: [".ENDPROLOG directive"]
ms.assetid: 61a2474c-9527-46e6-9f9d-bc4b42c10f35
@@ -11,14 +11,15 @@ Signals the end of the prologue declarations.
## Syntax
-> .ENDPROLOG
+> **.ENDPROLOG**
## Remarks
-It is an error to use any of the prologue declarations outside of the region between [PROC](../../assembler/masm/proc.md) FRAME and .ENDPROLOG.
+It is an error to use any of the prologue declarations outside of the region between [PROC](proc.md) **FRAME** and **.ENDPROLOG**.
-For more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-endw.md b/docs/assembler/masm/dot-endw.md
index 3e9efe862f..fcf613932a 100644
--- a/docs/assembler/masm/dot-endw.md
+++ b/docs/assembler/masm/dot-endw.md
@@ -1,20 +1,21 @@
---
title: ".ENDW"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".ENDW"]
helpviewer_keywords: [".ENDW directive"]
ms.assetid: c288fa8a-2f1b-4a13-aba2-04157e84110e
---
-# .ENDW
+# .ENDW (32-bit MASM)
## Syntax
-> .ENDW
+> **.ENDW**
## Remarks
-See [.WHILE](../../assembler/masm/dot-while.md).
+(32-bit MASM only.) See [.WHILE](dot-while.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-err.md b/docs/assembler/masm/dot-err.md
index a1c7423452..be15ac157e 100644
--- a/docs/assembler/masm/dot-err.md
+++ b/docs/assembler/masm/dot-err.md
@@ -1,18 +1,23 @@
---
title: ".ERR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERR"]
helpviewer_keywords: [".ERR directive"]
ms.assetid: 712a5cb9-cc0e-4b67-ac11-f3355f5d48c2
---
-# .ERR
+# **.ERR**
Generates an error.
## Syntax
-> .ERR [[message]]
+> **.ERR** ⟦*message*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[.ERRNB](dot-errnb.md)\
+[.ERR2](dot-err2.md)\
+[.ERRDEF](dot-errdef.md)\
+[.ERRNZ](dot-errnz.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-err2.md b/docs/assembler/masm/dot-err2.md
index eabc8d5ba7..673f6cf5c5 100644
--- a/docs/assembler/masm/dot-err2.md
+++ b/docs/assembler/masm/dot-err2.md
@@ -1,18 +1,23 @@
---
title: ".ERR2"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERR2"]
helpviewer_keywords: [".ERR2 directive"]
ms.assetid: ea8e0f14-cbdd-4576-9268-846527c27870
---
# .ERR2
-[.ERR](../../assembler/masm/dot-err.md) block evaluated on every assembly pass if **OPTION:SETIF2** is **TRUE.**
+[.ERR](dot-err.md) block evaluated on every assembly pass if **OPTION:SETIF2** is **TRUE.**
## Syntax
-> .ERR2 [[message]]
+> **.ERR2** ⟦*message*⟧
+
+## Remarks
+
+For more information about 2-pass behavior in MASM 5.1 vs MASM 6.1, see [IF1 and IF2](if2.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-errb.md b/docs/assembler/masm/dot-errb.md
index ae9e63721b..61f6042e83 100644
--- a/docs/assembler/masm/dot-errb.md
+++ b/docs/assembler/masm/dot-errb.md
@@ -1,6 +1,6 @@
---
title: ".ERRB"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERRB"]
helpviewer_keywords: [".ERRB directive"]
ms.assetid: d7834c95-c5b8-45d9-9224-692c2d7bff17
@@ -11,8 +11,9 @@ Generates an error if *textitem* is blank.
## Syntax
-> .ERRB *textitem* [[, *message*]]
+> **.ERRB** *textitem* ⟦__,__ *message*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-errdef.md b/docs/assembler/masm/dot-errdef.md
index 389b0a4f10..36a4b41005 100644
--- a/docs/assembler/masm/dot-errdef.md
+++ b/docs/assembler/masm/dot-errdef.md
@@ -1,6 +1,6 @@
---
title: ".ERRDEF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERRDEF"]
helpviewer_keywords: [".ERRDEF directive"]
ms.assetid: 07e39826-56f7-4734-a9de-5ff72879af10
@@ -11,8 +11,9 @@ Generates an error if *name* is a previously defined label, variable, or symbol.
## Syntax
-> .ERRDEF name [[, message]]
+> **.ERRDEF** *name* ⟦__,__ *message*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-errdif.md b/docs/assembler/masm/dot-errdif.md
index ba95aaf7b8..648ab2182c 100644
--- a/docs/assembler/masm/dot-errdif.md
+++ b/docs/assembler/masm/dot-errdif.md
@@ -1,22 +1,24 @@
---
-title: ".ERRDIF, .ERRDIFI"
+title: ".ERRDIF, .ERRDIFI"
ms.date: "05/23/2019"
-f1_keywords: [".ERRDIF[[I]]", ".ERRDIF", ".ERRDIFI"]
-helpviewer_keywords: [".ERRDIF[[I]] directive", ".ERRDIF directive", ".ERRDIFI directive"]
+f1_keywords: [".ERRDIF", ".ERRDIFI"]
+helpviewer_keywords: [".ERRDIF directive", ".ERRDIFI directive"]
ms.assetid: af7cb441-0373-4c7e-af9c-06bcb9ed2b0a
---
-# .ERRDIF, .ERRDIFI
+# .ERRDIF, .ERRDIFI
Generates an error if the text items are different.
## Syntax
-> **.ERRDIF**\[**I**] *textitem1*__,__ *textitem2* \[__,__ *message*]
+> **.ERRDIF** *textitem1*__,__ *textitem2* ⟦__,__ *message*⟧\
+> **.ERRDIFI** *textitem1*__,__ *textitem2* ⟦__,__ *message*⟧
## Remarks
-If **.ERRDIFI** is given, the comparison is case insensitive.
+If **.ERRDIFI** is given, the comparison is case insensitive.
## See also
-[Directives reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-erre.md b/docs/assembler/masm/dot-erre.md
index 77e149020d..1a7b5afcb7 100644
--- a/docs/assembler/masm/dot-erre.md
+++ b/docs/assembler/masm/dot-erre.md
@@ -1,6 +1,6 @@
---
title: ".ERRE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERRE"]
helpviewer_keywords: [".ERRE directive"]
ms.assetid: cfb5a4bb-4488-4101-bd06-63ba43b1473e
@@ -11,8 +11,9 @@ Generates an error if *expression* is false (0).
## Syntax
-> .ERRE expression [[, message]]
+> **.ERRE** *expression* ⟦__,__ *message*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-erridn.md b/docs/assembler/masm/dot-erridn.md
index 0825141b08..c7b2c9fd60 100644
--- a/docs/assembler/masm/dot-erridn.md
+++ b/docs/assembler/masm/dot-erridn.md
@@ -1,8 +1,8 @@
---
title: ".ERRIDN, .ERRIDNI"
ms.date: "05/23/2019"
-f1_keywords: [".ERRIDN[[I]]", ".ERRIDN", ".ERRIDNI"]
-helpviewer_keywords: [".ERRIDN[[I]] directive", ".ERRIDN directive", ".ERRIDNI directive"]
+f1_keywords: [".ERRIDN", ".ERRIDNI"]
+helpviewer_keywords: [".ERRIDN directive", ".ERRIDNI directive"]
ms.assetid: 89507db3-7d40-4a5e-a378-24d30feda9d1
---
# .ERRIDN, .ERRIDNI
@@ -11,7 +11,8 @@ Generates an error if the text items are identical.
## Syntax
-> **.ERRIDN**\[**I**] *textitem1*__,__ *textitem2* \[__,__ *message*]
+> **.ERRIDN** *textitem1*__,__ *textitem2* ⟦__,__ *message*⟧\
+> **.ERRIDNI** *textitem1*__,__ *textitem2* ⟦__,__ *message*⟧
## Remarks
@@ -19,4 +20,5 @@ If **.ERRIDNI** is given, the comparison is case insensitive.
## See also
-[Directives reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-errnb.md b/docs/assembler/masm/dot-errnb.md
index db828bf088..49d18c2eee 100644
--- a/docs/assembler/masm/dot-errnb.md
+++ b/docs/assembler/masm/dot-errnb.md
@@ -1,6 +1,6 @@
---
title: ".ERRNB"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERRNB"]
helpviewer_keywords: [".ERRNB directive"]
ms.assetid: 3b9a6f5e-9a4d-47a8-a1f6-b199328937de
@@ -11,8 +11,9 @@ Generates an error if *textitem* is not blank.
## Syntax
-> .ERRNB *textitem* [[, *message*]]
+> **.ERRNB** *textitem* ⟦__,__ *message*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-errndef.md b/docs/assembler/masm/dot-errndef.md
index 146874ca72..8dba23541b 100644
--- a/docs/assembler/masm/dot-errndef.md
+++ b/docs/assembler/masm/dot-errndef.md
@@ -1,6 +1,6 @@
---
title: ".ERRNDEF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERRNDEF"]
helpviewer_keywords: [".ERRNDEF directive"]
ms.assetid: 9fab57bb-02ad-486f-b46d-bcd23980f00d
@@ -11,8 +11,9 @@ Generates an error if *name* has not been defined.
## Syntax
-> .ERRNDEF name [[, message]]
+> **.ERRNDEF** *name* ⟦__,__ *message*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-errnz.md b/docs/assembler/masm/dot-errnz.md
index 15ac86fe2f..e3e10f2360 100644
--- a/docs/assembler/masm/dot-errnz.md
+++ b/docs/assembler/masm/dot-errnz.md
@@ -1,18 +1,19 @@
---
title: ".ERRNZ"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".ERRNZ"]
helpviewer_keywords: [".ERRNZ directive"]
ms.assetid: 373a9222-140f-4505-8dec-ef370a069ebf
---
-# .ERRNZ
+# **.ERRNZ**
Generates an error if *expression* is true (nonzero).
## Syntax
-> .ERRNZ expression [[, message]]
+> **.ERRNZ** *expression* ⟦__,__ *message*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-exit.md b/docs/assembler/masm/dot-exit.md
index fb4ef08c4d..cdd56a8296 100644
--- a/docs/assembler/masm/dot-exit.md
+++ b/docs/assembler/masm/dot-exit.md
@@ -1,17 +1,17 @@
---
title: ".EXIT"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".EXIT"]
helpviewer_keywords: [".EXIT directive"]
ms.assetid: 5f77c281-3d65-4174-83ea-34dcc7085ecf
---
-# .EXIT
+# .EXIT (32-bit MASM)
-Generates termination code.
+Generates termination code. (32-bit MASM only.)
## Syntax
-> .EXIT [[expression]]
+> **.EXIT** ⟦*expression*⟧
## Remarks
@@ -19,4 +19,5 @@ Returns optional *expression* to shell.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-fardata-q.md b/docs/assembler/masm/dot-fardata-q.md
index 6b77087327..ce54b47c98 100644
--- a/docs/assembler/masm/dot-fardata-q.md
+++ b/docs/assembler/masm/dot-fardata-q.md
@@ -1,18 +1,19 @@
---
title: ".FARDATA?"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".FARDATA?"]
helpviewer_keywords: [".FARDATA? directive"]
ms.assetid: 3b416313-44b7-4724-a2cf-69d73871a10c
---
-# .FARDATA?
+# .FARDATA? (32-bit MASM)
-When used with [.MODEL](../../assembler/masm/dot-model.md), starts a far data segment for uninitialized data (segment name FAR_BSS or *name*).
+When used with [.MODEL](dot-model.md), starts a far data segment for uninitialized data (segment name FAR_BSS or *name*). (32-bit MASM only.)
## Syntax
-> .FARDATA? [[name]]
+> **.FARDATA?** ⟦*name*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-fardata.md b/docs/assembler/masm/dot-fardata.md
index bba3d684c6..a25ea12a7c 100644
--- a/docs/assembler/masm/dot-fardata.md
+++ b/docs/assembler/masm/dot-fardata.md
@@ -1,18 +1,19 @@
---
title: ".FARDATA"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".FARDATA"]
helpviewer_keywords: [".FARDATA directive"]
ms.assetid: 4458ef66-5626-4607-bf83-71637b459f77
---
-# .FARDATA
+# .FARDATA (32-bit MASM)
-When used with [.MODEL](../../assembler/masm/dot-model.md), starts a far data segment for initialized data (segment name FAR_DATA or *name*).
+When used with [.MODEL](dot-model.md), starts a far data segment for initialized data (segment name FAR_DATA or *name*). (32-bit MASM only.)
## Syntax
-> .FARDATA [[name]]
+> **.FARDATA** ⟦*name*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-fpo.md b/docs/assembler/masm/dot-fpo.md
index 8837faab2d..7c754515bf 100644
--- a/docs/assembler/masm/dot-fpo.md
+++ b/docs/assembler/masm/dot-fpo.md
@@ -1,38 +1,39 @@
---
title: ".FPO"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".FPO"]
helpviewer_keywords: [".FPO directive"]
ms.assetid: 35f4cd61-32f9-4262-b657-73f04f775d09
---
-# .FPO
+# .FPO (32-bit MASM)
-The .FPO directive controls the emission of debug records to the .debug$F segment or section.
+The **.FPO** directive controls the emission of debug records to the .debug$F segment or section. (32-bit MASM only.)
## Syntax
-> FPO (*cdwLocals*, *cdwParams*, *cbProlog*, *cbRegs*, *fUseBP*, *cbFrame*)
+> **.FPO** (*cdwLocals*, *cdwParams*, *cbProlog*, *cbRegs*, *fUseBP*, *cbFrame*)
### Parameters
-*cdwLocals*
+*cdwLocals*\
Number of local variables, an unsigned 32 bit value.
-*cdwParams*
+*cdwParams*\
Size of the parameters in DWORDS, an unsigned 16 bit value.
-*cbProlog*
+*cbProlog*\
Number of bytes in the function prolog code, an unsigned 8 bit value.
-*cbRegs*
+*cbRegs*\
Number registers saved.
-*fUseBP*
+*fUseBP*\
Indicates whether the EBP register has been allocated. either 0 or 1.
-*cbFrame*
+*cbFrame*\
Indicates the frame type. See [FPO_DATA](/windows/win32/api/winnt/ns-winnt-fpo_data) for more information.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-if.md b/docs/assembler/masm/dot-if.md
index a1b1396b95..56136b18b7 100644
--- a/docs/assembler/masm/dot-if.md
+++ b/docs/assembler/masm/dot-if.md
@@ -1,28 +1,29 @@
---
title: ".IF"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".IF"]
helpviewer_keywords: [".IF directive"]
ms.assetid: dccc7615-8fc7-4829-9f39-0ee405f6c1e3
---
-# .IF
+# .IF (32-bit MASM)
-Generates code that tests `condition1` (for example, AX > 7) and executes the *statements* if that condition is true.
+Generates code that tests *condition1* (for example, AX > 7) and executes the *statements* if that condition is true. (32-bit MASM only.)
## Syntax
-> .IF condition1
-> statements
-> [[.ELSEIF condition2
-> statements]]
-> [[.ELSE
-> statements]]
-> .ENDIF
+> **.IF** *condition1*\
+> *statements*\
+> ⟦**.ELSEIF** *condition2*\
+> *statements*⟧\
+> ⟦**.ELSE**\
+> *statements*⟧\
+> **.ENDIF**
## Remarks
-If a [.ELSE](../../assembler/masm/dot-else.md) follows, its statements are executed if the original condition was false. Note that the conditions are evaluated at run time.
+If a [.ELSE](dot-else.md) follows, its statements are executed if the original condition was false. Note that the conditions are evaluated at run time.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-k3d.md b/docs/assembler/masm/dot-k3d.md
index 098c288db5..d749c68339 100644
--- a/docs/assembler/masm/dot-k3d.md
+++ b/docs/assembler/masm/dot-k3d.md
@@ -1,18 +1,19 @@
---
title: ".K3D"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".K3D"]
helpviewer_keywords: [".K3D directive"]
ms.assetid: b69757dc-64a5-4ead-85af-fa5abbbbfdb6
---
-# .K3D
+# .K3D (32-bit MASM)
-Enables assembly of K3D instructions.
+Enables assembly of **K3D** instructions. (32-bit MASM only.)
## Syntax
-> .K3D
+> **.K3D**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-lall.md b/docs/assembler/masm/dot-lall.md
index 94075a8a38..5a4908d10d 100644
--- a/docs/assembler/masm/dot-lall.md
+++ b/docs/assembler/masm/dot-lall.md
@@ -1,6 +1,6 @@
---
title: ".LALL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".LALL"]
helpviewer_keywords: [".LALL directive"]
ms.assetid: 23d7baf0-6a68-44d9-a980-33100a977fc6
@@ -9,12 +9,13 @@ ms.assetid: 23d7baf0-6a68-44d9-a980-33100a977fc6
## Syntax
-> .LALL
+> **.LALL**
## Remarks
-See [.LISTMACROALL](../../assembler/masm/dot-listmacroall.md).
+See [.LISTMACROALL](dot-listmacroall.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-lfcond.md b/docs/assembler/masm/dot-lfcond.md
index f9d626f277..319e02505d 100644
--- a/docs/assembler/masm/dot-lfcond.md
+++ b/docs/assembler/masm/dot-lfcond.md
@@ -1,6 +1,6 @@
---
title: ".LFCOND"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".LFCOND"]
helpviewer_keywords: [".LFCOND directive"]
ms.assetid: ed35590d-cc48-4de6-b775-b4f3434d08af
@@ -9,12 +9,13 @@ ms.assetid: ed35590d-cc48-4de6-b775-b4f3434d08af
## Syntax
-> .LFCOND
+> **.LFCOND**
## Remarks
-See [.LISTIF](../../assembler/masm/dot-listif.md).
+See [.LISTIF](dot-listif.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-list.md b/docs/assembler/masm/dot-list.md
index 014c2016a5..46ad8fe9e1 100644
--- a/docs/assembler/masm/dot-list.md
+++ b/docs/assembler/masm/dot-list.md
@@ -1,6 +1,6 @@
---
title: ".LIST"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".LIST"]
helpviewer_keywords: [".LIST directive"]
ms.assetid: f7e134de-6039-4343-b921-f70aea5e1c96
@@ -11,7 +11,7 @@ Starts listing of statements.
## Syntax
-> .LIST
+> **.LIST**
## Remarks
@@ -19,4 +19,5 @@ This is the default.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-listall.md b/docs/assembler/masm/dot-listall.md
index d254686630..5f8d1b7119 100644
--- a/docs/assembler/masm/dot-listall.md
+++ b/docs/assembler/masm/dot-listall.md
@@ -1,6 +1,6 @@
---
title: ".LISTALL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".LISTALL"]
helpviewer_keywords: [".LISTALL directive"]
ms.assetid: fccb5117-542d-4ae3-869b-40cc2ab55ecb
@@ -11,12 +11,13 @@ Starts listing of all statements.
## Syntax
-> .LISTALL
+> **.LISTALL**
## Remarks
-Equivalent to the combination of [.LIST](../../assembler/masm/dot-list.md), [.LISTIF](../../assembler/masm/dot-listif.md), and [.LISTMACROALL](../../assembler/masm/dot-listmacroall.md).
+Equivalent to the combination of [.LIST](dot-list.md), [.LISTIF](dot-listif.md), and [.LISTMACROALL](dot-listmacroall.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-listif.md b/docs/assembler/masm/dot-listif.md
index 170389ff2d..e61f62dfcc 100644
--- a/docs/assembler/masm/dot-listif.md
+++ b/docs/assembler/masm/dot-listif.md
@@ -1,6 +1,6 @@
---
title: ".LISTIF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".LISTIF"]
helpviewer_keywords: [".LISTIF directive"]
ms.assetid: 1189ff45-1fa1-4035-a74f-70c2c62b06fd
@@ -11,12 +11,13 @@ Starts listing of statements in false conditional blocks.
## Syntax
-> .LISTIF
+> **.LISTIF**
## Remarks
-Same as [.LFCOND](../../assembler/masm/dot-lfcond.md).
+Same as [.LFCOND](dot-lfcond.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-listmacro.md b/docs/assembler/masm/dot-listmacro.md
index e32b98a0a0..99337913a2 100644
--- a/docs/assembler/masm/dot-listmacro.md
+++ b/docs/assembler/masm/dot-listmacro.md
@@ -1,6 +1,6 @@
---
title: ".LISTMACRO"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".LISTMACRO"]
helpviewer_keywords: [".LISTMACRO directive"]
ms.assetid: f8dadf8c-ca6f-4bb9-a4f8-86a0e769a845
@@ -11,12 +11,13 @@ Starts listing of macro expansion statements that generate code or data.
## Syntax
-> .LISTMACRO
+> **.LISTMACRO**
## Remarks
-This is the default. Same as [.XALL](../../assembler/masm/dot-xall.md).
+This is the default. Same as [.XALL](dot-xall.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-listmacroall.md b/docs/assembler/masm/dot-listmacroall.md
index 8c9d271cc6..124eb64773 100644
--- a/docs/assembler/masm/dot-listmacroall.md
+++ b/docs/assembler/masm/dot-listmacroall.md
@@ -1,6 +1,6 @@
---
title: ".LISTMACROALL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".LISTMACROALL"]
helpviewer_keywords: [".LISTMACROALL directive"]
ms.assetid: 36f329fd-eff0-4414-8b4a-6223113f9fda
@@ -11,12 +11,13 @@ Starts listing of all statements in macros.
## Syntax
-> .LISTMACROALL
+> **.LISTMACROALL**
## Remarks
-Same as [.LALL](../../assembler/masm/dot-lall.md).
+Same as [.LALL](dot-lall.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-mmx.md b/docs/assembler/masm/dot-mmx.md
index 42fb0323c8..5661807cd3 100644
--- a/docs/assembler/masm/dot-mmx.md
+++ b/docs/assembler/masm/dot-mmx.md
@@ -1,18 +1,19 @@
---
title: ".MMX"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".MMX"]
helpviewer_keywords: [".MMX directive"]
ms.assetid: 69d360cb-b530-46e3-9cfe-204d71baa38d
---
-# .MMX
+# .MMX (32-bit MASM)
-Enables assembly of MMX or single-instruction, multiple data (SIMD) instructions.
+Enables assembly of MMX or single-instruction, multiple data (SIMD) instructions. (32-bit MASM only.)
## Syntax
-> .MMX
+> **.MMX**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-model.md b/docs/assembler/masm/dot-model.md
index d735784231..b4dcae5815 100644
--- a/docs/assembler/masm/dot-model.md
+++ b/docs/assembler/masm/dot-model.md
@@ -1,44 +1,44 @@
---
title: ".MODEL"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".MODEL"]
helpviewer_keywords: [".MODEL directive"]
ms.assetid: 057f00df-1515-4c55-852a-d936c8a34b53
---
-# .MODEL
+# .MODEL (32-bit MASM)
-Initializes the program memory model.
+Initializes the program memory model. (32-bit MASM only.)
## Syntax
-> .MODEL memorymodel [[, langtype]] [[, stackoption]]
+> **.MODEL** *memory-model* ⟦__,__ *language-type*⟧ ⟦__,__ *stack-option*⟧
### Parameters
-*memorymodel*
+*memory-model*\
Required parameter that determines the size of code and data pointers.
-*langtype*
+*language-type*\
Optional parameter that sets the calling and naming conventions for procedures and public symbols.
-*stackoption*
+*stack-option*\
Optional parameter.
-*stackoption* is not used if *memorymodel* is `FLAT`.
+*stack-option* is not used if *memory-model* is **FLAT**.
-Specifying `NEARSTACK` groups the stack segment into a single physical segment (`DGROUP`) along with data. The stack segment register (`SS`) is assumed to hold the same address as the data segment register (`DS`). `FARSTACK` does not group the stack with `DGROUP`; thus `SS` does not equal `DS`.
+Specifying **NEARSTACK** groups the stack segment into a single physical segment (**DGROUP**) along with data. The stack segment register (**SS**) is assumed to hold the same address as the data segment register (**DS**). **FARSTACK** does not group the stack with **DGROUP**; thus **SS** does not equal **DS**.
## Remarks
-.`MODEL` is not used in [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+**.MODEL** is not used in [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
The following table lists the possible values for each parameter when targeting 16-bit and 32-bit platforms:
|Parameter|32-bit values|16-bit values (support for earlier 16-bit development)|
|---------------|--------------------|----------------------------------------------------------------|
-|*memorymodel*|`FLAT`|`TINY`, `SMALL`, `COMPACT`, `MEDIUM`, `LARGE`, `HUGE`, `FLAT`|
-|*langtype*|`C`, `STDCALL`|`C`, `BASIC`, `FORTRAN`, `PASCAL`, `SYSCALL`, `STDCALL`|
-|*stackoption*|Not used|`NEARSTACK`, `FARSTACK`|
+|*memory-model*|**FLAT**|**TINY**, **SMALL**, **COMPACT**, **MEDIUM**, **LARGE**, **HUGE**, **FLAT**|
+|*language-type*|**C**, **STDCALL**|**C**, **BASIC**, **FORTRAN**, **PASCAL**, **SYSCALL**, **STDCALL**|
+|*stack-option*|Not used|**NEARSTACK**, **FARSTACK**|
## Code
@@ -80,4 +80,5 @@ end
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-nocref.md b/docs/assembler/masm/dot-nocref.md
index ab3056ab13..b1348caa03 100644
--- a/docs/assembler/masm/dot-nocref.md
+++ b/docs/assembler/masm/dot-nocref.md
@@ -1,6 +1,6 @@
---
title: ".NOCREF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".NOCREF"]
helpviewer_keywords: [".NOCREF directive"]
ms.assetid: 696a6a71-7e88-4b60-8550-7857d772ed20
@@ -11,12 +11,13 @@ Suppresses listing of symbols in the symbol table and browser file.
## Syntax
-> .NOCREF [[name[[, name]]...]]
+> **.NOCREF** ⟦*name*⟦__,__ *name* ...⟧⟧
## Remarks
-If names are specified, then only the given names are suppressed. Same as [.XCREF](../../assembler/masm/dot-xcref.md).
+If names are specified, then only the given names are suppressed. Same as [.XCREF](dot-xcref.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-nolist.md b/docs/assembler/masm/dot-nolist.md
index 85fc4b4abc..239ee215b8 100644
--- a/docs/assembler/masm/dot-nolist.md
+++ b/docs/assembler/masm/dot-nolist.md
@@ -1,6 +1,6 @@
---
title: ".NOLIST"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".NOLIST"]
helpviewer_keywords: [".NOLIST directive"]
ms.assetid: 78f5cd18-7d2d-46ef-8325-11d6a501ee2d
@@ -11,12 +11,13 @@ Suppresses program listing.
## Syntax
-> .NOLIST
+> **.NOLIST**
## Remarks
-Same as [.XLIST](../../assembler/masm/dot-xlist.md).
+Same as [.XLIST](dot-xlist.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-nolistif.md b/docs/assembler/masm/dot-nolistif.md
index 576d838ed2..c16fc60f1c 100644
--- a/docs/assembler/masm/dot-nolistif.md
+++ b/docs/assembler/masm/dot-nolistif.md
@@ -1,6 +1,6 @@
---
title: ".NOLISTIF"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: [".NOLISTIF"]
helpviewer_keywords: [".NOLISTIF directive"]
ms.assetid: 9243af7a-7221-4531-bbc3-281b6b292bfd
@@ -11,12 +11,13 @@ Suppresses listing of conditional blocks whose condition evaluates to false (0).
## Syntax
-> .NOLISTIF
+> **.NOLISTIF**
## Remarks
-This is the default. Same as [.SFCOND](../../assembler/masm/dot-sfcond.md).
+This is the default. Same as [.SFCOND](dot-sfcond.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-nolistmacro.md b/docs/assembler/masm/dot-nolistmacro.md
index 7de59a303e..0cb43a6606 100644
--- a/docs/assembler/masm/dot-nolistmacro.md
+++ b/docs/assembler/masm/dot-nolistmacro.md
@@ -1,6 +1,6 @@
---
title: ".NOLISTMACRO"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".NOLISTMACRO"]
helpviewer_keywords: [".NOLISTMACRO directive"]
ms.assetid: 52ea451a-fe18-4b90-b662-91e177011c2e
@@ -11,12 +11,13 @@ Suppresses listing of macro expansions.
## Syntax
-> .NOLISTMACRO
+> **.NOLISTMACRO**
## Remarks
-Same as [.SALL](../../assembler/masm/dot-sall.md).
+Same as [.SALL](dot-sall.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-pushframe.md b/docs/assembler/masm/dot-pushframe.md
index 19e94284ec..07dc3972df 100644
--- a/docs/assembler/masm/dot-pushframe.md
+++ b/docs/assembler/masm/dot-pushframe.md
@@ -1,24 +1,26 @@
---
title: ".PUSHFRAME"
-ms.date: "08/30/2018"
+description: "Describes the .PUSHFRAME MASM directive, used to specify how to unwind a frame function."
+ms.date: "12/06/2019"
f1_keywords: [".PUSHFRAME"]
helpviewer_keywords: [".PUSHFRAME directive"]
ms.assetid: 17b123d0-4c6d-4fd2-85eb-798e8ad0a73c
---
# .PUSHFRAME
-Generates a `UWOP_PUSH_MACHFRAME` unwind code entry. If the optional `code` is specified, the unwind code entry is given a modifier of 1. Otherwise the modifier is 0.
+Generates a `UWOP_PUSH_MACHFRAME` unwind code entry. If the optional **CODE** keyword is specified, the unwind code entry is given a modifier of 1. Otherwise the modifier is 0.
## Syntax
-> .PUSHFRAME [code]
+> **.PUSHFRAME** ⟦**CODE**⟧;;
## Remarks
-.PUSHFRAME allows ml64.exe users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](../../assembler/masm/proc.md) FRAME declaration to the [.ENDPROLOG](../../assembler/masm/dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .PUSHFRAME should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
+.PUSHFRAME allows ml64.exe users to specify how a frame function unwinds. It's only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives don't generate code; they only generate `.xdata` and `.pdata`. **.PUSHFRAME** should be preceded by instructions that actually implement the actions to be unwound. It's a good practice to wrap both the unwind directives and the code they're meant to unwind in a macro to ensure agreement.
-For more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-pushreg.md b/docs/assembler/masm/dot-pushreg.md
index 18e113d047..cb9b34d911 100644
--- a/docs/assembler/masm/dot-pushreg.md
+++ b/docs/assembler/masm/dot-pushreg.md
@@ -1,6 +1,6 @@
---
title: ".PUSHREG"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: [".PUSHREG"]
helpviewer_keywords: [".PUSHREG directive"]
ms.assetid: e0c83758-dfed-40ea-afe6-cb833c8d2d30
@@ -11,19 +11,22 @@ Generates a `UWOP_PUSH_NONVOL` unwind code entry for the specified register numb
## Syntax
-> .PUSHREG register
+> .PUSHREG *register*
## Remarks
-.PUSHREG allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](../../assembler/masm/proc.md) FRAME declaration to the [.ENDPROLOG](../../assembler/masm/dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .PUSHREG should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
+**.PUSHREG** allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](proc.md) **FRAME** declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.PUSHREG** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
-For more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+*register* may be one of:\
+RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15.
+
+For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## Sample
### Description
-The following sample shows how to push non-volatile tegisters.
+The following sample shows how to push non-volatile registers.
### Code
@@ -49,4 +52,5 @@ END
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-radix.md b/docs/assembler/masm/dot-radix.md
index 1884720b55..660d40b02f 100644
--- a/docs/assembler/masm/dot-radix.md
+++ b/docs/assembler/masm/dot-radix.md
@@ -1,6 +1,6 @@
---
title: ".RADIX"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".RADIX"]
helpviewer_keywords: [".RADIX directive"]
ms.assetid: 3f7c2717-fd41-4aff-820d-3f40fd9280a0
@@ -11,8 +11,9 @@ Sets the default radix, in the range 2 to 16, to the value of *expression*.
## Syntax
-> .RADIX expression
+> **.RADIX** *expression*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-repeat.md b/docs/assembler/masm/dot-repeat.md
index 539d7118c8..5d83446148 100644
--- a/docs/assembler/masm/dot-repeat.md
+++ b/docs/assembler/masm/dot-repeat.md
@@ -1,20 +1,21 @@
---
title: ".REPEAT"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".REPEAT"]
helpviewer_keywords: [".REPEAT directive"]
ms.assetid: cb8ad8c6-587b-42f9-a0ad-b5316a24918c
---
-# .REPEAT
+# .REPEAT (32-bit MASM)
-Generates code that repeats execution of the block of *statements* until `condition` becomes true. [.UNTILCXZ](../../assembler/masm/dot-untilcxz.md), which becomes true when CX is zero, may be substituted for [.UNTIL](../../assembler/masm/dot-until.md). The `condition` is optional with **.UNTILCXZ**.
+Generates code that repeats execution of the block of *statements* until *condition* becomes true. [.UNTILCXZ](dot-untilcxz.md), which becomes true when CX is zero, may be substituted for [.UNTIL](dot-until.md). The *condition* is optional with **.UNTILCXZ**. (32-bit MASM only.)
## Syntax
-> .REPEAT
-> statements
-> .UNTIL condition
+> **.REPEAT**\
+> *statements*\
+> **.UNTIL** *condition*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-safeseh.md b/docs/assembler/masm/dot-safeseh.md
index 96608dbfe4..201350f574 100644
--- a/docs/assembler/masm/dot-safeseh.md
+++ b/docs/assembler/masm/dot-safeseh.md
@@ -1,21 +1,21 @@
---
title: ".SAFESEH"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".SAFESEH"]
helpviewer_keywords: ["registering functions as exception handlers", "SAFESEH directive", ".SAFESEH directive"]
ms.assetid: 6eaac8c4-c46f-47ae-8a66-f5cfeb267e43
---
-# .SAFESEH
+# .SAFESEH (32-bit MASM)
-Registers a function as a structured exception handler.
+Registers a function as a structured exception handler. (32-bit MASM only.)
## Syntax
-> .SAFESEH identifier
+> **.SAFESEH** *identifier*
## Remarks
-*identifier* must be the ID for a locally defined [PROC](../../assembler/masm/proc.md) or [EXTRN](../../assembler/masm/extrn.md) PROC. A [LABEL](../../assembler/masm/label-masm.md) is not allowed. The .SAFESEH directive requires the [/safeseh](../../assembler/masm/ml-and-ml64-command-line-reference.md) ml.exe command-line option.
+*identifier* must be the ID for a locally defined [PROC](proc.md) or [EXTRN](extrn.md) PROC. A [LABEL](label-masm.md) is not allowed. The .SAFESEH directive requires the [/safeseh](ml-and-ml64-command-line-reference.md) ml.exe command-line option.
For more information about structured exception handlers, see [/SAFESEH](../../build/reference/safeseh-image-has-safe-exception-handlers.md).
@@ -31,4 +31,5 @@ end
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-sall.md b/docs/assembler/masm/dot-sall.md
index d2bce14596..e9d9acc3b5 100644
--- a/docs/assembler/masm/dot-sall.md
+++ b/docs/assembler/masm/dot-sall.md
@@ -1,18 +1,19 @@
---
title: ".SALL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".SALL"]
helpviewer_keywords: [".SALL directive"]
ms.assetid: 2791e746-96aa-4ed5-ae69-abd072378f86
---
# .SALL
-See [.NOLISTMACRO](../../assembler/masm/dot-nolistmacro.md).
+See [.NOLISTMACRO](dot-nolistmacro.md).
## Syntax
-> .SALL
+> **.SALL**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-savereg.md b/docs/assembler/masm/dot-savereg.md
index 412f9d7453..f0ab168d62 100644
--- a/docs/assembler/masm/dot-savereg.md
+++ b/docs/assembler/masm/dot-savereg.md
@@ -1,24 +1,25 @@
---
title: ".SAVEREG"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: [".SAVEREG"]
helpviewer_keywords: [".SAVEREG directive"]
ms.assetid: 1dbc2ef6-a197-40e7-9e55-fddcae8cef29
---
# .SAVEREG
-Generates either a `UWOP_SAVE_NONVOL` or a `UWOP_SAVE_NONVOL_FAR` unwind code entry for the specified register (`reg`) and offset (`offset`) using the current prologue offset. MASM will choose the most efficient encoding.
+Generates either a `UWOP_SAVE_NONVOL` or a `UWOP_SAVE_NONVOL_FAR` unwind code entry for the specified register (*reg*) and offset (*offset*) using the current prologue offset. MASM will choose the most efficient encoding.
## Syntax
-> .SAVEREG reg, offset
+> **.SAVEREG** *reg*__,__ *offset*
## Remarks
-.SAVEREG allows ml64.exe users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](../../assembler/masm/proc.md) FRAME declaration to the [.ENDPROLOG](../../assembler/masm/dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .SAVEREG should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
+**.SAVEREG** allows ml64.exe users to specify how a frame function unwinds and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.SAVEREG** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
-For more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-savexmm128.md b/docs/assembler/masm/dot-savexmm128.md
index d3d050a9f2..1ef86aa9e4 100644
--- a/docs/assembler/masm/dot-savexmm128.md
+++ b/docs/assembler/masm/dot-savexmm128.md
@@ -1,6 +1,6 @@
---
title: ".SAVEXMM128"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".SAVEXMM128"]
helpviewer_keywords: [".SAVEXMM128 directive"]
ms.assetid: 551eb472-b8d0-47b1-8d82-995d1f485723
@@ -11,16 +11,17 @@ Generates either a `UWOP_SAVE_XMM128` or a `UWOP_SAVE_XMM128_FAR` unwind code en
## Syntax
-> .savexmm128 xmmreg , offset
+> **.SAVEXMM128** *xmmreg* , *offset*
## Remarks
-.SAVEXMM128 allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](../../assembler/masm/proc.md) FRAME declaration to the [.ENDPROLOG](../../assembler/masm/dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .SAVEXMM128 should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
+**.SAVEXMM128** allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .SAVEXMM128 should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
*offset* must be a multiple of 16.
-For more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-seq.md b/docs/assembler/masm/dot-seq.md
index f4da660afd..079067cb21 100644
--- a/docs/assembler/masm/dot-seq.md
+++ b/docs/assembler/masm/dot-seq.md
@@ -1,18 +1,19 @@
---
title: ".SEQ"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".SEQ"]
helpviewer_keywords: [".SEQ directive"]
ms.assetid: 1f8bca31-e29d-4537-b9ca-f8463af75281
---
-# .SEQ
+# .SEQ (32-bit MASM)
-Orders segments sequentially (the default order).
+Orders segments sequentially (the default order). (32-bit MASM only.)
## Syntax
-> .SEQ
+> **.SEQ**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-setframe.md b/docs/assembler/masm/dot-setframe.md
index cd70a088c9..201ea7d1f5 100644
--- a/docs/assembler/masm/dot-setframe.md
+++ b/docs/assembler/masm/dot-setframe.md
@@ -1,23 +1,23 @@
---
title: ".SETFRAME"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".SETFRAME"]
helpviewer_keywords: [".SETFRAME directive"]
ms.assetid: eaa9b5ed-4daa-4f1e-bdb6-100758007ab3
---
# .SETFRAME
-Fills in the frame register field and offset in the unwind information using the specified register (`reg`) and offset (`offset`). The offset must be a multiple of 16 and less than or equal to 240. This directive also generates a `UWOP_SET_FPREG` unwind code entry for the specified register using the current prologue offset.
+Fills in the frame register field and offset in the unwind information using the specified register (*reg*) and offset (*offset*). The offset must be a multiple of 16 and less than or equal to 240. This directive also generates a `UWOP_SET_FPREG` unwind code entry for the specified register using the current prologue offset.
## Syntax
-> .SETFRAME reg, offset
+> **.SETFRAME** *reg*, *offset*
## Remarks
-.SETFRAME allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](../../assembler/masm/proc.md) FRAME declaration to the [.ENDPROLOG](../../assembler/masm/dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. .SETFRAME should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
+**.SETFRAME** allows ml64.exe users to specify how a frame function unwinds, and is only allowed within the prologue, which extends from the [PROC](proc.md) FRAME declaration to the [.ENDPROLOG](dot-endprolog.md) directive. These directives do not generate code; they only generate `.xdata` and `.pdata`. **.SETFRAME** should be preceded by instructions that actually implement the actions to be unwound. It is a good practice to wrap both the unwind directives and the code they are meant to unwind in a macro to ensure agreement.
-For more information, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+For more information, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## Sample
@@ -56,4 +56,5 @@ END
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-sfcond.md b/docs/assembler/masm/dot-sfcond.md
index e64429bb03..ea68e1c8d8 100644
--- a/docs/assembler/masm/dot-sfcond.md
+++ b/docs/assembler/masm/dot-sfcond.md
@@ -1,18 +1,19 @@
---
title: ".SFCOND"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: [".SFCOND"]
helpviewer_keywords: [".SFCOND directive"]
ms.assetid: 3a1ce2d0-cf18-4f08-b4cf-b72cded4d164
---
# .SFCOND
-See [.NOLISTIF](../../assembler/masm/dot-nolistif.md).
+See [.NOLISTIF](dot-nolistif.md).
## Syntax
-> .SFCOND
+> **.SFCOND**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-stack.md b/docs/assembler/masm/dot-stack.md
index 703dbb892b..a580d05368 100644
--- a/docs/assembler/masm/dot-stack.md
+++ b/docs/assembler/masm/dot-stack.md
@@ -1,18 +1,19 @@
---
title: ".STACK"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".STACK"]
helpviewer_keywords: [".STACK directive"]
ms.assetid: 70019463-5d4f-41b6-8464-023a8ac2466f
---
-# .STACK
+# .STACK (32-bit MASM)
-When used with [.MODEL](../../assembler/masm/dot-model.md), defines a stack segment (with segment name STACK). The optional `size` specifies the number of bytes for the stack (default 1,024). The `.STACK` directive automatically closes the stack statement.
+When used with [.MODEL](dot-model.md), defines a stack segment (with segment name **STACK**). The optional *size* specifies the number of bytes for the stack (default 1,024). The **.STACK** directive automatically closes the stack statement. (32-bit MASM only.)
## Syntax
-> .STACK [[size]]
+> **.STACK** ⟦*size*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-startup.md b/docs/assembler/masm/dot-startup.md
index 1c1b66da08..5e1e7c4f7c 100644
--- a/docs/assembler/masm/dot-startup.md
+++ b/docs/assembler/masm/dot-startup.md
@@ -1,18 +1,19 @@
---
title: ".STARTUP"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".STARTUP"]
helpviewer_keywords: [".STARTUP directive"]
ms.assetid: 3ce9c878-18bf-49a0-828c-b29928ea3e54
---
-# .STARTUP
+# .STARTUP (32-bit MASM)
-Generates program start-up code.
+Generates program start-up code. (32-bit MASM only.)
## Syntax
-> .STARTUP
+> **.STARTUP**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-tfcond.md b/docs/assembler/masm/dot-tfcond.md
index 48b9acbd9c..a292add3cc 100644
--- a/docs/assembler/masm/dot-tfcond.md
+++ b/docs/assembler/masm/dot-tfcond.md
@@ -1,6 +1,6 @@
---
title: ".TFCOND"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: [".TFCOND"]
helpviewer_keywords: [".TFCOND directive"]
ms.assetid: e3c0fe44-bf68-4397-bf31-61995c69c4c2
@@ -11,8 +11,9 @@ Toggles listing of false conditional blocks.
## Syntax
-> .TFCOND
+> **.TFCOND**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-until.md b/docs/assembler/masm/dot-until.md
index 3c2a213319..e49025f388 100644
--- a/docs/assembler/masm/dot-until.md
+++ b/docs/assembler/masm/dot-until.md
@@ -1,18 +1,19 @@
---
title: ".UNTIL"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".UNTIL"]
helpviewer_keywords: [".UNTIL directive"]
ms.assetid: 491de65d-cfb7-4d17-86b1-be83d3d84083
---
-# .UNTIL
+# .UNTIL (32-bit MASM)
-See [.REPEAT](../../assembler/masm/dot-repeat.md).
+(32-bit MASM only.) See [.REPEAT](dot-repeat.md).
## Syntax
-> .UNTIL
+> **.UNTIL**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-untilcxz.md b/docs/assembler/masm/dot-untilcxz.md
index e51908d64e..8e0f7bb185 100644
--- a/docs/assembler/masm/dot-untilcxz.md
+++ b/docs/assembler/masm/dot-untilcxz.md
@@ -1,14 +1,15 @@
---
title: ".UNTILCXZ"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".UNTILCXZ"]
helpviewer_keywords: [".UNTILCXZ directive"]
ms.assetid: 07723c4c-789d-4dfa-9407-c60e72cb975f
---
-# .UNTILCXZ
+# .UNTILCXZ (32-bit MASM)
-See [.REPEAT](../../assembler/masm/dot-repeat.md).
+(32-bit MASM only.) See [.REPEAT](dot-repeat.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-while.md b/docs/assembler/masm/dot-while.md
index 9fa6c1ee69..17518b3759 100644
--- a/docs/assembler/masm/dot-while.md
+++ b/docs/assembler/masm/dot-while.md
@@ -1,20 +1,21 @@
---
title: ".WHILE"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".WHILE"]
helpviewer_keywords: [".WHILE directive"]
ms.assetid: 7c5e78ae-1bfd-4dcf-aa4c-ba940bcf7793
---
-# .WHILE
+# .WHILE (32-bit MASM)
-Generates code that executes the block of `statements` while `condition` remains true.
+Generates code that executes the block of *statements* while *condition* remains true. (32-bit MASM only.)
## Syntax
-> .WHILE condition
-> statements
-> .ENDW
+> **.WHILE** *condition*\
+> *statements*\
+> **.ENDW**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-xall.md b/docs/assembler/masm/dot-xall.md
index f22b69c283..91bd6e813f 100644
--- a/docs/assembler/masm/dot-xall.md
+++ b/docs/assembler/masm/dot-xall.md
@@ -1,18 +1,19 @@
---
title: ".XALL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".XALL"]
helpviewer_keywords: [".XALL directive"]
ms.assetid: b2d851dd-f79e-46c6-825d-1938b8487e8c
---
# .XALL
-See [.LISTMACRO](../../assembler/masm/dot-listmacro.md).
+See [.LISTMACRO](dot-listmacro.md).
## Syntax
-> .XALL
+> **.XALL**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-xcref.md b/docs/assembler/masm/dot-xcref.md
index ddeba62b86..e866c501b0 100644
--- a/docs/assembler/masm/dot-xcref.md
+++ b/docs/assembler/masm/dot-xcref.md
@@ -1,18 +1,19 @@
---
title: ".XCREF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".XCREF"]
helpviewer_keywords: [".XCREF directive"]
ms.assetid: f8443482-2a7e-4764-bef8-8bfdaf06d2fe
---
# .XCREF
-See [.NOCREF](../../assembler/masm/dot-nocref.md).
+See [.NOCREF](dot-nocref.md).
## Syntax
-> .XCREF
+> **.XCREF**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-xlist.md b/docs/assembler/masm/dot-xlist.md
index 8747010349..537eaf605c 100644
--- a/docs/assembler/masm/dot-xlist.md
+++ b/docs/assembler/masm/dot-xlist.md
@@ -1,18 +1,19 @@
---
title: ".XLIST"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".XLIST"]
helpviewer_keywords: [".XLIST directive"]
ms.assetid: e90f04f4-82d0-4f6c-9568-7b3bca5060fb
---
# .XLIST
-See [.NOLIST](../../assembler/masm/dot-nolist.md).
+See [.NOLIST](dot-nolist.md).
## Syntax
-> .XLIST
+> **.XLIST**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dot-xmm.md b/docs/assembler/masm/dot-xmm.md
index 3394453ce7..e49e2c2e99 100644
--- a/docs/assembler/masm/dot-xmm.md
+++ b/docs/assembler/masm/dot-xmm.md
@@ -1,18 +1,19 @@
---
title: ".XMM"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: [".XMM"]
helpviewer_keywords: [".XMM directive"]
ms.assetid: db3062b6-8b2f-469b-aa02-df6571eab3ba
---
-# .XMM
+# .XMM (32-bit MASM)
-Enables assembly of Internet Streaming SIMD Extension instructions.
+Enables assembly of Internet Streaming SIMD Extension instructions. (32-bit MASM only.)
## Syntax
-> .XMM
+> **.XMM**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dq.md b/docs/assembler/masm/dq.md
index 205835fd81..7f89ec5c7c 100644
--- a/docs/assembler/masm/dq.md
+++ b/docs/assembler/masm/dq.md
@@ -1,19 +1,20 @@
---
title: "DQ"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["DQ"]
helpviewer_keywords: ["DQ directive"]
ms.assetid: 15de9c41-db90-4bca-affc-426eeb38ebc0
---
# DQ
-Allocates and optionally initializes 8 bytes of storage for each `initializer`. Also can be used as a type specifier anywhere a type is legal. `DQ` is a synonym of [QWORD](../../assembler/masm/qword.md).
+Allocates and optionally initializes 8 bytes of storage for each *initializer*. Also can be used as a type specifier anywhere a type is legal. **DQ** is a synonym of [QWORD](qword.md).
## Syntax
-> [[name]] DQ initializer [[, initializer]]...
+> ⟦*name*⟧ **DQ** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[QWORD](../../assembler/masm/qword.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[QWORD](qword.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dt.md b/docs/assembler/masm/dt.md
index 9e8bcfdaa8..58d9b2a022 100644
--- a/docs/assembler/masm/dt.md
+++ b/docs/assembler/masm/dt.md
@@ -1,18 +1,19 @@
---
title: "DT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["dt"]
helpviewer_keywords: ["DT directive"]
ms.assetid: 96c5c4e9-7053-49f0-946a-8088e178e79a
---
# DT
-Allocates and optionally initializes 10 bytes of storage for each `initializer`. Can also be used as a type specifier anywhere a type is legal. `DT` is a synonym of [TBYTE](../../assembler/masm/tbyte.md).
+Allocates and optionally initializes 10 bytes of storage for each *initializer*. Can also be used as a type specifier anywhere a type is legal. **DT** is a synonym of [TBYTE](tbyte.md).
## Syntax
-> [[name]] DT initializer [[, initializer]]...
+> ⟦*name*⟧ **DT** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dw.md b/docs/assembler/masm/dw.md
index 93a0492197..76fa74f4f1 100644
--- a/docs/assembler/masm/dw.md
+++ b/docs/assembler/masm/dw.md
@@ -1,19 +1,20 @@
---
title: "DW"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["DW"]
helpviewer_keywords: ["DW directive"]
ms.assetid: 451d0e24-b65b-4cbb-b81d-ea27680feaf3
---
# DW
-Allocates and optionally initializes a word (2 bytes) of storage for each `initializer`. Can also be used as a type specifier anywhere a type is legal. `DW` is a synonym of [WORD](../../assembler/masm/word.md).
+Allocates and optionally initializes a word (2 bytes) of storage for each *initializer*. Can also be used as a type specifier anywhere a type is legal. **DW** is a synonym of [WORD](word.md).
## Syntax
-> [[name]] DW initializer [[, initializer]]...
+> ⟦*name*⟧ **DW** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[SWORD](../../assembler/masm/sword.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[SWORD](sword.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/dword.md b/docs/assembler/masm/dword.md
index a02b4fe00c..af57f3a698 100644
--- a/docs/assembler/masm/dword.md
+++ b/docs/assembler/masm/dword.md
@@ -1,17 +1,17 @@
---
title: "DWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["DWORD"]
helpviewer_keywords: ["DWORD directive"]
ms.assetid: 20efd7c6-1ee6-45a1-9feb-86ce7978142a
---
# DWORD
-Allocates and optionally initializes a double word (4 bytes) of storage for each `initializer`.
+Allocates and optionally initializes a double word (4 bytes) of storage for each *initializer*. **DWORD** is a synonym of [DD](dd.md).
## Syntax
-> [[name]] DWORD initializer [[, initializer]]...
+> ⟦*name*⟧ **DWORD** *initializer* ⟦__,__ *initializer* ...⟧
## Remarks
@@ -19,6 +19,7 @@ Can also be used as a type specifier anywhere a type is legal.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[SDWORD](../../assembler/masm/sdword.md)
-[DD](../../assembler/masm/dd.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[SDWORD](sdword.md)\
+[DD](dd.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/echo.md b/docs/assembler/masm/echo.md
index b58d099b86..29815748f9 100644
--- a/docs/assembler/masm/echo.md
+++ b/docs/assembler/masm/echo.md
@@ -1,6 +1,6 @@
---
title: "ECHO"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ECHO"]
helpviewer_keywords: ["ECHO directive"]
ms.assetid: 68b912cc-6bd3-4f22-88cb-00a1aa17ecaf
@@ -11,12 +11,13 @@ Displays *message* to the standard output device (by default, the screen).
## Syntax
-> ECHO *message*
+> **ECHO** *message*
## Remarks
-Same as [%OUT](../../assembler/masm/percent-out.md).
+Same as [%OUT](percent-out.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/else-masm.md b/docs/assembler/masm/else-masm.md
index 658080491e..6081da4cd9 100644
--- a/docs/assembler/masm/else-masm.md
+++ b/docs/assembler/masm/else-masm.md
@@ -1,6 +1,6 @@
---
title: "ELSE (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["else"]
helpviewer_keywords: ["ELSE directive"]
ms.assetid: c43af707-4567-4489-97ca-f14982d84e88
@@ -11,12 +11,13 @@ Marks the beginning of an alternate block within a conditional block.
## Syntax
-> ELSE
+> **ELSE**
## Remarks
-See [IF](../../assembler/masm/if-masm.md).
+See [IF](if-masm.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/elseif-masm.md b/docs/assembler/masm/elseif-masm.md
index 2d9a382006..a723feeb52 100644
--- a/docs/assembler/masm/elseif-masm.md
+++ b/docs/assembler/masm/elseif-masm.md
@@ -1,22 +1,27 @@
---
title: "ELSEIF (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["ElseIf"]
helpviewer_keywords: ["ELSEIF directive"]
ms.assetid: 20a685d6-836e-4e64-902e-4f3daf2e51c2
---
-# ELSEIF (MASM)
+# ELSEIF
-Combines [ELSE](../../assembler/masm/else-masm.md) and [IF](../../assembler/masm/if-masm.md) into one statement.
+Combines [ELSE](else-masm.md) and [IF](if-masm.md) into one statement.
## Syntax
-> ELSEIF
+> **ELSEIF** *constantExpression*\
+> *statements*\
+> ⟦**ELSE**\
+> *else-statements*⟧\
+> **ENDIF**
## Remarks
-See [IF](../../assembler/masm/if-masm.md).
+See [IF](if-masm.md) for more information.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/elseif2.md b/docs/assembler/masm/elseif2.md
index a183424c36..8f547c3f4b 100644
--- a/docs/assembler/masm/elseif2.md
+++ b/docs/assembler/masm/elseif2.md
@@ -1,18 +1,23 @@
---
title: "ELSEIF2"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ELSEIF2"]
helpviewer_keywords: ["ELSEIF2 directive"]
ms.assetid: 6e6a1020-1dc2-45a9-a42c-e08442fb4071
---
# ELSEIF2
-[ELSEIF](../../assembler/masm/elseif-masm.md) block evaluated on every assembly pass if **OPTION:SETIF2** is **TRUE**.
+[ELSEIF](elseif-masm.md) block evaluated on every assembly pass if **OPTION:SETIF2** is **TRUE**.
## Syntax
-> ELSEIF2
+> **ELSEIF2**
+
+## Remarks
+
+For more information about 2-pass behavior in MASM 5.1 vs MASM 6.1, see [IF1 and IF2](if2.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/end-masm.md b/docs/assembler/masm/end-masm.md
index 97e2e93a8a..93b05813ee 100644
--- a/docs/assembler/masm/end-masm.md
+++ b/docs/assembler/masm/end-masm.md
@@ -1,18 +1,23 @@
---
title: "END (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/06/2019"
f1_keywords: ["end"]
helpviewer_keywords: ["END directive"]
ms.assetid: 128d1c17-f4c4-4ac6-bdb7-d14b4a9a7f4c
---
-# END (MASM)
+# END
-Marks the end of a module and, optionally, sets the program entry point to *address*.
+Marks the end of a module and, optionally, sets the program entry point to *procId*.
## Syntax
-> END [[address]]
+> **END** ⟦*procId*⟧
+
+## Remarks
+
+The *procId* argument is valid in 32-bit MASM only.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/endm.md b/docs/assembler/masm/endm.md
index aa66bf8b32..a759fb5e95 100644
--- a/docs/assembler/masm/endm.md
+++ b/docs/assembler/masm/endm.md
@@ -1,6 +1,6 @@
---
title: "ENDM"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ENDM"]
helpviewer_keywords: ["ENDM directive"]
ms.assetid: 697ea303-1e47-4ee9-9e67-77b83c3fe35a
@@ -11,12 +11,13 @@ Terminates a macro or repeat block.
## Syntax
-> ENDM
+> **ENDM**
## Remarks
-See [MACRO](../../assembler/masm/macro.md), [FOR](../../assembler/masm/for-masm.md), [FORC](../../assembler/masm/forc.md), [REPEAT](../../assembler/masm/repeat.md), or **WHILE**.
+See [MACRO](macro.md), [FOR](for-masm.md), [FORC](forc.md), [REPEAT](repeat.md), or [WHILE](while-masm.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/endp.md b/docs/assembler/masm/endp.md
index 0eba0dfa39..9b53b2eef6 100644
--- a/docs/assembler/masm/endp.md
+++ b/docs/assembler/masm/endp.md
@@ -1,6 +1,6 @@
---
title: "ENDP"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ENDP"]
helpviewer_keywords: ["ENDP directive"]
ms.assetid: 31fc8040-8c49-43e2-8885-a20ba3b69551
@@ -11,12 +11,13 @@ Marks the end of procedure *name* previously begun with **PROC**.
## Syntax
-> *name* ENDP
+> *name* **ENDP**
## Remarks
-See [PROC](../../assembler/masm/proc.md).
+See [PROC](proc.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ends-masm.md b/docs/assembler/masm/ends-masm.md
index 193044a175..87859c6b48 100644
--- a/docs/assembler/masm/ends-masm.md
+++ b/docs/assembler/masm/ends-masm.md
@@ -1,18 +1,19 @@
---
title: "ENDS (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ENDS"]
helpviewer_keywords: ["ENDS directive"]
ms.assetid: 30f68c58-de1f-4bdd-ac83-4658bdbaad65
---
-# ENDS (MASM)
+# ENDS
-Marks the end of segment, structure, or union *name* previously begun with [SEGMENT](../../assembler/masm/segment.md), [STRUCT](../../assembler/masm/struct-masm.md), [UNION](../../assembler/masm/union.md), or a simplified segment directive.
+Marks the end of segment, structure, or union *name* previously begun with [SEGMENT](segment.md), [STRUCT](struct-masm.md), [UNION](union.md), or a simplified segment directive.
## Syntax
-> name ENDS
+> *name* **ENDS**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/equ.md b/docs/assembler/masm/equ.md
index 456b3cb046..f6637d84b0 100644
--- a/docs/assembler/masm/equ.md
+++ b/docs/assembler/masm/equ.md
@@ -1,6 +1,6 @@
---
title: "EQU"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["EQU"]
helpviewer_keywords: ["EQU directive"]
ms.assetid: 96db466a-1eab-45bd-a3c2-5a59bd754eab
@@ -11,16 +11,17 @@ The first directive assigns numeric value of *expression* to *name*.
## Syntax
-> *name* EQU *expression*
+> *name* **EQU** *expression*
>
-> *name* EQU \<*text*>
+> *name* **EQU** __\<__*text*__>__
## Remarks
The *name* cannot be redefined later.
-The second directive assigns specified *text* to *name*. The *name* can be assigned a different *text* later. See [TEXTEQU](../../assembler/masm/textequ.md).
+The second directive assigns specified *text* to *name*. The *name* can be assigned a different *text* later. See [TEXTEQU](textequ.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/equal.md b/docs/assembler/masm/equal.md
index 2b8b092888..99358f7558 100644
--- a/docs/assembler/masm/equal.md
+++ b/docs/assembler/masm/equal.md
@@ -1,6 +1,6 @@
---
title: "="
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["="]
helpviewer_keywords: ["= directive"]
ms.assetid: 285fa799-28d2-49f2-9a80-d701185f4f7b
@@ -11,7 +11,7 @@ Assigns the numeric value of *expression* to *name*.
## Syntax
-> *name* = *expression*
+> *name* **=** *expression*
## Remarks
@@ -19,4 +19,5 @@ The symbol can be redefined later.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/even.md b/docs/assembler/masm/even.md
index 8246241b3f..1cd01181dc 100644
--- a/docs/assembler/masm/even.md
+++ b/docs/assembler/masm/even.md
@@ -1,6 +1,6 @@
---
title: "EVEN"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["EVEN"]
helpviewer_keywords: ["EVEN directive"]
ms.assetid: 68938ba4-8cb9-44d4-914e-9f9fee6bcbf4
@@ -11,8 +11,9 @@ Aligns the next variable or instruction on an even byte.
## Syntax
-> EVEN
+> **EVEN**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/exitm.md b/docs/assembler/masm/exitm.md
index 109ae16058..a48bdee055 100644
--- a/docs/assembler/masm/exitm.md
+++ b/docs/assembler/masm/exitm.md
@@ -1,6 +1,6 @@
---
title: "EXITM"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["EXITM"]
helpviewer_keywords: ["EXITM directive"]
ms.assetid: a3484d33-04a9-4791-8d53-3fc3bc7b417c
@@ -11,7 +11,7 @@ Terminates expansion of the current repeat or macro block and begins assembly of
## Syntax
-> EXITM [[textitem]]
+> **EXITM** ⟦*textitem*⟧
## Remarks
@@ -19,4 +19,5 @@ In a macro function, *textitem* is the value returned.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/extern-masm.md b/docs/assembler/masm/extern-masm.md
index db3a42ec41..fa0d0c9525 100644
--- a/docs/assembler/masm/extern-masm.md
+++ b/docs/assembler/masm/extern-masm.md
@@ -1,22 +1,25 @@
---
title: "EXTERN (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/06/2019"
f1_keywords: ["extern"]
helpviewer_keywords: ["EXTERN directive"]
ms.assetid: 667d703d-3aaf-4139-a586-29bc5dab1aff
---
-# EXTERN (MASM)
+# EXTERN
Defines one or more external variables, labels, or symbols called *name* whose type is *type*.
## Syntax
-> EXTERN [[*langtype*]] *name* [[ (*altid*) ]] : *type* [[, [[*langtype*]] *name* [[ (*altid*) ]] : *type*]] ...
+> **EXTERN** ⟦*language-type*⟧ *name* ⟦ __(__*altid*__)__ ⟧ __:__ *type* ⟦__,__ ⟦*language-type*⟧ *name* ⟦ __(__*altid*__)__ ⟧ __:__ *type* ...⟧
## Remarks
-The *type* can be [ABS](../../assembler/masm/operator-abs.md), which imports *name* as a constant. Same as [EXTRN](../../assembler/masm/extrn.md).
+The *language-type* argument is valid in 32-bit MASM only.
+
+The *type* can be [ABS](operator-abs.md), which imports *name* as a constant. Same as [EXTRN](extrn.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/externdef.md b/docs/assembler/masm/externdef.md
index 75e926a8f3..28192b6870 100644
--- a/docs/assembler/masm/externdef.md
+++ b/docs/assembler/masm/externdef.md
@@ -1,22 +1,25 @@
---
title: "EXTERNDEF"
-ms.date: "08/30/2018"
+ms.date: "12/06/2019"
f1_keywords: ["EXTERNDEF"]
helpviewer_keywords: ["EXTERNDEF directive"]
ms.assetid: 95a10de6-c345-4428-a2f2-90f7d411dc86
---
# EXTERNDEF
-Defines one or more external variables, labels, or symbols called *name* whose type is `type`.
+Defines one or more external variables, labels, or symbols called *name* whose type is *type*.
## Syntax
-> EXTERNDEF [[langtype]] name:type [[, [[langtype]] name:type]]...
+> **EXTERNDEF** ⟦*language-type*⟧ *name*__:__*type* ⟦__,__ ⟦*language-type*⟧ *name*__:__*type* ...⟧
## Remarks
-If *name* is defined in the module, it is treated as [PUBLIC](../../assembler/masm/public-masm.md). If *name* is referenced in the module, it is treated as [EXTERN](../../assembler/masm/extern-masm.md). If *name* is not referenced, it is ignored. The `type` can be [ABS](../../assembler/masm/operator-abs.md), which imports *name* as a constant. Normally used in include files.
+The *language-type* argument is valid in 32-bit MASM only.
+
+If *name* is defined in the module, it is treated as [PUBLIC](public-masm.md). If *name* is referenced in the module, it is treated as [EXTERN](extern-masm.md). If *name* is not referenced, it is ignored. The *type* can be [ABS](operator-abs.md), which imports *name* as a constant. Normally used in include files.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/extrn.md b/docs/assembler/masm/extrn.md
index fde6f16b42..30cc67e29d 100644
--- a/docs/assembler/masm/extrn.md
+++ b/docs/assembler/masm/extrn.md
@@ -1,6 +1,6 @@
---
title: "EXTRN"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["EXTRN"]
helpviewer_keywords: ["EXTRN directive"]
ms.assetid: 090f8ec7-28e7-451e-88a8-29c2e77fb956
@@ -9,12 +9,13 @@ ms.assetid: 090f8ec7-28e7-451e-88a8-29c2e77fb956
## Syntax
-> EXTRN
+> **EXTRN**
## Remarks
-See [EXTERN](../../assembler/masm/extern-masm.md).
+See [EXTERN](extern-masm.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/for-masm.md b/docs/assembler/masm/for-masm.md
index 54318d8a73..b92cc63214 100644
--- a/docs/assembler/masm/for-masm.md
+++ b/docs/assembler/masm/for-masm.md
@@ -1,24 +1,25 @@
---
title: "FOR (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["for"]
helpviewer_keywords: ["FOR directive"]
ms.assetid: 99872e61-f503-4d34-b305-59f8556ba6b7
---
-# FOR (MASM)
+# FOR
Marks a block that will be repeated once for each *argument*, with the current *argument* replacing *parameter* on each repetition.
## Syntax
-> FOR *parameter* [[:REQ | :=*default*]] , \<*argument* [[, *argument*]]...>
-> *statements*
-> ENDM
+> **FOR** *parameter* ⟦**:REQ** | __:=__*default*⟧ **, \<** _argument_ ⟦__,__ *argument* ...⟧**>**\
+> *statements*\
+> **ENDM**
## Remarks
-Same as [IRP](../../assembler/masm/irp.md).
+Same as [IRP](irp.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/forc.md b/docs/assembler/masm/forc.md
index 02ae5c9ce5..ae95c6ec1d 100644
--- a/docs/assembler/masm/forc.md
+++ b/docs/assembler/masm/forc.md
@@ -1,6 +1,6 @@
---
title: "FORC"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["FORC"]
helpviewer_keywords: ["FORC directive"]
ms.assetid: 57c05099-0c46-44bc-9ae5-27ce850ccdff
@@ -11,14 +11,15 @@ Marks a block that will be repeated once for each character in *string*, with th
## Syntax
-> FORC *parameter*, \<*string*>
-> *statements*
-> ENDM
+> **FORC** *parameter*, __\<__*string*__>__\
+> *statements*\
+> **ENDM**
## Remarks
-Same as [IRPC](../../assembler/masm/irpc.md).
+Same as [IRPC](irpc.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/fword.md b/docs/assembler/masm/fword.md
index faaac11fe3..db7d609cf4 100644
--- a/docs/assembler/masm/fword.md
+++ b/docs/assembler/masm/fword.md
@@ -1,17 +1,17 @@
---
title: "FWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["FWORD"]
helpviewer_keywords: ["FWORD directive"]
ms.assetid: 8fd33d12-d49d-4e2a-80ac-0f55792e99be
---
# FWORD
-Allocates and optionally initializes 6 bytes of storage for each `initializer`.
+Allocates and optionally initializes 6 bytes of storage for each *initializer*.
## Syntax
-> [[name]] FWORD initializer [[, initializer]]...
+> ⟦*name*⟧ **FWORD** *initializer* ⟦__,__ *initializer* ...⟧
## Remarks
@@ -19,5 +19,6 @@ Also can be used as a type specifier anywhere a type is legal.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[DF](../../assembler/masm/df.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[DF](df.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/goto-masm.md b/docs/assembler/masm/goto-masm.md
index fecdb9f321..d44e22782e 100644
--- a/docs/assembler/masm/goto-masm.md
+++ b/docs/assembler/masm/goto-masm.md
@@ -1,11 +1,11 @@
---
title: "GOTO (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["goto"]
helpviewer_keywords: ["GOTO directive"]
ms.assetid: 6a5f73e7-6784-4eae-ac52-4fc77a7f369f
---
-# GOTO (MASM)
+# GOTO
Transfers assembly to the line marked **:**_macrolabel_.
@@ -19,4 +19,5 @@ Transfers assembly to the line marked **:**_macrolabel_.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/group.md b/docs/assembler/masm/group.md
index f707c8e2e1..e056091514 100644
--- a/docs/assembler/masm/group.md
+++ b/docs/assembler/masm/group.md
@@ -1,18 +1,19 @@
---
title: "GROUP"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: ["group"]
helpviewer_keywords: ["GROUP directive"]
ms.assetid: 55dc9548-154e-486d-849a-135e4631eca9
---
# GROUP
-Add the specified *segments* to the group called *name*.
+(32-bit MASM only.) Add the specified *segments* to the group called *name*.
## Syntax
-> name GROUP segment [[, segment]]...
+> *name* **GROUP** *segment* ⟦__,__ *segment* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/if-masm.md b/docs/assembler/masm/if-masm.md
index bcce318367..9d4e9f31e3 100644
--- a/docs/assembler/masm/if-masm.md
+++ b/docs/assembler/masm/if-masm.md
@@ -1,28 +1,29 @@
---
title: "IF (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["if"]
helpviewer_keywords: ["IF directive"]
ms.assetid: 82e43712-4f0c-4bf6-90ce-0663e81af707
---
-# IF (MASM)
+# IF
Grants assembly of *ifstatements* if *expression1* is true (nonzero) or *elseifstatements* if *expression1* is false (0) and *expression2* is true.
## Syntax
-> IF *expression1*
-> *ifstatements*
-> [[ELSEIF *expression2*
-> *elseifstatements*]]
-> [[ELSE
-> *elsestatements*]]
-> ENDIF
+> **IF** *expression1*\
+> *if-statements*\
+> ⟦**ELSEIF** *expression2*\
+> *elseif-statements*⟧\
+> ⟦**ELSE**\
+> *else-statements*⟧\
+> **ENDIF**
## Remarks
-The following directives may be substituted for [ELSEIF](../../assembler/masm/elseif-masm.md): **ELSEIFB**, **ELSEIFDEF**, **ELSEIFDIF**, **ELSEIFDIFI**, **ELSEIFE**, **ELSEIFIDN**, **ELSEIFIDNI**, **ELSEIFNB**, and **ELSEIFNDEF**. Optionally, assembles *elsestatements* if the previous expression is false. Note that the expressions are evaluated at assembly time.
+The following directives may be substituted for [ELSEIF](elseif-masm.md): **ELSEIFB**, **ELSEIFDEF**, **ELSEIFDIF**, **ELSEIFDIFI**, **ELSEIFE**, **ELSEIFIDN**, **ELSEIFIDNI**, **ELSEIFNB**, and **ELSEIFNDEF**. Optionally, assembles *else-statements* if the previous expression is false. Note that the expressions are evaluated at assembly time.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/if2.md b/docs/assembler/masm/if2.md
index 6cf917e39d..8d0fc79f72 100644
--- a/docs/assembler/masm/if2.md
+++ b/docs/assembler/masm/if2.md
@@ -1,22 +1,39 @@
---
-title: "IF2"
-ms.date: "08/30/2018"
-f1_keywords: ["IF2"]
-helpviewer_keywords: ["IF2 directive"]
+title: "IF1 and IF2"
+ms.date: "11/21/2019"
+f1_keywords: ["IF2", "IF1"]
+helpviewer_keywords: ["IF2 directive", "IF2 directive"]
ms.assetid: a0f75564-b51b-4e39-ad3b-f7421e7ecad6
---
-# IF2
+# IF1 and IF2
-**IF** block is evaluated on every assembly pass if **OPTION:SETIF2** is **TRUE**.
+**IF1** block is evaluated on first assembly pass.
+
+**IF2** block is evaluated on every assembly pass if **OPTION:SETIF2** is **TRUE**.
## Syntax
-> IF2 *expression*
+> **IF1;;**
+
+> **IF2;;**
## Remarks
-See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+See [IF](if-masm.md) for complete syntax.
+
+Unlike version 5.1, MASM 6.1 and above do most of its work on its first pass, then performs as many subsequent passes as necessary. In contrast, MASM 5.1 always assembles in two source passes. As a result, you may need to revise or delete some pass-dependent constructs under MASM 6.1 and above.
+
+### Two-Pass Directives
+
+To assure compatibility, MASM 6.1 and above support 5.1 directives referring to two passes. These include **.ERR1**, **.ERR2**, **IF1**, **IF2**, **ELSEIF1**, and **ELSEIF2**. For second-pass constructs, you must specify [OPTION SETIF2](option-masm.md). Without **OPTION SETIF2**, the **IF2** and **.ERR2** directives cause an error:
+
+```output
+.ERR2 not allowed : single-pass assembler
+```
+
+MASM 6.1 and above handle first-pass constructs differently. It treats the **.ERR1** directive as **.ERR**, and the **IF1** directive as **IF**.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ifb.md b/docs/assembler/masm/ifb.md
index 994dcc58ea..6edfc832ad 100644
--- a/docs/assembler/masm/ifb.md
+++ b/docs/assembler/masm/ifb.md
@@ -1,6 +1,6 @@
---
title: "IFB"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["IFB"]
helpviewer_keywords: ["IFB directive"]
ms.assetid: 6395e313-e590-41b3-824c-577f200faf80
@@ -11,12 +11,13 @@ Grants assembly if *textitem* is blank.
## Syntax
-> IFB *textitem*
+> **IFB** *textitem*
## Remarks
-See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+See [IF](if-masm.md) for complete syntax.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ifdef.md b/docs/assembler/masm/ifdef.md
index 0fdca6f671..d6103e527a 100644
--- a/docs/assembler/masm/ifdef.md
+++ b/docs/assembler/masm/ifdef.md
@@ -1,6 +1,6 @@
---
title: "IFDEF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["IFDEF"]
helpviewer_keywords: ["IFDEF directive"]
ms.assetid: d8fadaa9-2b9c-44d7-a9e9-b103d16904f7
@@ -11,12 +11,13 @@ Grants assembly if *name* is a previously defined label, variable, or symbol.
## Syntax
-> IFDEF name
+> **IFDEF** *name*
## Remarks
-See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+See [IF](if-masm.md) for complete syntax.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ifdif.md b/docs/assembler/masm/ifdif.md
index f089dab51c..14c1d5d03c 100644
--- a/docs/assembler/masm/ifdif.md
+++ b/docs/assembler/masm/ifdif.md
@@ -2,7 +2,7 @@
title: "IFDIF, IFDIFI"
ms.date: "05/23/2019"
f1_keywords: ["IFDIF", "IFDIFI"]
-helpviewer_keywords: ["IFDIF[[I]] directive", "IFDIF directive", "IFDIFI directive"]
+helpviewer_keywords: ["IFDIF directive", "IFDIFI directive"]
ms.assetid: b85a553c-9098-4a57-a24f-596456eefa1c
---
# IFDIF, IFDIFI
@@ -11,12 +11,14 @@ Grants assembly if the text items are different.
## Syntax
-> **IFDIF**\[**I**] *textitem1*__,__ *textitem2*
+> **IFDIF** *textitem1*__,__ *textitem2*\
+> **IFDIFI** *textitem1*__,__ *textitem2*
## Remarks
-If **IFDIFI** is given, the comparison is case insensitive. See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+If **IFDIFI** is given, the comparison is case insensitive. See [IF](if-masm.md) for complete syntax.
## See also
-[Directives reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ife.md b/docs/assembler/masm/ife.md
index d543626dc9..a67d5b88ae 100644
--- a/docs/assembler/masm/ife.md
+++ b/docs/assembler/masm/ife.md
@@ -1,6 +1,6 @@
---
title: "IFE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["IFE"]
helpviewer_keywords: ["IFE directive"]
ms.assetid: bac5659d-9d2e-406d-89b7-e05b335ab0fd
@@ -11,12 +11,13 @@ Grants assembly if *expression* is false (0).
## Syntax
-> IFE expression
+> **IFE** *expression*
## Remarks
-See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+See [IF](if-masm.md) for complete syntax.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ifidn.md b/docs/assembler/masm/ifidn.md
index f4ec48c069..ca717384bf 100644
--- a/docs/assembler/masm/ifidn.md
+++ b/docs/assembler/masm/ifidn.md
@@ -1,8 +1,8 @@
---
title: "IFIDN, IFIDNI"
-ms.date: "05/23/2019"
-f1_keywords: ["IFIDN[[I]]", "IFIDN", "IFIDNI"]
-helpviewer_keywords: ["IFIDN[[I]] directive", "IFIDN directive", "IFIDNI directive"]
+ms.date: "12/17/2019"
+f1_keywords: ["IFIDN", "IFIDNI"]
+helpviewer_keywords: ["IFIDN directive", "IFIDNI directive"]
ms.assetid: 957893b1-1a30-4ffd-96f2-6663604a5058
---
# IFIDN, IFIDNI
@@ -11,12 +11,14 @@ Grants assembly if the text items are identical.
## Syntax
-> **IFIDN**\[**I**] *textitem1*__,__ *textitem2*
+> **IFIDN** *textitem1*__,__ *textitem2*\
+> **IFIDNI** *textitem1*__,__ *textitem2*
## Remarks
-If **IFIDNI** is given, the comparison is case insensitive. See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+If **IFIDNI** is given, the comparison is case insensitive. See [IF](if-masm.md) for complete syntax.
## See also
-[Directives reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ifnb.md b/docs/assembler/masm/ifnb.md
index b15fd2092c..823f6d148d 100644
--- a/docs/assembler/masm/ifnb.md
+++ b/docs/assembler/masm/ifnb.md
@@ -1,6 +1,6 @@
---
title: "IFNB"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["IFNB"]
helpviewer_keywords: ["IFNB directive"]
ms.assetid: 9d161ddb-75b7-4cfe-92ef-370c6ef0af62
@@ -11,12 +11,13 @@ Grants assembly if *textitem* is not blank.
## Syntax
-> IFNB textitem
+> **IFNB** *textitem*
## Remarks
-See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+See [IF](if-masm.md) for complete syntax.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ifndef.md b/docs/assembler/masm/ifndef.md
index 4e764f6f08..e4c215bcae 100644
--- a/docs/assembler/masm/ifndef.md
+++ b/docs/assembler/masm/ifndef.md
@@ -1,6 +1,6 @@
---
title: "IFNDEF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["IFNDEF"]
helpviewer_keywords: ["IFNDEF directive"]
ms.assetid: 8c93efc4-9375-45b6-8583-95f0c92f2a3a
@@ -11,12 +11,13 @@ Grants assembly if *name* has not been defined.
## Syntax
-> IFNDEF name
+> **IFNDEF** *name*
## Remarks
-See [IF](../../assembler/masm/if-masm.md) for complete syntax.
+See [IF](if-masm.md) for complete syntax.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/include-masm.md b/docs/assembler/masm/include-masm.md
index e2c89c7983..43bfe79ee5 100644
--- a/docs/assembler/masm/include-masm.md
+++ b/docs/assembler/masm/include-masm.md
@@ -1,17 +1,17 @@
---
title: "INCLUDE (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["include"]
helpviewer_keywords: ["INCLUDE directive"]
ms.assetid: 1c7964ee-715c-414e-a45e-74af93476eb4
---
-# INCLUDE (MASM)
+# INCLUDE
Inserts source code from the source file given by *filename* into the current source file during assembly.
## Syntax
-> INCLUDE filename
+> **INCLUDE** *filename*
## Remarks
@@ -19,4 +19,5 @@ The *filename* must be enclosed in angle brackets if it includes a backslash, se
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/includelib-masm.md b/docs/assembler/masm/includelib-masm.md
index 2424df6175..0bab99df71 100644
--- a/docs/assembler/masm/includelib-masm.md
+++ b/docs/assembler/masm/includelib-masm.md
@@ -1,17 +1,17 @@
---
title: "INCLUDELIB (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["INCLUDELIB"]
helpviewer_keywords: ["INCLUDELIB directive"]
ms.assetid: 5455d004-8202-4b57-93f3-9aa66f133a2d
---
-# INCLUDELIB (MASM)
+# INCLUDELIB
Informs the linker that the current module should be linked with *libraryname*.
## Syntax
-> INCLUDELIB libraryname
+> **INCLUDELIB** *libraryname*
## Remarks
@@ -19,4 +19,5 @@ The *libraryname* must be enclosed in angle brackets if it includes a backslash,
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/instr.md b/docs/assembler/masm/instr.md
index 72eb639b2c..d47b071887 100644
--- a/docs/assembler/masm/instr.md
+++ b/docs/assembler/masm/instr.md
@@ -1,6 +1,6 @@
---
title: "INSTR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["InStr"]
helpviewer_keywords: ["INSTR directive"]
ms.assetid: fc37f6a2-3c95-47b2-b6bb-1066edd25994
@@ -11,12 +11,13 @@ Finds the first occurrence of *textitem2* in *textitem1*.
## Syntax
-> *name* INSTR [[*position*,]] *textitem1*, *textitem2*
+> *name* **INSTR** ⟦*position*__,__⟧ *textitem1*__,__ *textitem2*
## Remarks
-The starting *position* is optional. Each text item can be a literal string, a constant preceded by a `%`, or the string returned by a macro function.
+The starting *position* is optional. Each text item can be a literal string, a constant preceded by a **%**, or the string returned by a macro function.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/invoke.md b/docs/assembler/masm/invoke.md
index dd90f7c147..8c15a4cd25 100644
--- a/docs/assembler/masm/invoke.md
+++ b/docs/assembler/masm/invoke.md
@@ -1,22 +1,23 @@
---
title: "INVOKE"
-ms.date: "08/30/2018"
+ms.date: "11/05/2019"
f1_keywords: ["Invoke"]
helpviewer_keywords: ["INVOKE directive"]
ms.assetid: 12d9bb40-33b9-411e-b801-45a1d675967e
---
# INVOKE
-Calls the procedure at the address given by *expression*, passing the arguments on the stack or in registers according to the standard calling conventions of the language type.
+(32-bit MASM only.) Calls the procedure at the address given by *expression*, passing the arguments on the stack or in registers according to the standard calling conventions of the language type.
## Syntax
-> INVOKE *expression* [[, *arguments*]]
+> **INVOKE** *expression* ⟦__,__ *argument* ...⟧
## Remarks
-Each argument passed to the procedure may be an expression, a register pair, or an address expression (an expression preceded by `ADDR`).
+Each argument passed to the procedure may be an expression, a register pair, or an address expression (an expression preceded by **ADDR**).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/irp.md b/docs/assembler/masm/irp.md
index 4a1d9f2a13..50d71dd808 100644
--- a/docs/assembler/masm/irp.md
+++ b/docs/assembler/masm/irp.md
@@ -1,6 +1,6 @@
---
title: "IRP"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["IRP"]
helpviewer_keywords: ["IRP directive"]
ms.assetid: 055f746d-f422-43d1-b73d-d38979c593cb
@@ -9,12 +9,13 @@ ms.assetid: 055f746d-f422-43d1-b73d-d38979c593cb
## Syntax
-> IRP
+> **IRP**
## Remarks
-See [FOR](../../assembler/masm/for-masm.md).
+See [FOR](for-masm.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/irpc.md b/docs/assembler/masm/irpc.md
index 8428515e2b..b88b03d7c6 100644
--- a/docs/assembler/masm/irpc.md
+++ b/docs/assembler/masm/irpc.md
@@ -1,6 +1,6 @@
---
title: "IRPC"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["IRPC"]
helpviewer_keywords: ["IRPC directive"]
ms.assetid: 9f7d848c-fc5a-40e2-abf0-28db783e007d
@@ -9,12 +9,13 @@ ms.assetid: 9f7d848c-fc5a-40e2-abf0-28db783e007d
## Syntax
-> IRPC
+> **IRPC**
## Remarks
-See [FORC](../../assembler/masm/forc.md).
+See [FORC](forc.md).
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/label-masm.md b/docs/assembler/masm/label-masm.md
index 0af37602a5..075e99f073 100644
--- a/docs/assembler/masm/label-masm.md
+++ b/docs/assembler/masm/label-masm.md
@@ -1,20 +1,21 @@
---
title: "LABEL (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Label"]
helpviewer_keywords: ["LABEL directive"]
ms.assetid: 39ec44e8-91e6-4f3c-8cf0-b66479974e42
---
-# LABEL (MASM)
+# LABEL
-Creates a new label by assigning the current location-counter value and the given *type* to *name*.
+Creates a new label by assigning the current location-counter value and the given *qualifiedType* to *name*.
## Syntax
-> *name* LABEL *type*
+> *name* **LABEL** *qualifiedType*
>
-> *name* LABEL \[NEAR | FAR | PROC] PTR \[*type*]
+> *name* **LABEL** ⟦**NEAR** | **FAR** | **PROC**⟧ **PTR** ⟦*qualifiedType*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/local-masm.md b/docs/assembler/masm/local-masm.md
index fb77be479d..0aa48121d0 100644
--- a/docs/assembler/masm/local-masm.md
+++ b/docs/assembler/masm/local-masm.md
@@ -1,24 +1,25 @@
---
title: "LOCAL (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["Local"]
helpviewer_keywords: ["LOCAL directive"]
ms.assetid: 76147e2d-23ca-4f1e-8817-81428becd113
---
-# LOCAL (MASM)
+# LOCAL
In the first directive, within a macro, **LOCAL** defines labels that are unique to each instance of the macro.
## Syntax
-> LOCAL *localname* \[, *localname*] ...
+> **LOCAL** *localId* ⟦, *localId* ...⟧
>
-> LOCAL *label* \[ __\[__*count*__]__ ] \[__:__*type*] \[__,__ *label* \[ __\[__*count*__]__ ] \[*type*] ] ...
+> **LOCAL** *labelId* ⟦ __\[__*count*__]__ ⟧ ⟦__:__*qualifiedType*⟧ ⟦__,__ *labelId* ⟦ __\[__*count*__]__ ⟧ ⟦*qualifiedType*⟧ ...⟧
## Remarks
-In the second directive, within a procedure definition (**PROC**), **LOCAL** creates stack-based variables that exist for the duration of the procedure. The *label* may be a simple variable or an array containing *count* elements.
+In the second directive, within a procedure definition (**PROC**), **LOCAL** creates stack-based variables that exist for the duration of the procedure. The *labelId* may be a simple variable or an array containing *count* elements, where *count* is a constant expression.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/macro.md b/docs/assembler/masm/macro.md
index 67ad1fb30f..f3cdc9851c 100644
--- a/docs/assembler/masm/macro.md
+++ b/docs/assembler/masm/macro.md
@@ -1,6 +1,6 @@
---
title: "MACRO"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["MACRO"]
helpviewer_keywords: ["MACRO directive"]
ms.assetid: 89434f7c-bc2c-4e91-8940-fe2db8785233
@@ -11,9 +11,11 @@ Marks a macro block called *name* and establishes *parameter* placeholders for a
## Syntax
-> *name* MACRO [[*parameter* [[:REQ | :=*default* | :VARARG]] ]] ...
-> *statements*
-> ENDM [[*value*]]
+> *name* **MACRO** ⟦*parameter* ⟦**:REQ** | :=*default* | *args* **:VARARG**⟧ ...⟧\
+> *statements*\
+⟦**GOTO** :*macrolabelId*⟧\
+> ⟦**EXITM**⟧\
+> **ENDM** ⟦*value*⟧
## Remarks
@@ -21,4 +23,8 @@ A macro function returns *value* to the calling statement.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[GOTO (MASM)](goto-masm.md)\
+[ENDM](endm.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
+
diff --git a/docs/assembler/masm/masm-bnf-grammar.md b/docs/assembler/masm/masm-bnf-grammar.md
new file mode 100644
index 0000000000..4f4db12500
--- /dev/null
+++ b/docs/assembler/masm/masm-bnf-grammar.md
@@ -0,0 +1,1072 @@
+---
+title: "Microsoft Macro Assembler BNF Grammar"
+description: "BNF description of MASM for x64."
+ms.date: "12/17/2019"
+helpviewer_keywords: ["MASM (Microsoft Macro Assembler), BNF reference"]
+---
+
+# Microsoft Macro Assembler BNF Grammar
+
+This page contains a BNF description of the MASM grammar. It is provided as a supplement to the reference topics and is not guaranteed to be complete. Please consult the reference topics for full information on keywords, parameters, operations and so on.
+
+To illustrate the use of the BNF, the following diagram shows the definition of the TYPEDEF directive, starting with the nonterminal *typedefDir*.
+
+![MASM BNF Example](media/bnf.png)
+
+The entries under each horizontal brace are terminals (such as **NEAR16**, **NEAR32**, **FAR16**, and **FAR32**) or nonterminals (such as *qualifier*, *qualifiedType*, *distance*, and *protoSpec*) that can be further defined. Each italicized nonterminal in the *typedefDir* definition is also an entry in the BNF. Three vertical dots indicate a branching definition for a nonterminal that, for the sake of simplicity, this figure does not illustrate.
+
+The BNF grammar allows recursive definitions. For example, the grammar uses qualifiedType as a possible definition for qualifiedType, which is also a component of the definition for qualifier. The "|" symbol specifies a choice between alternate expressions, for example *endOfLine* | *comment*. Double braces specify an optional parameter, for example ⟦ *macroParmList* ⟧. The brackets do not actually appear in the source code.
+
+## MASM Nonterminals
+
+*;;*\
+ *endOfLine* | *comment*
+
+*=Dir*\
+ *id* = *immExpr* ;;
+
+*addOp*\
+ + | -
+
+*aExpr*\
+ *term* | *aExpr* && *term*
+
+*altId*\
+ *id*
+
+*arbitraryText*\
+ *charList*
+
+*asmInstruction*\
+ *mnemonic* ⟦ *exprList* ⟧
+
+*assumeDir*\
+ **ASSUME** *assumeList* ;;\
+ | **ASSUME NOTHING** ;;
+
+*assumeList*\
+ *assumeRegister* | *assumeList* , *assumeRegister*\
+
+*assumeReg*\
+ *register* : *assumeVal*
+
+*assumeRegister*\
+ *assumeSegReg* | *assumeReg*
+
+*assumeSegReg*\
+ *segmentRegister* : *assumeSegVal*
+
+*assumeSegVal*\
+ *frameExpr* | **NOTHING** | **ERROR**
+
+*assumeVal*\
+ *qualifiedType* | **NOTHING** | **ERROR**
+
+*bcdConst*\
+ ⟦ *sign* ⟧ *decNumber*
+
+*binaryOp*\
+ == | != | >= | <= | > | < | &
+
+*bitDef*\
+ *bitFieldId* : *bitFieldSize* ⟦ = *constExpr* ⟧
+
+*bitDefList*\
+ *bitDef* | *bitDefList* , ⟦ ;; ⟧ *bitDef*
+
+*bitFieldId*\
+ *id*
+
+*bitFieldSize*\
+ *constExpr*
+
+*blockStatements*\
+ *directiveList*\
+ | **.CONTINUE** **.IF** *cExpr* ⟧\
+ | **.BREAK** ⟦ **.IF** *cExpr* ⟧
+
+*bool*\
+ **TRUE** | **FALSE**
+
+*byteRegister*\
+ AL | AH | CL | CH | DL | DH | BL | BH | R8B | R9B | R10B | R11B | R12B | R13B | R14B | R15B
+
+*cExpr*\
+ *aExpr* | *cExpr* || *aExpr*
+
+*character*\
+ Any character with ordinal in the range 0–255 except linefeed (10).
+
+*charList*\
+ *character* | *charList* character
+
+*className*\
+ *string*
+
+*commDecl*\
+ ⟦ *nearfar* ⟧ ⟦ *langType* ⟧ *id* : *commType*\
+ ⟦ : *constExpr* ⟧
+
+*commDir*\
+ **COMM**\
+ *commList* ;;
+
+*comment*\
+ ; *text* ;;
+
+*commentDir*\
+ **COMMENT** *delimiter*\
+ *text*\
+ *text* *delimiter* *text* ;;
+
+*commList*\
+ *commDecl* | *commList* , *commDecl*
+
+*commType*\
+ *type* | *constExpr*
+
+*constant*\
+ *digits* ⟦ *radixOverride* ⟧
+
+*constExpr*\
+ *expr*
+
+*contextDir*\
+ **PUSHCONTEXT** *contextItemList* ;;\
+ **POPCONTEXT** *contextItemList* ;;
+
+*contextItem*\
+ **ASSUMES** | **RADIX** | **LISTING** | **CPU** | **ALL**
+
+*contextItemList*\
+ *contextItem* | *contextItemList* , *contextItem*
+
+*controlBlock*\
+ *whileBlock* | *repeatBlock*
+
+*controlDir*\
+ *controlIf* | *controlBlock*
+
+*controlElseif*\
+ **.ELSEIF**
+ *cExpr* ;;\
+ *directiveList* \
+ ⟦ *controlElseif* ⟧
+
+*controlIf*\
+ **.IF**
+ *cExpr* ;;\
+ *directiveList*\
+ ⟦ *controlElseif* ⟧\
+ ⟦ **.ELSE** ;;\
+ [*directiveList*⟧\
+ **.ENDIF** ;;
+
+*coprocessor*\
+ .8087 | .287 | .387 | .NO87
+
+*crefDir*\
+ *crefOption* ;;
+
+*crefOption*\
+ **.CREF**\
+ | **.XCREF** ⟦ *idList* ⟧\
+ | **.NOCREF** ⟦ *idList* ⟧
+
+*cxzExpr*\
+ *expr*\
+ | ! *expr*\
+ | *expr* == expr\
+ | *expr* != expr
+
+*dataDecl*\
+ DB | DW | DD | DF | DQ | DT | *dataType* | *typeId*
+
+*dataDir*\
+ ⟦ *id* ⟧ *dataItem* ;;
+
+*dataItem*\
+ *dataDecl* *scalarInstList*\
+ | *structTag* *structInstList*\
+ | *typeId* *structInstList*\
+ | *unionTag* *structInstList*\
+ | *recordTag* *recordInstList*
+
+*dataType*\
+ BYTE | SBYTE | WORD | SWORD | DWORD | SDWORD | FWORD | QWORD | SQWORD | TBYTE | OWORD | REAL4 | REAL8 | REAL10 | MMWORD | XMMWORD | YMMWORD
+
+*decdigit*\
+ 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9
+
+*decNumber*\
+ *decdigit*\
+ | *decNumber* *decdigit*
+
+*delimiter*\
+ Any character except *whiteSpaceCharacter*
+
+*digits*\
+ *decdigit*\
+ | *digits* *decdigit*\
+ | *digits* hexdigit
+
+*directive*\
+ *generalDir* | *segmentDef*
+
+*directiveList*\
+ *directive* | *directiveList* *directive*
+
+*distance*\
+ *nearfar* | **NEAR16** | **NEAR32** | **FAR16** | **FAR32**
+
+*e01*\
+ e01 *orOp* *e02* | *e02*
+
+*e02*\
+ e02 **AND** *e03* | *e03*
+
+*e03*\
+ **NOT** *e04* | *e04*
+
+*e04*\
+ *e04* *relOp* *e05* | *e05*
+
+*e05*\
+ *e05* *addOp* *e06* | *e06*
+
+*e06*\
+ *e06* *mulOp* *e07* | *e06* *shiftOp* *e07* | *e07*
+
+*e07*\
+ *e07* *addOp* *e08* | *e08*
+
+*e08*\
+ **HIGH** *e09*\
+ | **LOW** *e09*\
+ | **HIGHWORD** *e09*\
+ | **LOWWORD** *e09*\
+ | *e09*
+
+*e09*\
+ **OFFSET** *e10*\
+ | **SEG** *e10*\
+ | **LROFFSET** *e10*\
+ | **TYPE** *e10*\
+ | **THIS** *e10*\
+ | *e09* **PTR** *e10*\
+ | *e09* : *e10*\
+ | *e10*
+
+*e10*\
+ *e10* . *e11*\
+ | *e10* ⟦ *expr* ⟧\
+ | *e11*
+
+*e11*\
+ ( *expr* )\
+ | ⟦ *expr* ⟧\
+ | **WIDTH** *id*\
+ | **MASK** *id*\
+ | **SIZE** *sizeArg*\
+ | **SIZEOF** *sizeArg*\
+ | **LENGTH** *id*\
+ | **LENGTHOF** *id*\
+ | *recordConst*\
+ | *string*\
+ | *constant*\
+ | *type*\
+ | *id*\
+ | **$**\
+ | *segmentRegister*\
+ | *register*\
+ | **ST**\
+ | **ST** ( *expr* )
+
+*echoDir*\
+ **ECHO**\
+ *arbitraryText* ;;\
+%**OUT** *arbitraryText* ;;\
+
+*elseifBlock*\
+ *elseifStatement* ;;\
+ *directiveList*\
+ ⟦ *elseifBlock* ⟧\
+
+*elseifStatement*\
+ **ELSEIF** *constExpr*\
+ | **ELSEIFE** *constExpr*\
+ | **ELSEIFB** *textItem*\
+ | **ELSEIFNB** *textItem*\
+ | **ELSEIFDEF** *id*\
+ | **ELSEIFNDEF** *id*\
+ | **ELSEIFDIF** *textItem* , *textItem*\
+ | **ELSEIFDIFI** *textItem* , *textItem*\
+ | **ELSEIFIDN** *textItem* , *textItem*\
+ | **ELSEIFIDNI** *textItem* , *textItem*\
+ | **ELSEIF1**\
+ | **ELSEIF2**
+
+*endDir*\
+ **END** ⟦ *immExpr* ⟧ ;;
+
+*endpDir*\
+ *procId* **ENDP** ;;
+
+*endsDir*\
+ *id* **ENDS** ;;
+
+*equDir*\
+ *textMacroId* **EQU** *equType* ;;
+
+*equType*\
+ *immExpr* | *textLiteral*
+
+*errorDir*\
+ *errorOpt* ;;
+
+*errorOpt*\
+ **.ERR** ⟦ *textItem* ⟧\
+ | **.ERRE** *constExpr* ⟦ *optText* ⟧\
+ | **.ERRNZ** *constExpr* ⟦ *optText* ⟧\
+ | **.ERRB** *textItem* ⟦ *optText* ⟧\
+ | **.ERRNB** *textItem* ⟦ *optText* ⟧\
+ | **.ERRDEF** *id* ⟦ *optText* ⟧\
+ | **.ERRNDEF** *id* ⟦ *optText* ⟧\
+ | **.ERRDIF** *textItem* , *textItem* ⟦ *optText* ⟧\
+ | **.ERRDIFI** *textItem* , *textItem* ⟦ *optText* ⟧\
+ | **.ERRIDN** *textItem* , *textItem* ⟦ *optText* ⟧\
+ | **.ERRIDNI** *textItem* , *textItem* ⟦ *optText* ⟧\
+ | **.ERR1** ⟦ *textItem* ⟧\
+ | **.ERR2** ⟦ *textItem* ⟧
+
+*exitDir*\
+ **.EXIT**
+ ⟦ *expr* ⟧ ;;
+
+*exitmDir*\
+ : EXITM | EXITM *textItem*
+
+*exponent*\
+ E ⟦ *sign* ⟧ *decNumber*
+
+*expr*\
+ **SHORT** *e05*\
+ | **.TYPE** e01\
+ | **OPATTR** *e01*\
+ | *e01*
+
+*exprList*\
+ *expr* | *exprList* , *expr*
+
+*externDef*\
+ ⟦ *langType* ⟧ *id* ⟦ ( *altId* ) ⟧ : *externType*
+
+*externDir*\
+ *externKey* *externList* ;;
+
+*externKey*\
+ **EXTRN** | **EXTERN** | **EXTERNDEF**
+
+*externList*\
+ *externDef* | *externList* , ⟦ ;; ⟧ *externDef*
+
+*externType*\
+ **ABS** | *qualifiedType*
+
+*fieldAlign*\
+ *constExpr*
+
+*fieldInit*\
+ ⟦ *initValue* ⟧ | *structInstance*
+
+*fieldInitList*\
+ *fieldInit* | *fieldInitList* , ⟦ ;; ⟧ *fieldInit*
+
+*fileChar*\
+ *delimiter*
+
+*fileCharList*\
+ *fileChar* | *fileCharList* *fileChar*
+
+*fileSpec*\
+ *fileCharList* | *textLiteral*
+
+*flagName*\
+ **ZERO?** | **CARRY?** | **OVERFLOW?** | **SIGN?** | **PARITY?**
+
+*floatNumber*\
+ ⟦ *sign* ⟧ *decNumber* . ⟦ *decNumber* ⟧ ⟦ *exponent* ⟧\
+ | *digits* R | *digits* r
+
+*forcDir*\
+ **FORC** | **IRPC**
+
+*forDir*\
+ **FOR** | **IRP**
+
+*forParm*\
+ *id* ⟦ : *forParmType* ⟧
+
+*forParmType*\
+ **REQ** | = *textLiteral*
+
+*fpuRegister*\
+ **ST** *expr*
+
+*frameExpr*\
+ **SEG** *id*\
+ | **DGROUP** : *id*\
+ | *segmentRegister* : *id*\
+ | *id*
+
+*generalDir*\
+ *modelDir* | *segOrderDir* | *nameDir*\
+ | *includeLibDir* | *commentDir*\
+ | *groupDir* | *assumeDir*\
+ | *structDir* | *recordDir* | *typedefDir*\
+ | *externDir* | *publicDir* | *commDir* | *protoTypeDir*\
+ | *equDir* | =Dir | *textDir*\
+ | *contextDir* | *optionDir* | *processorDir*\
+ | *radixDir*\
+ | *titleDir* | *pageDir* | *listDir*\
+ | *crefDir* | *echoDir*\
+ | *ifDir* | *errorDir* | *includeDir*\
+ | *macroDir* | *macroCall* | *macroRepeat* | *purgeDir*\
+ | *macroWhile* | *macroFor* | *macroForc*\
+ | *aliasDir*
+
+*gpRegister*\
+ AX | EAX | CX | ECX | DX | EDX | BX | EBX | DI | EDI | SI | ESI | BP | EBP | SP | ESP | RSP | R8W | R8D | R9W | R9D | R12D | R13W | R13D | R14W | R14D
+
+*groupDir*\
+ *groupId* **GROUP** *segIdList*
+
+*groupId*\
+ *id*
+
+*hexdigit*\
+ a | b | c | d | e | f | A | B | C | D | E | F
+
+*id*\
+ The first character of the identifier can be an upper or lower-case alphabetic character (`[A–Za-z]`) or any of these four characters: `@ _ $ ?` The remaining characters can be any of those same characters or a decimal digit (`[0–9]`). Maximum length is 247 characters.
+
+*idList*\
+ *id* | *idList* , *id*
+
+*ifDir*\
+ *ifStatement* ;;\
+ *directiveList*\
+ ⟦ *elseifBlock* ⟧\
+ ⟦ **ELSE** ;; \
+ *directiveList* ⟧ ;;\
+
+*ifStatement*\
+ **IF** *constExpr*\
+ | **IFE** *constExpr*\
+ | **IFB** *textItem*\
+ | **IFNB** *textItem*\
+ | **IFDEF** *id*\
+ | **IFNDEF** *id*\
+ | **IFDIF** *textItem* , *textItem*\
+ | **IFDIFI** *textItem* , *textItem*\
+ | **IFIDN** *textItem* , *textItem*\
+ | **IFIDNI** *textItem* , *textItem*\
+ | **IF1**\
+ | **IF2**
+
+*immExpr*\
+ *expr*
+
+*includeDir*\
+ **INCLUDE** *fileSpec* ;;
+
+*includeLibDir*\
+ **INCLUDELIB** *fileSpec* ;;
+
+*initValue*\
+ *immExpr*\
+ | *string*\
+ | ?\
+ | *constExpr* **DUP** ( *scalarInstList* )\
+ | *floatNumber*\
+ | *bcdConst*
+
+*inSegDir*\
+ ⟦ *labelDef* ⟧ *inSegmentDir*
+
+*inSegDirList*\
+ *inSegDir* | *inSegDirList* *inSegDir*
+
+*inSegmentDir*\
+ *instruction*\
+ | *dataDir*\
+ | *controlDir*\
+ | *startupDir*\
+ | *exitDir*\
+ | *offsetDir*\
+ | *labelDir*\
+ | *procDir* ⟦ *localDirList* ⟧ ⟦ *inSegDirList* ⟧ *endpDir*\
+ | *invokeDir*\
+ | *generalDir*
+
+*instrPrefix*\
+ **REP** | **REPE** | **REPZ** | **REPNE** | **REPNZ** | **LOCK**
+
+*instruction*\
+ ⟦ *instrPrefix* ⟧ *asmInstruction*
+
+*invokeArg*\
+ *register* :: *register* | *expr* | **ADDR** *expr*
+
+*invokeDir*\
+ **INVOKE** *expr* ⟦ , ⟦ ;; ⟧ *invokeList* ⟧ ;;
+
+*invokeList*\
+ *invokeArg* | *invokeList* , ⟦ ;; ⟧ *invokeArg*
+
+*keyword*\
+ Any reserved word.
+
+*keywordList*\
+ *keyword* | *keyword* *keywordList*
+
+*labelDef*\
+ *id* : | *id* :: | @@:
+
+*labelDir*\
+ *id* **LABEL** *qualifiedType* ;;
+
+*langType*\
+ **C** | **PASCAL** | **FORTRAN** | **BASIC** | **SYSCALL** | **STDCALL**
+
+*listDir*\
+ *listOption* ;;
+
+*listOption*\
+ **.LIST**\
+ | **.NOLIST**\
+ | **.XLIST**\
+ | **.LISTALL**\
+ | **.LISTIF**\
+ | **.LFCOND**\
+ | **.NOLISTIF**\
+ | **.SFCOND**\
+ | **.TFCOND**\
+ | **.LISTMACROALL** | **.LALL**\
+ | **.NOLISTMACRO** | **.SALL**\
+ | **.LISTMACRO** | **.XALL**\
+
+*localDef*\
+ **LOCAL** *idList* ;;
+
+*localDir*\
+ **LOCAL** *parmList* ;;
+
+*localDirList*\
+ *localDir* | *localDirList* *localDir*
+
+*localList*\
+ *localDef* | *localList* *localDef*
+
+*macroArg*\
+ % *constExpr*\
+ | %*textMacroId*\
+ | %*macroFuncId* ( *macroArgList* )\
+ | *string*\
+ | *arbitraryText*\
+ | < *arbitraryText* >
+
+*macroArgList*\
+ *macroArg* | *macroArgList* , *macroArg*
+
+*macroBody*\
+ ⟦ *localList* ⟧ *macroStmtList*
+
+*macroCall*\
+ *id* *macroArgList* ;;\
+ | *id* ( *macroArgList* )
+
+*macroDir*\
+ *id* **MACRO** ⟦ *macroParmList* ⟧ ;;\
+ *macroBody*\
+ **ENDM** ;;
+
+*macroFor*\
+ *forDir* *forParm* , < *macroArgList* > ;;\
+ *macroBody*\
+ **ENDM** ;;
+
+*macroForc*\
+ *forcDir* *id* , *textLiteral* ;;\
+ *macroBody*\
+ **ENDM** ;;
+
+*macroFuncId*\
+ *id*
+
+*macroId*\
+ *macroProcId* | *macroFuncId*
+
+*macroIdList*\
+ *macroId* | *macroIdList* , *macroId*
+
+*macroLabel*\
+ *id*
+
+*macroParm*\
+ *id* ⟦ : *parmType* ⟧
+
+*macroParmList*\
+ *macroParm* | *macroParmList* , ⟦ ;; ⟧ *macroParm*
+
+*macroProcId*\
+ *id*
+
+*macroRepeat*\
+ *repeatDir* *constExpr* ;;\
+ *macroBody*\
+ **ENDM** ;;
+
+*macroStmt*\
+ *directive* \
+ | *exitmDir*\
+ | : *macroLabel*\
+ | **GOTO**\
+ *macroLabel*
+
+*macroStmtList*\
+ *macroStmt* ;;\
+ | *macroStmtList* *macroStmt* ;;\
+
+*macroWhile*\
+ **WHILE** *constExpr* ;;\
+ *macroBody*\
+ **ENDM** ;;
+
+*mapType*\
+ **ALL** | **NONE** | **NOTPUBLIC**
+
+*memOption*\
+ **TINY** | **SMALL** | **MEDIUM** | **COMPACT** | **LARGE** | **HUGE** | **FLAT**
+
+*mnemonic*\
+ Instruction name.
+
+*modelDir*\
+ **.MODEL**\
+ *memOption* ⟦ , *modelOptlist* ⟧ ;;
+
+*modelOpt*\
+ *langType* | *stackOption*
+
+*modelOptlist*\
+ *modelOpt* | *modelOptlist* , *modelOpt*
+
+*module*\
+ ⟦ *directiveList* ⟧ *endDir*
+
+*mulOp*\
+ \* | / | **MOD**
+
+*nameDir*\
+ **NAME**\
+ *id* ;;\
+
+*nearfar*\
+ **NEAR** | **FAR**
+
+*nestedStruct*\
+ *structHdr* ⟦ *id* ⟧ ;;\
+ *structBody*\
+ **ENDS** ;;\
+
+*offsetDir*\
+ *offsetDirType* ;;
+
+*offsetDirType*\
+ **EVEN** | **ORG** *immExpr* | **ALIGN** ⟦ *constExpr* ⟧
+
+*offsetType*\
+ **GROUP** | **SEGMENT** | **FLAT**
+
+*oldRecordFieldList*\
+ ⟦ *constExpr* ⟧ | *oldRecordFieldList* , ⟦ *constExpr* ⟧
+
+*optionDir*\
+ **OPTION** *optionList* ;;
+
+*optionItem*\
+ **CASEMAP** : *mapType*\
+ | **DOTNAME** | **NODOTNAME**\
+ | **EMULATOR** | **NOEMULATOR**\
+ | **EPILOGUE** : *macroId*\
+ | **EXPR16** | **EXPR32**\
+ | **LANGUAGE** : *langType*\
+ | **LJMP**
+| **NOLJMP**\
+ | **M510** | **NOM510**\
+ | **NOKEYWORD** : < *keywordList* >\
+ | **NOSIGNEXTEND**\
+ | **OFFSET** : *offsetType*\
+ | **OLDMACROS** | **NOOLDMACROS**\
+ | **OLDSTRUCTS** | **NOOLDSTRUCTS**\
+ | **PROC** : *oVisibility*\
+ | **PROLOGUE** : *macroId*\
+ | **READONLY** | **NOREADONLY**\
+ | **SCOPED** | **NOSCOPED**\
+ | **SEGMENT** : *segSize*\
+ | **SETIF2** : bool
+
+*optionList*\
+ *optionItem* | *optionList* , ⟦ ;; ⟧ *optionItem*
+
+*optText*\
+ , *textItem*
+
+*orOp*\
+ **OR** | **XOR**
+
+*oVisibility*\
+ **PUBLIC** | **PRIVATE** | **EXPORT**
+
+*pageDir*\
+ **PAGE** ⟦ *pageExpr* ⟧ ;;
+
+*pageExpr*\
+ \+ | ⟦ *pageLength* ⟧ ⟦ , *pageWidth* ⟧
+
+*pageLength*\
+ *constExpr*
+
+*pageWidth*\
+ *constExpr*
+
+*parm*\
+ *parmId* ⟦ : *qualifiedType* ⟧ | *parmId* ⟦ *constExpr* ⟧ ⟦ : *qualifiedType* ⟧
+
+*parmId*\
+ *id*
+
+*parmList*\
+ *parm* | *parmList* , ⟦ ;; ⟧ *parm*
+
+*parmType*\
+ **REQ** | = *textLiteral* | **VARARG**
+
+*pOptions*\
+ ⟦ *distance* ⟧ ⟦ *langType* ⟧ ⟦ *oVisibility* ⟧
+
+*primary*\
+ *expr* *binaryOp* *expr* | *flagName* | *expr*
+
+*procDir*\
+ *procId* **PROC**\
+ ⟦ *pOptions* ⟧ ⟦ < *macroArgList* > ⟧\
+ ⟦ *usesRegs* ⟧ ⟦ *procParmList* ⟧
+
+*processor*\
+ | .386 | .386p | .486 | .486P\
+ | .586 | .586P | .686 | .686P | .387
+
+*processorDir*\
+ *processor* ;;\
+ | *coprocessor* ;;
+
+*procId*\
+ *id*
+
+*procItem*\
+ *instrPrefix* | *dataDir* | *labelDir* | *offsetDir* | *generalDir*
+
+*procParmList*\
+ ⟦ , ⟦ ;; ⟧ *parmList* ⟧\
+ ⟦ , ⟦ ;; ⟧ *parmId* :VARARG⟧
+
+*protoArg*\
+ ⟦ *id* ⟧ : *qualifiedType*
+
+*protoArgList*\
+ ⟦ , ⟦ ;; ⟧ *protoList* ⟧\
+ ⟦ , ⟦ ;; ⟧ ⟦ *id* ⟧ :VARARG ⟧
+
+*protoList*\
+ *protoArg*\
+ | *protoList* , ⟦ ;; ⟧ *protoArg*
+
+*protoSpec*\
+ ⟦ *distance* ⟧ ⟦ *langType* ⟧ ⟦ *protoArgList* ⟧ | *typeId*
+
+*protoTypeDir*\
+ *id* **PROTO** *protoSpec*
+
+*pubDef*\
+ ⟦ *langType* ⟧ *id*
+
+*publicDir*\
+ **PUBLIC** *pubList* ;;
+
+*pubList*\
+ *pubDef* | *pubList* , ⟦ ;; ⟧ *pubDef*
+
+*purgeDir*\
+ **PURGE** *macroIdList*
+
+*qualifiedType*\
+ *type* | ⟦ *distance* ⟧ **PTR** ⟦ *qualifiedType* ⟧
+
+*qualifier*\
+ *qualifiedType* | **PROTO** *protoSpec*
+
+*quote*\
+ “ | ‘
+
+*qwordRegister*\
+ RAX | RCX | RDX | RBX | RDI | RSI | RBP | R8 | R9 | R10 | R11 | R12 | R13 | R14 | R15
+
+*radixDir*\
+ **.RADIX** *constExpr* ;;
+
+*radixOverride*\
+ h | o | q | t | y | H | O | Q | T | Y
+
+*recordConst*\
+ *recordTag* { *oldRecordFieldList* } | *recordTag* < *oldRecordFieldList* >
+
+*recordDir*\
+ *recordTag* **RECORD** *bitDefList* ;;
+
+*recordFieldList*\
+ ⟦ *constExpr* ⟧ | *recordFieldList* , ⟦ ;; ⟧ ⟦ *constExpr* ⟧
+
+*recordInstance*\
+ { ⟦ ;; ⟧ *recordFieldList* ⟦ ;; ⟧ }\
+ | < *oldRecordFieldList* >\
+ | *constExpr* **DUP** ( *recordInstance* )
+
+*recordInstList*\
+ *recordInstance* | *recordInstList* , ⟦ ;; ⟧ *recordInstance*
+
+*recordTag*\
+ *id*
+
+*register*\
+ *specialRegister* | *gpRegister* | *byteRegister* | *qwordRegister* | *fpuRegister* | *SIMDRegister* | *segmentRegister*
+
+*regList*\
+ *register* | *regList* *register*
+
+*relOp*\
+ EQ | NE | LT | LE | GT | GE
+
+*repeatBlock*\
+ **.REPEAT** ;;\
+ *blockStatements* ;;
+untilDir ;;
+
+*repeatDir*\
+ **REPEAT** | **REPT**
+
+*scalarInstList*\
+ *initValue* | *scalarInstList* , ⟦ ;; ⟧ *initValue*
+
+*segAlign*\
+ **BYTE** | **WORD** | **DWORD** | **PARA** | **PAGE**
+
+*segAttrib*\
+ **PUBLIC** | **STACK** | **COMMON** | **MEMORY** | **AT** *constExpr* | **PRIVATE**
+
+*segDir*\
+ **.CODE**\
+ ⟦ *segId* ⟧\
+ | **.DATA**\
+ | **.DATA?**\
+ | **.CONST**\
+ | **.FARDATA**⟦ *segId* ⟧\
+ | **.FARDATA?** ⟦ *segId* ⟧\
+ | **.STACK** ⟦ *constExpr* ⟧
+
+*segId*\
+ *id*
+
+*segIdList*\
+ *segId*\
+ | *segIdList* , *segId*
+
+*segmentDef*\
+ *segmentDir* ⟦ *inSegDirList* ⟧ *endsDir* | *simpleSegDir* ⟦ *inSegDirList* ⟧ ⟦ *endsDir* ⟧
+
+*segmentDir*\
+ *segId* **SEGMENT** ⟦ *segOptionList* ⟧ ;;
+
+*segmentRegister*\
+ **CS** | **DS** | **ES** | **FS** | **GS** | **SS**
+
+*segOption*\
+ *segAlign*\
+ | *segRO*\
+ | *segAttrib*\
+ | *segSize*\
+ | *className*
+
+*segOptionList*\
+ *segOption* | *segOptionList* *segOption*
+
+*segOrderDir*\
+ **.ALPHA** | **.SEQ** | **.DOSSEG** | **DOSSEG**
+
+*segRO*\
+ **READONLY**
+
+*segSize*\
+ **USE16** | **USE32** | **FLAT**
+
+*shiftOp*\
+ **SHR** | **SHL**
+
+*sign*\
+ - | +
+
+*simdRegister*\
+ MM0 | MM1 | MM2 | MM3 | MM4 | MM5 | MM6 | MM7 | xmmRegister | YMM0 | YMM1 | YMM2 | YMM3 | YMM4 | YMM5 | YMM6 | YMM7 | YMM8 | YMM9 | YMM10 | YMM11 | YMM12 | YMM13 | YMM14 | YMM15
+
+*simpleExpr*\
+ ( *cExpr* ) | *primary*
+
+*simpleSegDir*\
+ *segDir* ;;
+
+*sizeArg*\
+ *id* | *type* | *e10*
+
+*specialChars*\
+ : | . | ⟦ | ⟧ | ( | ) | < | > | { | }\
+ | + | - | / | * | & | % | !\
+ | ’ | \ | = | ; | , | “\
+ | *whiteSpaceCharacter*\
+ | *endOfLine*
+
+*specialRegister*\
+ CR0 | CR2 | CR3 | DR0 | DR1 | DR2 | DR3 | DR6 | DR7 | TR3 | TR4 | TR5 | TR6 | TR7
+
+*stackOption*\
+ **NEARSTACK** | **FARSTACK**
+
+*startupDir*\
+ **.STARTUP** ;;
+
+*stext*\
+ *stringChar* | *stext* *stringChar*
+
+*string*\
+ *quote* ⟦ *stext* ⟧ *quote*
+
+*stringChar*\
+ *quote* *quote* | Any character except quote.
+
+*structBody*\
+ *structItem* ;;\
+ | *structBody* *structItem* ;;
+
+*structDir*\
+ *structTag* *structHdr* ⟦ *fieldAlign* ⟧\
+ ⟦, **NONUNIQUE** ⟧ ;;\
+ *structBody*\
+ *structTag*\
+ **ENDS** ;;
+
+*structHdr*\
+ **STRUC** | **STRUCT** | **UNION**
+
+*structInstance*\
+ < ⟦ *fieldInitList* ⟧ >\
+ | { ⟦ ;; ⟧ ⟦ *fieldInitList* ⟧ ⟦ ;; ⟧ }\
+ | *constExpr* **DUP** ( *structInstList* )\
+
+*structInstList*\
+ *structInstance* | *structInstList* , ⟦ ;; ⟧ *structInstance*
+
+*structItem*\
+ *dataDir*\
+ | *generalDir*\
+ | *offsetDir*\
+ | *nestedStruct*
+
+*structTag*\
+ *id*
+
+*term*\
+ *simpleExpr* | ! *simpleExpr*
+
+*text*\
+ *textLiteral* | *text* character | ! *character* *text* | *character* | !*character*
+
+*textDir*\
+ *id* *textMacroDir* ;;
+
+*textItem*\
+ *textLiteral* | *textMacroId* | % *constExpr*
+
+*textLen*\
+ *constExpr*
+
+*textList*\
+ *textItem* | *textList* , ⟦ ;; ⟧ *textItem*
+
+*textLiteral*\
+ < *text* >;;
+
+*textMacroDir*\
+ **CATSTR** ⟦ *textList* ⟧\
+ | **TEXTEQU** ⟦ *textList* ⟧\
+ | **SIZESTR** *textItem*\
+ | **SUBSTR** *textItem* , *textStart* ⟦ , *textLen* ⟧\
+ | **INSTR** ⟦ *textStart* , ⟧ *textItem* , *textItem*
+
+*textMacroId*\
+ *id*
+
+*textStart*\
+ *constExpr*
+
+*titleDir*\
+ *titleType* *arbitraryText* ;;
+
+*titleType*\
+ **TITLE** | **SUBTITLE** | **SUBTTL**
+
+*type*\
+ *structTag*\
+ | *unionTag*\
+ | *recordTag*\
+ | *distance*\
+ | *dataType*\
+ | *typeId*
+
+*typedefDir*\
+ *typeId* **TYPEDEF** qualifier
+
+*typeId*\
+ *id*
+
+*unionTag*\
+ *id*
+
+*untilDir*\
+ **.UNTIL** *cExpr* ;;\
+ **.UNTILCXZ** ⟦ *cxzExpr* ⟧ ;;
+
+*usesRegs*\
+ **USES** *regList*
+
+*whileBlock*\
+ **.WHILE**\
+ *cExpr* ;;\
+ *blockStatements* ;;\
+ **.ENDW**
+
+*whiteSpaceCharacter*\
+ ASCII 8, 9, 11–13, 26, 32
+
+*xmmRegister*\
+ XMM0 | XMM1 | XMM2 | XMM3 | XMM4 | XMM5 | XMM6 | XMM7 | XMM8 | XMM9 | XMM10 | XMM11 | XMM12 | XMM13 | XMM14 | XMM15\
+
diff --git a/docs/assembler/masm/masm-for-x64-ml64-exe.md b/docs/assembler/masm/masm-for-x64-ml64-exe.md
index bdf27d3350..983bb96ce5 100644
--- a/docs/assembler/masm/masm-for-x64-ml64-exe.md
+++ b/docs/assembler/masm/masm-for-x64-ml64-exe.md
@@ -1,16 +1,16 @@
---
title: "MASM for x64 (ml64.exe)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
helpviewer_keywords: ["ml64", "ml64.exe", "masm for x64"]
ms.assetid: 89059103-f372-4968-80ea-0c7f90bb9c91
---
# MASM for x64 (ml64.exe)
-Visual Studio includes both 32-bit and 64-bit hosted versions of Microsoft Assembler (MASM) to target x64 code. Named ml64.exe, this is the assembler that accepts x64 assembler language. The MASM command-line tools are installed when you choose a C++ workload during Visual Studio installation. The MASM tools are not available as a separate download. For instructions on how to download and install a copy of Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). If you do not want to install the complete Visual Studio IDE, but only want the command-line tools, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/).
+Visual Studio includes both 32-bit and 64-bit hosted versions of Microsoft Assembler (MASM) to target x64 code. Named ml64.exe, this is the assembler that accepts x64 assembler language. The MASM command-line tools are installed when you choose a C++ workload during Visual Studio installation. The MASM tools are not available as a separate download. For instructions on how to download and install a copy of Visual Studio, see [Install Visual Studio](/visualstudio/install/install-visual-studio). If you do not want to install the complete Visual Studio IDE, but only want the command-line tools, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019).
To use MASM to build code for x64 targets on the command line, you must use a developer command prompt for x64 targets, which sets the required path and other environment variables. For information on how to start a developer command prompt, see [Build C/C++ code on the command line](../../build/building-on-the-command-line.md).
-For information on ml64.exe command line options, see [ML and ML64 Command-Line Reference](../../assembler/masm/ml-and-ml64-command-line-reference.md).
+For information on ml64.exe command line options, see [ML and ML64 Command-Line Reference](ml-and-ml64-command-line-reference.md).
Inline assembler or use of the ASM keyword is not supported for x64 or ARM targets. To port your x86 code that uses inline assembler to x64 or ARM, you can convert your code to C++, use compiler intrinsics, or create assembler-language source files. The Microsoft C++ compiler supports intrinsics to allow you to use special-function instructions, for example, privileged, bit scan/test, interlocked, and so on, in as close to a cross-platform manner as possible. For information on available intrinsics, see [Compiler Intrinsics](../../intrinsics/compiler-intrinsics.md).
@@ -34,21 +34,21 @@ Create your assembler-language code in the .asm file you added. When you build y
You can use the following ml64-specific directives in your assembler-language source code that targets x64:
-- [.ALLOCSTACK](../../assembler/masm/dot-allocstack.md)
+- [.ALLOCSTACK](dot-allocstack.md)
-- [.ENDPROLOG](../../assembler/masm/dot-endprolog.md)
+- [.ENDPROLOG](dot-endprolog.md)
-- [.PUSHFRAME](../../assembler/masm/dot-pushframe.md)
+- [.PUSHFRAME](dot-pushframe.md)
-- [.PUSHREG](../../assembler/masm/dot-pushreg.md)
+- [.PUSHREG](dot-pushreg.md)
-- [.SAVEREG](../../assembler/masm/dot-savereg.md)
+- [.SAVEREG](dot-savereg.md)
-- [.SAVEXMM128](../../assembler/masm/dot-savexmm128.md)
+- [.SAVEXMM128](dot-savexmm128.md)
-- [.SETFRAME](../../assembler/masm/dot-setframe.md)
+- [.SETFRAME](dot-setframe.md)
-In addition, the [PROC](../../assembler/masm/proc.md) directive has been updated for use with ml64.exe.
+In addition, the [PROC](proc.md) directive has been updated for use with ml64.exe.
## 32-Bit Address Mode (Address Size Override)
@@ -73,4 +73,4 @@ mov eax, DWORD PTR [ecx*2+r10+0100h]
## See also
-[Microsoft Macro Assembler Reference](../../assembler/masm/microsoft-macro-assembler-reference.md)
\ No newline at end of file
+[Microsoft Macro Assembler Reference](microsoft-macro-assembler-reference.md)
diff --git a/docs/assembler/masm/media/bnf.png b/docs/assembler/masm/media/bnf.png
new file mode 100644
index 0000000000..21b34cd6bb
Binary files /dev/null and b/docs/assembler/masm/media/bnf.png differ
diff --git a/docs/assembler/masm/microsoft-macro-assembler-reference.md b/docs/assembler/masm/microsoft-macro-assembler-reference.md
index 245ab027aa..0c9394b9c7 100644
--- a/docs/assembler/masm/microsoft-macro-assembler-reference.md
+++ b/docs/assembler/masm/microsoft-macro-assembler-reference.md
@@ -1,43 +1,47 @@
---
-title: "Microsoft Macro Assembler Reference"
-ms.date: "08/30/2018"
+title: "Microsoft Macro Assembler reference"
+ms.date: "12/17/2019"
helpviewer_keywords: ["MASM (Microsoft Macro Assembler), reference", "MASM (Microsoft Macro Assembler), overview", "MASM (Microsoft Macro Assembler)", "MASM (Microsoft Macro Assembler), documentation overview"]
ms.assetid: 1446d55f-e2e7-4fd1-a9b8-b15cf7d4e47c
---
-# Microsoft Macro Assembler Reference
+# Microsoft Macro Assembler reference
The Microsoft Macro Assembler (MASM) provides several advantages over inline assembly. MASM contains a macro language that has features such as looping, arithmetic, and text string processing. MASM also gives you greater control over the hardware because it supports the instruction sets of the 386, 486, and Pentium processors. By using MASM, you also can reduce time and memory overhead.
## In This Section
-[ML and ML64 Command-Line Option](../../assembler/masm/ml-and-ml64-command-line-reference.md)
+[ML and ML64 command-line option](ml-and-ml64-command-line-reference.md)\
Describes the ML.exe and ML64.exe command-line options.
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
+[ML error messages](ml-error-messages.md)\
Describes ML.exe fatal and nonfatal error messages and warnings.
-[Directives Reference](../../assembler/masm/directives-reference.md)
+[Directives reference](directives-reference.md)\
Provides links to articles that discuss the use of directives in MASM.
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
+[Symbols Reference](symbols-reference.md)\
Provides links to articles that discuss the use of symbols in MASM.
-[Operators Reference](../../assembler/masm/operators-reference.md)
+[Operators Reference](operators-reference.md)\
Provides links to articles that discuss the use of operators in MASM.
-[Processor Manufacturer Programming Manuals](../../assembler/masm/processor-manufacturer-programming-manuals.md)
+[Processor Manufacturer Programming Manuals](processor-manufacturer-programming-manuals.md)\
Provides links to websites that may contain programming information about processors that are not manufactured, sold, or supported by Microsoft.
-[MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md)
+[MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md)\
Information about how to create output files for x64.
+[MASM BNF Grammar](masm-bnf-grammar.md)
+
+Formal BNF description of MASM for x64.
+
## Related Sections
-[C++ in Visual Studio](../../overview/visual-cpp-in-visual-studio.md)
+[C++ in Visual Studio](../../overview/visual-cpp-in-visual-studio.md)\
Provides links to different areas of the Visual Studio and Visual C++ documentation.
## See also
-[Compiler Intrinsics](../../intrinsics/compiler-intrinsics.md)
-[x86Intrinsics](../../intrinsics/x86-intrinsics-list.md)
-[x64 (amd64) Intrinsics](../../intrinsics/x64-amd64-intrinsics-list.md)
\ No newline at end of file
+[Compiler Intrinsics](../../intrinsics/compiler-intrinsics.md)\
+[x86Intrinsics](../../intrinsics/x86-intrinsics-list.md)\
+[x64 (amd64) Intrinsics](../../intrinsics/x64-amd64-intrinsics-list.md)
diff --git a/docs/assembler/masm/ml-and-ml64-command-line-reference.md b/docs/assembler/masm/ml-and-ml64-command-line-reference.md
index b38a6250df..7e3b994c64 100644
--- a/docs/assembler/masm/ml-and-ml64-command-line-reference.md
+++ b/docs/assembler/masm/ml-and-ml64-command-line-reference.md
@@ -1,6 +1,6 @@
---
title: "ML and ML64 Command-Line Reference"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ML"]
helpviewer_keywords: ["/W* MASM compiler option", "/c MASM compiler option", "/EP MASM compiler option", "/Fe MASM compiler option", "/Zp MASM compiler option", "/AT MASM compiler option", "/Zm MASM compiler option", "/Sf MASM compiler option", "/Sp MASM compiler option", "/w MASM compiler option", "/Fl MASM compiler option", "/coff MASM compiler option", "/St MASM compiler option", "/Cx MASM compiler option", "/Sl MASM compiler option", "/Cu MASM compiler option", "MASM (Microsoft Macro Assembler), ML command-line reference", "/FPi MASM compiler option", "/Zf MASM compiler option", "ML environment variable", "/Fr MASM compiler option", "/help MASM compiler option", "/Sa MASM compiler option", "/Zd MASM compiler option", "/I MASM compiler option", "/? MASM compiler option", "/Bl MASM compiler option", "/Fm MASM compiler option", "/Fo MASM compiler option", "command-line reference [ML]", "/Sn MASM compiler option", "/Gd MASM compiler option", "/D* MASM compiler option", "environment variables, ML", "/Gc MASM compiler option", "/F* MASM compiler option", "/Sc MASM compiler option", "/H MASM compiler option", "/Zs MASM compiler option", "/omf MASM compiler option", "/Sg MASM compiler option", "/Cp MASM compiler option", "/Zi MASM compiler option", "/nologo MASM compiler option", "/Sx MASM compiler option", "/WX MASM compiler option", "/Ss MASM compiler option", "command line, reference [ML]", "/Ta MASM compiler option"]
ms.assetid: 712623c6-f77e-47ea-a945-089e57c50b40
@@ -9,7 +9,7 @@ ms.assetid: 712623c6-f77e-47ea-a945-089e57c50b40
Assembles and links one or more assembly-language source files. The command-line options are case sensitive.
-For more information on ml64.exe, see [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md).
+For more information on ml64.exe, see [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md).
## Syntax
@@ -19,29 +19,29 @@ For more information on ml64.exe, see [MASM for x64 (ml64.exe)](../../assembler/
### Parameters
-*options*
+*options*\
The options listed in the following table.
|Option|Action|
|------------|------------|
-|**/AT**|Enables tiny-memory-model support. Enables error messages for code constructs that violate the requirements for .com format files. Note that this is not equivalent to the [.MODEL](../../assembler/masm/dot-model.md) **TINY** directive.
Not available in ml64.exe.|
+|**/AT**|Enables tiny-memory-model support. Enables error messages for code constructs that violate the requirements for .com format files. Note that this is not equivalent to the [.MODEL](dot-model.md) **TINY** directive.
Not available in ml64.exe.|
|**/Bl** *filename*|Selects an alternate linker.|
|**/c**|Assembles only. Does not link.|
|**/coff**|Generates common object file format (COFF) type of object module. Generally required for Win32 assembly language development.
Not available in ml64.exe.|
|**/Cp**|Preserves case of all user identifiers.|
|**/Cu**|Maps all identifiers to upper case (default).
Not available in ml64.exe.|
|**/Cx**|Preserves case in public and extern symbols.|
-|**/D** *symbol*[[=*value*]]|Defines a text macro with the given name. If *value* is missing, it is blank. Multiple tokens separated by spaces must be enclosed in quotation marks.|
+|**/D** *symbol*⟦=*value*⟧|Defines a text macro with the given name. If *value* is missing, it is blank. Multiple tokens separated by spaces must be enclosed in quotation marks.|
|**/EP**|Generates a preprocessed source listing (sent to STDOUT). See **/Sf**.|
|**/ERRORREPORT** [ **NONE** | **PROMPT** | **QUEUE** | **SEND** ]|If ml.exe or ml64.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)](../../build/reference/errorreport-report-internal-compiler-errors.md).|
|**/F** *hexnum*|Sets stack size to *hexnum* bytes (this is the same as **/link/STACK**:*number*). The value must be expressed in hexadecimal notation. There must be a space between **/F** and *hexnum*.|
|**/Fe** *filename*|Names the executable file.|
-|**/Fl**[[*filename*]]|Generates an assembled code listing. See **/Sf**.|
-|**/Fm**[[*filename*]]|Creates a linker map file.|
+|**/Fl**⟦*filename*⟧|Generates an assembled code listing. See **/Sf**.|
+|**/Fm**⟦*filename*⟧|Creates a linker map file.|
|**/Fo** *filename*|Names an object file. See Remarks section for more information.|
|**/FPi**|Generates emulator fix-ups for floating-point arithmetic (mixed language only).
Not available in ml64.exe.|
-|**/Fr**[[*filename*]]|Generates a source browser .sbr file.|
-|**/FR**[[*filename*]]|Generates an extended form of a source browser .sbr file.|
+|**/Fr**⟦*filename*⟧|Generates a source browser .sbr file.|
+|**/FR**⟦*filename*⟧|Generates an extended form of a source browser .sbr file.|
|**/Gc**|Specifies use of FORTRAN- or Pascal-style function calling and naming conventions. Same as **OPTION LANGUAGE:PASCAL**.
Not available in ml64.exe.|
|**/Gd**|Specifies use of C-style function calling and naming conventions. Same as **OPTION LANGUAGE:C**.
Not available in ml64.exe.|
|**/GZ**|Specifies use of __stdcall function calling and naming conventions. Same as **OPTION LANGUAGE:STCALL**.
Not available in ml64.exe.|
@@ -51,13 +51,13 @@ The options listed in the following table.
|**/nologo**|Suppresses messages for successful assembly.|
|**/omf**|Generates object module file format (OMF) type of object module. **/omf** implies **/c**; ML.exe does not support linking OMF objects.
Not available in ml64.exe.|
|**/Sa**|Turns on listing of all available information.|
-|**/safeseh**|Marks the object as either containing no exception handlers or containing exception handlers that are all declared with [.SAFESEH](../../assembler/masm/dot-safeseh.md).
Not available in ml64.exe.|
+|**/safeseh**|Marks the object as either containing no exception handlers or containing exception handlers that are all declared with [.SAFESEH](dot-safeseh.md).
Not available in ml64.exe.|
|**/Sf**|Adds first-pass listing to listing file.|
-|**/Sl** *width*|Sets the line width of source listing in characters per line. Range is 60 to 255 or 0. Default is 0. Same as [PAGE](../../assembler/masm/page.md) width.|
+|**/Sl** *width*|Sets the line width of source listing in characters per line. Range is 60 to 255 or 0. Default is 0. Same as [PAGE](page.md) width.|
|**/Sn**|Turns off symbol table when producing a listing.|
-|**/Sp** *length*|Sets the page length of source listing in lines per page. Range is 10 to 255 or 0. Default is 0. Same as [PAGE](../../assembler/masm/page.md) length.|
-|**/Ss** *text*|Specifies text for source listing. Same as [SUBTITLE](../../assembler/masm/subtitle.md) text.|
-|**/St** *text*|Specifies title for source listing. Same as [TITLE](../../assembler/masm/title.md) text.|
+|**/Sp** *length*|Sets the page length of source listing in lines per page. Range is 10 to 255 or 0. Default is 0. Same as [PAGE](page.md) length.|
+|**/Ss** *text*|Specifies text for source listing. Same as [SUBTITLE](subtitle.md) text.|
+|**/St** *text*|Specifies title for source listing. Same as [TITLE](title.md) text.|
|**/Sx**|Turns on false conditionals in listing.|
|**/Ta** *filename*|Assembles source file whose name does not end with the .asm extension.|
|**/w**|Same as **/W0/WX**.|
@@ -68,14 +68,14 @@ The options listed in the following table.
|**/Zf**|Makes all symbols public.|
|**/Zi**|Generates CodeView information in object file.|
|**/Zm**|Enables**M510** option for maximum compatibility with MASM 5.1.
Not available in ml64.exe.|
-|**/Zp**[[*alignment*]]|Packs structures on the specified byte boundary. The *alignment* can be 1, 2, or 4.|
+|**/Zp**⟦*alignment*⟧|Packs structures on the specified byte boundary. The *alignment* can be 1, 2, or 4.|
|**/Zs**|Performs a syntax check only.|
|**/?**|Displays a summary of ML command-line syntax.|
-*filename*
+*filename*\
The name of the file.
-*linkoptions*
+*linkoptions*\
The link options. See [Linker Options](../../build/reference/linker-options.md) for more information.
## Remarks
@@ -94,5 +94,5 @@ Some command-line options to ML and ML64 are placement-sensitive. For example, b
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
-[Microsoft Macro Assembler Reference](../../assembler/masm/microsoft-macro-assembler-reference.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)\
+[Microsoft Macro Assembler Reference](microsoft-macro-assembler-reference.md)
diff --git a/docs/assembler/masm/ml-error-messages.md b/docs/assembler/masm/ml-error-messages.md
index 39aa4185eb..d76ec8d21c 100644
--- a/docs/assembler/masm/ml-error-messages.md
+++ b/docs/assembler/masm/ml-error-messages.md
@@ -1,7 +1,7 @@
---
title: "ML Error Messages"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["vc.errors.ml"]
helpviewer_keywords: ["MASM (Microsoft Macro Assembler), ML error messages"]
ms.assetid: e7e164b3-6d65-4b5b-8925-bfbebc043523
@@ -22,24 +22,24 @@ All error messages take the following form:
where:
-*Utility*
+*Utility*\
The program that sent the error message.
-*Filename*
+*Filename*\
The file that contains the error-generating condition.
-*Line*
+*Line*\
The approximate line where the error condition exists.
-*Error_type*
+*Error_type*\
Fatal Error, Error, or Warning.
-*Code*
+*Code*\
The unique 5- or 6-digit error code.
-*Message_text*
+*Message_text*\
A short and general description of the error condition.
## See also
-[Microsoft Macro Assembler Reference](../../assembler/masm/microsoft-macro-assembler-reference.md)
+[Microsoft Macro Assembler reference](microsoft-macro-assembler-reference.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1000.md b/docs/assembler/masm/ml-fatal-error-a1000.md
index 47693ac447..0885bc7cbe 100644
--- a/docs/assembler/masm/ml-fatal-error-a1000.md
+++ b/docs/assembler/masm/ml-fatal-error-a1000.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1000"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1000"]
helpviewer_keywords: ["A1000"]
ms.assetid: 4fc77a83-8796-4dcf-9c37-6395d635b817
@@ -32,4 +32,4 @@ One of the following may be a cause:
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1005.md b/docs/assembler/masm/ml-fatal-error-a1005.md
index 35f2f4e475..bf1eb8e527 100644
--- a/docs/assembler/masm/ml-fatal-error-a1005.md
+++ b/docs/assembler/masm/ml-fatal-error-a1005.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1005"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1005"]
helpviewer_keywords: ["A1005"]
ms.assetid: 42c7a6c5-277d-417c-acc1-d84c370e8d24
@@ -16,4 +16,4 @@ Define shorter or fewer names, or remove unnecessary macros.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1007.md b/docs/assembler/masm/ml-fatal-error-a1007.md
index ebd8f649bf..8b15feba10 100644
--- a/docs/assembler/masm/ml-fatal-error-a1007.md
+++ b/docs/assembler/masm/ml-fatal-error-a1007.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1007"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1007"]
helpviewer_keywords: ["A1007"]
ms.assetid: bcf9c826-beb3-4e93-91fe-1ffd34995fbf
@@ -14,7 +14,7 @@ The assembler reached its nesting limit. The limit is 20 levels except where not
One of the following was nested too deeply:
-- A high-level directive such as [.IF](../../assembler/masm/dot-if.md), [.REPEAT](../../assembler/masm/dot-repeat.md), or [.WHILE](../../assembler/masm/dot-while.md).
+- A high-level directive such as [.IF](dot-if.md), [.REPEAT](dot-repeat.md), or [.WHILE](dot-while.md).
- A structure definition.
@@ -22,7 +22,7 @@ One of the following was nested too deeply:
- A procedure definition.
-- A [PUSHCONTEXT](../../assembler/masm/pushcontext.md) directive (the limit is 10).
+- A [PUSHCONTEXT](pushcontext.md) directive (the limit is 10).
- A segment definition.
@@ -32,4 +32,4 @@ One of the following was nested too deeply:
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1008.md b/docs/assembler/masm/ml-fatal-error-a1008.md
index 008615e26a..505eda9744 100644
--- a/docs/assembler/masm/ml-fatal-error-a1008.md
+++ b/docs/assembler/masm/ml-fatal-error-a1008.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1008"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1008"]
helpviewer_keywords: ["A1008"]
ms.assetid: fe592f9d-c37b-4cd8-a51d-e3c15ddcab83
@@ -10,10 +10,10 @@ ms.assetid: fe592f9d-c37b-4cd8-a51d-e3c15ddcab83
**unmatched macro nesting**
-Either a macro was not terminated before the end of the file or the terminating directive [ENDM](../../assembler/masm/endm.md) was found outside of a macro block.
+Either a macro was not terminated before the end of the file or the terminating directive [ENDM](endm.md) was found outside of a macro block.
-One cause of this error is omission of the dot before [.REPEAT](../../assembler/masm/dot-repeat.md) or [.WHILE](../../assembler/masm/dot-while.md).
+One cause of this error is omission of the dot before [.REPEAT](dot-repeat.md) or [.WHILE](dot-while.md).
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1009.md b/docs/assembler/masm/ml-fatal-error-a1009.md
index 55be996870..12f74a4eff 100644
--- a/docs/assembler/masm/ml-fatal-error-a1009.md
+++ b/docs/assembler/masm/ml-fatal-error-a1009.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1009"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1009"]
helpviewer_keywords: ["A1009"]
ms.assetid: f7a962a6-4280-485e-95cb-2ab8922c66c2
@@ -16,4 +16,4 @@ If multiple physical lines are concatenated with the line-continuation character
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1010.md b/docs/assembler/masm/ml-fatal-error-a1010.md
index c2d4c72de1..9ac0f39f86 100644
--- a/docs/assembler/masm/ml-fatal-error-a1010.md
+++ b/docs/assembler/masm/ml-fatal-error-a1010.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1010"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1010"]
helpviewer_keywords: ["A1010"]
ms.assetid: 9e0b5241-67f4-4740-8701-3b2d2d1ad9e4
@@ -12,9 +12,9 @@ ms.assetid: 9e0b5241-67f4-4740-8701-3b2d2d1ad9e4
A block beginning did not have a matching end, or a block end did not have a matching beginning. One of the following may be involved:
-- A high-level directive such as [.IF](../../assembler/masm/dot-if.md), [.REPEAT](../../assembler/masm/dot-repeat.md), or [.WHILE](../../assembler/masm/dot-while.md).
+- A high-level directive such as [.IF](dot-if.md), [.REPEAT](dot-repeat.md), or [.WHILE](dot-while.md).
-- A conditional-assembly directive such as [IF](../../assembler/masm/if-masm.md), [REPEAT](../../assembler/masm/repeat.md), or **WHILE**.
+- A conditional-assembly directive such as [IF](if-masm.md), [REPEAT](repeat.md), or **WHILE**.
- A structure or union definition.
@@ -22,10 +22,10 @@ A block beginning did not have a matching end, or a block end did not have a mat
- A segment definition.
-- A [POPCONTEXT](../../assembler/masm/popcontext.md) directive.
+- A [POPCONTEXT](popcontext.md) directive.
-- A conditional-assembly directive, such as an [ELSE](../../assembler/masm/else-masm.md), [ELSEIF](../../assembler/masm/elseif-masm.md), or **ENDIF** without a matching [IF](../../assembler/masm/if-masm.md).
+- A conditional-assembly directive, such as an [ELSE](else-masm.md), [ELSEIF](elseif-masm.md), or **ENDIF** without a matching [IF](if-masm.md).
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1011.md b/docs/assembler/masm/ml-fatal-error-a1011.md
index 3c0e478dba..b28861f913 100644
--- a/docs/assembler/masm/ml-fatal-error-a1011.md
+++ b/docs/assembler/masm/ml-fatal-error-a1011.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1011"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1011"]
helpviewer_keywords: ["A1011"]
ms.assetid: 7fbf092d-4189-4330-a884-dfa2268fc3dd
@@ -12,20 +12,20 @@ ms.assetid: 7fbf092d-4189-4330-a884-dfa2268fc3dd
The assembler found a high-level directive where one was not expected. One of the following directives was found:
-- [.ELSE](../../assembler/masm/dot-else.md) without [.IF](../../assembler/masm/dot-if.md)
+- [.ELSE](dot-else.md) without [.IF](dot-if.md)
-- [.ENDIF](../../assembler/masm/dot-endif.md) without [.IF](../../assembler/masm/dot-if.md)
+- [.ENDIF](dot-endif.md) without [.IF](dot-if.md)
-- [.ENDW](../../assembler/masm/dot-endw.md) without [.WHILE](../../assembler/masm/dot-while.md)
+- [.ENDW](dot-endw.md) without [.WHILE](dot-while.md)
-- [.UNTILCXZ](../../assembler/masm/dot-untilcxz.md) without [.REPEAT](../../assembler/masm/dot-repeat.md)
+- [.UNTILCXZ](dot-untilcxz.md) without [.REPEAT](dot-repeat.md)
-- [.CONTINUE](../../assembler/masm/dot-continue.md) without [.WHILE](../../assembler/masm/dot-while.md) or [.REPEAT](../../assembler/masm/dot-repeat.md)
+- [.CONTINUE](dot-continue.md) without [.WHILE](dot-while.md) or [.REPEAT](dot-repeat.md)
-- [.BREAK](../../assembler/masm/dot-break.md) without [.WHILE](../../assembler/masm/dot-while.md) or [.REPEAT](../../assembler/masm/dot-repeat.md)
+- [.BREAK](dot-break.md) without [.WHILE](dot-while.md) or [.REPEAT](dot-repeat.md)
-- [.ELSE](../../assembler/masm/dot-else.md) following `.ELSE`
+- [.ELSE](dot-else.md) following `.ELSE`
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-fatal-error-a1016.md b/docs/assembler/masm/ml-fatal-error-a1016.md
index 1f4f165732..2f4a2f8cb2 100644
--- a/docs/assembler/masm/ml-fatal-error-a1016.md
+++ b/docs/assembler/masm/ml-fatal-error-a1016.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1016"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1016"]
helpviewer_keywords: ["A1016"]
ms.assetid: 440b3750-ba0b-44d8-b82d-d581f62c08b2
@@ -16,4 +16,5 @@ Note the circumstances of the error and notify Microsoft Corporation. Product Su
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
+[ML Error Messages](ml-error-messages.md)
+
diff --git a/docs/assembler/masm/ml-fatal-error-a1017.md b/docs/assembler/masm/ml-fatal-error-a1017.md
index 79f263b5c1..ca5415129e 100644
--- a/docs/assembler/masm/ml-fatal-error-a1017.md
+++ b/docs/assembler/masm/ml-fatal-error-a1017.md
@@ -1,7 +1,7 @@
---
title: "ML Fatal Error A1017"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A1017"]
helpviewer_keywords: ["A1017"]
ms.assetid: bef0b312-5431-4e5a-b637-c19919acf01b
@@ -18,4 +18,4 @@ This error can also be generated by invoking ML with no parameters if the ML env
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2004.md b/docs/assembler/masm/ml-nonfatal-error-a2004.md
index 834c9f66d3..2eee7ef097 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2004.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2004.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2004"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2004"]
helpviewer_keywords: ["A2004"]
ms.assetid: 74e219ba-4dec-467a-b121-18a76aa57230
@@ -10,8 +10,8 @@ ms.assetid: 74e219ba-4dec-467a-b121-18a76aa57230
**symbol type conflict : identifier**
-The [EXTERNDEF](../../assembler/masm/externdef.md) or [LABEL](../../assembler/masm/label-masm.md) directive was used on a variable, symbol, data structure, or label that was defined in the same module but with a different type.
+The [EXTERNDEF](externdef.md) or [LABEL](label-masm.md) directive was used on a variable, symbol, data structure, or label that was defined in the same module but with a different type.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2006.md b/docs/assembler/masm/ml-nonfatal-error-a2006.md
index 353fb789f4..69ac5ca546 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2006.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2006.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2006"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2006"]
helpviewer_keywords: ["A2006"]
ms.assetid: b8a8f096-95df-42b5-85ed-d2530560a84c
@@ -20,7 +20,7 @@ One of the following may have occurred:
- A symbol was defined in an include file that was not included.
-- An external symbol was used without an [EXTERN](../../assembler/masm/extern-masm.md) or [EXTERNDEF](../../assembler/masm/externdef.md) directive.
+- An external symbol was used without an [EXTERN](extern-masm.md) or [EXTERNDEF](externdef.md) directive.
- A symbol name was misspelled.
@@ -28,4 +28,4 @@ One of the following may have occurred:
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2008.md b/docs/assembler/masm/ml-nonfatal-error-a2008.md
index 26d1bc9fc3..760a172725 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2008.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2008.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2008"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2008"]
helpviewer_keywords: ["A2008"]
ms.assetid: ca24157f-c88a-4678-ae06-3bc3cd956001
@@ -20,7 +20,7 @@ One of the following may have occurred:
- An instruction was used that was not available with the current processor or coprocessor selection.
-- A comparison run-time operator (such as `==`) was used in a conditional assembly statement instead of a relational operator (such as [EQ](../../assembler/masm/operator-eq.md)).
+- A comparison run-time operator (such as `==`) was used in a conditional assembly statement instead of a relational operator (such as [EQ](operator-eq.md)).
- An instruction or directive was given too few operands.
@@ -28,4 +28,4 @@ One of the following may have occurred:
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2010.md b/docs/assembler/masm/ml-nonfatal-error-a2010.md
index 8fc098bfe2..10c8c345f0 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2010.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2010.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2010"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2010"]
helpviewer_keywords: ["A2010"]
ms.assetid: 8bcd57f4-1e3f-421f-9ef8-e702daf57fcb
@@ -10,8 +10,8 @@ ms.assetid: 8bcd57f4-1e3f-421f-9ef8-e702daf57fcb
**invalid type expression**
-The operand to [THIS](../../assembler/masm/operator-this.md) or [PTR](../../assembler/masm/operator-ptr.md) was not a valid type expression.
+The operand to [THIS](operator-this.md) or [PTR](operator-ptr.md) was not a valid type expression.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2019.md b/docs/assembler/masm/ml-nonfatal-error-a2019.md
index 114593a618..9e4c1fb7aa 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2019.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2019.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2019"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2019"]
helpviewer_keywords: ["A2019"]
ms.assetid: 7dff209b-6d91-4e39-88a3-5d6329bac537
@@ -10,10 +10,10 @@ ms.assetid: 7dff209b-6d91-4e39-88a3-5d6329bac537
**operand must be RECORD type or field**
-The operand following the [WIDTH](../../assembler/masm/operator-width.md) or [MASK](../../assembler/masm/operator-mask.md) operator was not valid.
+The operand following the [WIDTH](operator-width.md) or [MASK](operator-mask.md) operator was not valid.
-The [WIDTH](../../assembler/masm/operator-width.md) operator takes an operand that is the name of a field or a record. The [MASK](../../assembler/masm/operator-mask.md) operator takes an operand that is the name of a field or a record type.
+The [WIDTH](operator-width.md) operator takes an operand that is the name of a field or a record. The [MASK](operator-mask.md) operator takes an operand that is the name of a field or a record type.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2022.md b/docs/assembler/masm/ml-nonfatal-error-a2022.md
index 84f6a12d85..04f41707a2 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2022.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2022.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2022"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2022"]
helpviewer_keywords: ["A2022"]
ms.assetid: 3f4b1017-543e-4236-820f-61070ab58920
@@ -14,4 +14,4 @@ The operands to an instruction did not have the same size.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2031.md b/docs/assembler/masm/ml-nonfatal-error-a2031.md
index ad5dea263a..06f8d98c1f 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2031.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2031.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2031"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2031"]
helpviewer_keywords: ["A2031"]
ms.assetid: d5b11f58-4a00-42be-9062-8fa8728e6306
@@ -21,4 +21,4 @@ For example, the following expressions cause this error:
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2034.md b/docs/assembler/masm/ml-nonfatal-error-a2034.md
index af60ae5aec..75bfc9bf48 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2034.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2034.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2034"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2034"]
helpviewer_keywords: ["A2034"]
ms.assetid: 6438970c-0aee-4f14-a058-5fe47d0ee216
@@ -16,16 +16,16 @@ One of the following was found outside of a segment block:
- A label definition
-- A [THIS](../../assembler/masm/operator-this.md) operator
+- A [THIS](operator-this.md) operator
-- A [$](../../assembler/masm/dollar.md) operator
+- A [$](dollar.md) operator
- A procedure definition
-- An [ALIGN](../../assembler/masm/align-masm.md) directive
+- An [ALIGN](align-masm.md) directive
-- An [ORG](../../assembler/masm/org.md) directive
+- An [ORG](org.md) directive
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2037.md b/docs/assembler/masm/ml-nonfatal-error-a2037.md
index 8d4c80ccb0..8a8932857e 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2037.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2037.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2037"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2037"]
helpviewer_keywords: ["A2037"]
ms.assetid: e7fdb98b-3ce9-4e1f-99fc-1b1ea10b6961
@@ -12,8 +12,8 @@ ms.assetid: e7fdb98b-3ce9-4e1f-99fc-1b1ea10b6961
A structure definition contained an invalid statement.
-A structure cannot contain instructions, labels, procedures, control-flow directives, [.STARTUP](../../assembler/masm/dot-startup.md), or [.EXIT](../../assembler/masm/dot-exit.md).
+A structure cannot contain instructions, labels, procedures, control-flow directives, [.STARTUP](dot-startup.md), or [.EXIT](dot-exit.md).
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2038.md b/docs/assembler/masm/ml-nonfatal-error-a2038.md
index 7f8ecc2acf..9978c22bcf 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2038.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2038.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2038"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2038"]
helpviewer_keywords: ["A2038"]
ms.assetid: 001bf60a-58ac-4654-97eb-b734f2999f8e
@@ -10,8 +10,8 @@ ms.assetid: 001bf60a-58ac-4654-97eb-b734f2999f8e
**missing operand for macro operator**
-The assembler found the end of a macro's parameter list immediately after the [!](../../assembler/masm/operator-logical-not-masm-run-time.md) or [%](../../assembler/masm/operator-percent.md) operator.
+The assembler found the end of a macro's parameter list immediately after the [!](operator-logical-not-masm-run-time.md) or [%](operator-percent.md) operator.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2039.md b/docs/assembler/masm/ml-nonfatal-error-a2039.md
index 47cb5d0dd8..336e5ee7cf 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2039.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2039.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2039"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2039"]
helpviewer_keywords: ["A2039"]
ms.assetid: ad8cdaae-b20d-45f0-acb1-79880979c6b7
@@ -16,4 +16,4 @@ If multiple physical lines are concatenated with the line-continuation character
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2044.md b/docs/assembler/masm/ml-nonfatal-error-a2044.md
index 33e9e5ca45..bdfe38b746 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2044.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2044.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2044"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2044"]
helpviewer_keywords: ["A2044"]
ms.assetid: 7cf144ac-408c-4e35-9a15-38656a4e87cd
@@ -14,4 +14,4 @@ The source file contained a character outside a comment, string, or literal that
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2047.md b/docs/assembler/masm/ml-nonfatal-error-a2047.md
index 00c4beacba..db2d1b1fe0 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2047.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2047.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2047"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2047"]
helpviewer_keywords: ["A2047"]
ms.assetid: 7799f988-6c2e-4022-a447-c56b48473f0c
@@ -16,4 +16,4 @@ For a string to be valid, it must contain 1-255 characters.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2050.md b/docs/assembler/masm/ml-nonfatal-error-a2050.md
index abc81286f2..251548f27c 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2050.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2050.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2050"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2050"]
helpviewer_keywords: ["A2050"]
ms.assetid: 16f3a58f-4bde-48f1-b0e3-2ed9612780a5
@@ -16,10 +16,10 @@ One of the following occurred:
- A real number or a BCD was used in an expression.
-- A real number was used to initialize a directive other than [DWORD](../../assembler/masm/dword.md), [QWORD](../../assembler/masm/qword.md), or [TBYTE](../../assembler/masm/tbyte.md).
+- A real number was used to initialize a directive other than [DWORD](dword.md), [QWORD](qword.md), or [TBYTE](tbyte.md).
- A BCD was used to initialize a directive other than `TBYTE`.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2054.md b/docs/assembler/masm/ml-nonfatal-error-a2054.md
index 9b76511249..7e6996c395 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2054.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2054.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2054"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2054"]
helpviewer_keywords: ["A2054"]
ms.assetid: 878a2ced-0b88-49e5-bea5-0a014efb08b6
@@ -10,8 +10,8 @@ ms.assetid: 878a2ced-0b88-49e5-bea5-0a014efb08b6
**forced error : value not equal to 0**
-The conditional-error directive [.ERRNZ](../../assembler/masm/dot-errnz.md) was used to generate this error.
+The conditional-error directive [.ERRNZ](dot-errnz.md) was used to generate this error.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2055.md b/docs/assembler/masm/ml-nonfatal-error-a2055.md
index 9eea0ac589..70567c050f 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2055.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2055.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2055"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2055"]
helpviewer_keywords: ["A2055"]
ms.assetid: b4c3585f-6e55-4127-ba84-e68a41f1ada8
@@ -10,8 +10,8 @@ ms.assetid: b4c3585f-6e55-4127-ba84-e68a41f1ada8
**forced error : symbol not defined**
-The conditional-error directive [.ERRNDEF](../../assembler/masm/dot-errndef.md) was used to generate this error.
+The conditional-error directive [.ERRNDEF](dot-errndef.md) was used to generate this error.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2057.md b/docs/assembler/masm/ml-nonfatal-error-a2057.md
index a69af2dd09..1c7d925a6f 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2057.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2057.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2057"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2057"]
helpviewer_keywords: ["A2057"]
ms.assetid: 13c47848-3f4d-4145-a00c-5418ff176ba3
@@ -10,8 +10,8 @@ ms.assetid: 13c47848-3f4d-4145-a00c-5418ff176ba3
**forced error : string blank**
-The conditional-error directive [.ERRB](../../assembler/masm/dot-errb.md) was used to generate this error.
+The conditional-error directive [.ERRB](dot-errb.md) was used to generate this error.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2059.md b/docs/assembler/masm/ml-nonfatal-error-a2059.md
index 11892edade..730ddb36e4 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2059.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2059.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2059"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2059"]
helpviewer_keywords: ["A2059"]
ms.assetid: fadabbce-3054-4758-aeae-34d8540ce410
@@ -10,8 +10,8 @@ ms.assetid: fadabbce-3054-4758-aeae-34d8540ce410
**forced error : strings equal**
-The conditional-error directive [.ERRIDN](../../assembler/masm/dot-erridn.md) or **.ERRIDNI** was used to generate this error.
+The conditional-error directive [.ERRIDN](dot-erridn.md) or **.ERRIDNI** was used to generate this error.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2060.md b/docs/assembler/masm/ml-nonfatal-error-a2060.md
index 9be0824ef8..a4a5407850 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2060.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2060.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2060"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2060"]
helpviewer_keywords: ["A2060"]
ms.assetid: 435d5b32-9b4f-4f4e-8142-af0ce7676e89
@@ -10,8 +10,8 @@ ms.assetid: 435d5b32-9b4f-4f4e-8142-af0ce7676e89
**forced error : strings not equal**
-The conditional-error directive [.ERRDIF](../../assembler/masm/dot-errdif.md) or **.ERRDIFI** was used to generate this error.
+The conditional-error directive [.ERRDIF](dot-errdif.md) or **.ERRDIFI** was used to generate this error.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2063.md b/docs/assembler/masm/ml-nonfatal-error-a2063.md
index f6c66897ea..46110709d5 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2063.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2063.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2063"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2063"]
helpviewer_keywords: ["A2063"]
ms.assetid: 12976b25-2159-4e0c-9df3-dcfac61091ee
@@ -10,10 +10,10 @@ ms.assetid: 12976b25-2159-4e0c-9df3-dcfac61091ee
**can ALIGN only to power of 2 : expression**
-The expression specified with the [ALIGN](../../assembler/masm/align-masm.md) directive was invalid.
+The expression specified with the [ALIGN](align-masm.md) directive was invalid.
The **ALIGN** expression must be a power of 2 between 2 and 256, and must be less than or equal to the alignment of the current segment, structure, or union.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2064.md b/docs/assembler/masm/ml-nonfatal-error-a2064.md
index 22e1e97c34..7f763527e0 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2064.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2064.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2064"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2064"]
helpviewer_keywords: ["A2064"]
ms.assetid: 553a5ec5-b404-4321-ab2c-b9ccec6471fc
@@ -14,4 +14,4 @@ The alignment specified in a structure definition was invalid.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2065.md b/docs/assembler/masm/ml-nonfatal-error-a2065.md
index b43bc64355..59e6bc3e41 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2065.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2065.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2065"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2065"]
helpviewer_keywords: ["A2065"]
ms.assetid: 836e46c7-461a-4abc-8d48-03952c5b25f4
@@ -14,4 +14,4 @@ The assembler expected the given token.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2066.md b/docs/assembler/masm/ml-nonfatal-error-a2066.md
index ff17fd3d77..ca7f95c00d 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2066.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2066.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2066"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2066"]
helpviewer_keywords: ["A2066"]
ms.assetid: 58220fdf-fb8f-47fc-a36d-737867361185
@@ -16,4 +16,4 @@ The **USE32** and **FLAT** attributes must be preceded by the .386 or greater pr
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2069.md b/docs/assembler/masm/ml-nonfatal-error-a2069.md
index 4cc30832f7..88f4d0c959 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2069.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2069.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2069"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2069"]
helpviewer_keywords: ["A2069"]
ms.assetid: 57dbf072-da61-4306-8d41-a4d9c97fec1a
@@ -14,4 +14,4 @@ One or more operands were specified with an instruction that takes no operands.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2070.md b/docs/assembler/masm/ml-nonfatal-error-a2070.md
index 94a3aa7bd9..3791bd9c8d 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2070.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2070.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2070"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2070"]
helpviewer_keywords: ["A2070"]
ms.assetid: f6025e2c-b142-426f-88c8-7160df4c1631
@@ -14,4 +14,4 @@ One or more operands were not valid for the instruction with which they were spe
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2074.md b/docs/assembler/masm/ml-nonfatal-error-a2074.md
index 7fd8b2e3cf..1377c20ad2 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2074.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2074.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2074"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2074"]
helpviewer_keywords: ["A2074"]
ms.assetid: d19600d8-785b-4afb-af77-9dbbeb6a1275
@@ -14,4 +14,4 @@ An attempt was made to access a label through a segment register that was not as
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2078.md b/docs/assembler/masm/ml-nonfatal-error-a2078.md
index 6de1f863f9..cd8a17011d 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2078.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2078.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2078"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2078"]
helpviewer_keywords: ["A2078"]
ms.assetid: 42ac48fd-ac7f-4e74-a11e-20181d443faf
@@ -14,4 +14,4 @@ A conditional jump or loop cannot take a memory operand. It must be given a rela
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2079.md b/docs/assembler/masm/ml-nonfatal-error-a2079.md
index 06f61754b1..cbd0e704f2 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2079.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2079.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2079"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2079"]
helpviewer_keywords: ["A2079"]
ms.assetid: 87003fa1-ce71-4572-9efc-06a4404860ab
@@ -14,4 +14,4 @@ A conditional jump or loop cannot be to a different segment or group.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2083.md b/docs/assembler/masm/ml-nonfatal-error-a2083.md
index 6a14da4718..f72bc0e051 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2083.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2083.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2083"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2083"]
helpviewer_keywords: ["A2083"]
ms.assetid: d2715877-1702-44e5-ab8f-6ef1fb6069f1
@@ -14,4 +14,4 @@ A register scale was specified that was not 1, 2, 4, or 8.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2085.md b/docs/assembler/masm/ml-nonfatal-error-a2085.md
index 6869f7cd1a..07ed1484ad 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2085.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2085.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2085"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2085"]
helpviewer_keywords: ["A2085"]
ms.assetid: c2fef415-a32b-4249-896c-6d981fc6e327
@@ -12,8 +12,8 @@ ms.assetid: c2fef415-a32b-4249-896c-6d981fc6e327
An attempt was made to use an instruction, register, or keyword that was not valid for the current processor mode.
-For example, 32-bit registers require [.386](../../assembler/masm/dot-386.md) or above. Control registers such as CR0 require privileged mode [.386P](../../assembler/masm/dot-386p.md) or above. This error will also be generated for the **NEAR32**, **FAR32**, and **FLAT** keywords, which require .**386** or above.
+For example, 32-bit registers require [.386](dot-386.md) or above. Control registers such as CR0 require privileged mode [.386P](dot-386p.md) or above. This error will also be generated for the **NEAR32**, **FAR32**, and **FLAT** keywords, which require .**386** or above.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2096.md b/docs/assembler/masm/ml-nonfatal-error-a2096.md
index 9595077b8d..5ecf341f99 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2096.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2096.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2096"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2096"]
helpviewer_keywords: ["A2096"]
ms.assetid: bab0b5ee-b39f-4e44-a41a-3f949fab4297
@@ -16,8 +16,8 @@ One of the following occurred:
- The left operand specified with the segment override operator (**:**) was not a segment register (CS, DS, SS, ES, FS, or GS), group name, segment name, or segment expression.
-- The [ASSUME](../../assembler/masm/assume.md) directive was given a segment register without a valid segment address, segment register, group, or the special **FLAT** group.
+- The [ASSUME](assume.md) directive was given a segment register without a valid segment address, segment register, group, or the special **FLAT** group.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2097.md b/docs/assembler/masm/ml-nonfatal-error-a2097.md
index f02a3ae494..44b4dca8d9 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2097.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2097.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2097"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2097"]
helpviewer_keywords: ["A2097"]
ms.assetid: 52f6f1f8-4eb4-4264-8619-7b9ccb20c0c7
@@ -10,8 +10,8 @@ ms.assetid: 52f6f1f8-4eb4-4264-8619-7b9ccb20c0c7
**segment expected : identifier**
-The [GROUP](../../assembler/masm/group.md) directive was given an identifier that was not a defined segment.
+The [GROUP](group.md) directive was given an identifier that was not a defined segment.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2107.md b/docs/assembler/masm/ml-nonfatal-error-a2107.md
index b78d56d190..69b4f7e0b6 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2107.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2107.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2107"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2107"]
helpviewer_keywords: ["A2107"]
ms.assetid: 0385b9f2-36df-4e30-a905-ab49bdc504d1
@@ -14,4 +14,4 @@ An attempt was made to make an implicit far jump or call to a near label in anot
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2119.md b/docs/assembler/masm/ml-nonfatal-error-a2119.md
index ba52b05fd5..920b340c9e 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2119.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2119.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2119"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2119"]
helpviewer_keywords: ["A2119"]
ms.assetid: 4d4ee6da-3a58-495c-a1da-c3a405c4c18d
@@ -12,8 +12,8 @@ ms.assetid: 4d4ee6da-3a58-495c-a1da-c3a405c4c18d
A procedure definition or prototype was not given a language type.
-A language type must be declared in each procedure definition or prototype if a default language type is not specified. A default language type is set using either the [.MODEL](../../assembler/masm/dot-model.md) directive, **OPTION LANG**, or the ML command-line options **/Gc** or **/Gd**.
+A language type must be declared in each procedure definition or prototype if a default language type is not specified. A default language type is set using either the [.MODEL](dot-model.md) directive, **OPTION LANG**, or the ML command-line options **/Gc** or **/Gd**.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2133.md b/docs/assembler/masm/ml-nonfatal-error-a2133.md
index 1aaf8e32a2..e4f5be9e0c 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2133.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2133.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2133"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2133"]
helpviewer_keywords: ["A2133"]
ms.assetid: 5ba50911-22c8-43b7-90e2-946fc612e05f
@@ -10,7 +10,7 @@ ms.assetid: 5ba50911-22c8-43b7-90e2-946fc612e05f
**register value overwritten by INVOKE**
-A register was passed as an argument to a procedure, but the code generated by [INVOKE](../../assembler/masm/invoke.md) to pass other arguments destroyed the contents of the register.
+A register was passed as an argument to a procedure, but the code generated by [INVOKE](invoke.md) to pass other arguments destroyed the contents of the register.
The AX, AL, AH, EAX, DX, DL, DH, and EDX registers may be used by the assembler to perform data conversion.
@@ -18,4 +18,4 @@ Use a different register.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2137.md b/docs/assembler/masm/ml-nonfatal-error-a2137.md
index 9b5d79ad2d..98f7b28bb5 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2137.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2137.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2137"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2137"]
helpviewer_keywords: ["A2137"]
ms.assetid: 913172e3-866e-49c3-9502-e49d1f0df4b0
@@ -10,8 +10,8 @@ ms.assetid: 913172e3-866e-49c3-9502-e49d1f0df4b0
**too few arguments to INVOKE**
-The number of arguments passed using the [INVOKE](../../assembler/masm/invoke.md) directive was fewer than the number of required parameters specified in the prototype for the procedure being invoked.
+The number of arguments passed using the [INVOKE](invoke.md) directive was fewer than the number of required parameters specified in the prototype for the procedure being invoked.
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2189.md b/docs/assembler/masm/ml-nonfatal-error-a2189.md
index d0a46ac7db..9cad2a3e36 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2189.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2189.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2189"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2189"]
helpviewer_keywords: ["A2189"]
ms.assetid: 39649f39-57bc-4ceb-ab16-53f9b2a8d2d5
@@ -14,4 +14,4 @@ The alignment specified by the **ALIGN** or `EVEN` directive was greater than th
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2206.md b/docs/assembler/masm/ml-nonfatal-error-a2206.md
index 1a3199089d..858c629d20 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2206.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2206.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2206"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2206"]
helpviewer_keywords: ["A2206"]
ms.assetid: 711846d0-5a09-4353-8857-60588c25526a
@@ -20,4 +20,4 @@ value1 = ( 1 + 2 ) 3
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-nonfatal-error-a2219.md b/docs/assembler/masm/ml-nonfatal-error-a2219.md
index d88d13fbbb..b155ecf9c7 100644
--- a/docs/assembler/masm/ml-nonfatal-error-a2219.md
+++ b/docs/assembler/masm/ml-nonfatal-error-a2219.md
@@ -1,7 +1,7 @@
---
title: "ML Nonfatal Error A2219"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A2219"]
helpviewer_keywords: ["A2219"]
ms.assetid: 5ebc2f40-e47e-4f8e-b7b9-960b9cfc9f6d
@@ -12,8 +12,8 @@ ms.assetid: 5ebc2f40-e47e-4f8e-b7b9-960b9cfc9f6d
## Remarks
-The operand for [.ALLOCSTACK](../../assembler/masm/dot-allocstack.md) and [.SAVEREG](../../assembler/masm/dot-savereg.md) must be a multiple of 8. The operand for [.SAVEXMM128](../../assembler/masm/dot-savexmm128.md) and [.SETFRAME](../../assembler/masm/dot-setframe.md) must be a multiple of 16.
+The operand for [.ALLOCSTACK](dot-allocstack.md) and [.SAVEREG](dot-savereg.md) must be a multiple of 8. The operand for [.SAVEXMM128](dot-savexmm128.md) and [.SETFRAME](dot-setframe.md) must be a multiple of 16.
## See also
-[ML error messages](../../assembler/masm/ml-error-messages.md)
+[ML error messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-warning-a4004.md b/docs/assembler/masm/ml-warning-a4004.md
index 4d1fcee31a..6679a85904 100644
--- a/docs/assembler/masm/ml-warning-a4004.md
+++ b/docs/assembler/masm/ml-warning-a4004.md
@@ -1,7 +1,7 @@
---
title: "ML Warning A4004"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A4004"]
helpviewer_keywords: ["A4004"]
ms.assetid: f11b13c9-fa8d-49f2-b816-a6b7871c7261
@@ -14,4 +14,4 @@ An attempt was made to assume a value for the CS register. CS is always set to t
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-warning-a4012.md b/docs/assembler/masm/ml-warning-a4012.md
index a1c2139d2f..a873a3c856 100644
--- a/docs/assembler/masm/ml-warning-a4012.md
+++ b/docs/assembler/masm/ml-warning-a4012.md
@@ -1,7 +1,7 @@
---
title: "ML Warning A4012"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A4012"]
helpviewer_keywords: ["A4012"]
ms.assetid: 842b1259-9679-4eeb-a02d-672a583a94e5
@@ -16,4 +16,4 @@ CodeView cannot process modules with code in segments with class names that do n
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/ml-warning-a4014.md b/docs/assembler/masm/ml-warning-a4014.md
index 930f9fa964..bdeea67e31 100644
--- a/docs/assembler/masm/ml-warning-a4014.md
+++ b/docs/assembler/masm/ml-warning-a4014.md
@@ -1,7 +1,7 @@
---
title: "ML Warning A4014"
-ms.date: "08/30/2018"
-ms.topic: "error-reference"
+ms.date: "12/17/2019"
+ms.custom: "error-reference"
f1_keywords: ["A4014"]
helpviewer_keywords: ["A4014"]
ms.assetid: 11bc8920-3255-4ac8-999a-b9ea9c15bc81
@@ -14,4 +14,4 @@ An attempt was made to define initialized data within a BSS section. A BSS sect
## See also
-[ML Error Messages](../../assembler/masm/ml-error-messages.md)
\ No newline at end of file
+[ML Error Messages](ml-error-messages.md)
diff --git a/docs/assembler/masm/mmword.md b/docs/assembler/masm/mmword.md
index 79f2f7f02c..77556ca1a4 100644
--- a/docs/assembler/masm/mmword.md
+++ b/docs/assembler/masm/mmword.md
@@ -1,6 +1,6 @@
---
title: "MMWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["MMWORD"]
helpviewer_keywords: ["MMWORD directive"]
ms.assetid: b4c5a104-9078-4fb4-afc3-d1e63abe562a
@@ -11,22 +11,26 @@ Used for 64-bit multimedia operands with MMX and SSE (XMM) instructions.
## Syntax
-> MMWORD
+> **MMWORD**
## Remarks
-`MMWORD` is a type. Prior to MMWORD being added to MASM, equivalent functionality could have been achieved with:
+**MMWORD** is a type. Prior to **MMWORD** being added to MASM, equivalent functionality could have been achieved with:
```asm
mov mm0, qword ptr [ebx]
```
-While both instructions work on 64-bit operands, `QWORD` is the type for 64-bit unsigned integers and `MMWORD` is the type for a 64-bit multimedia value.
+While both instructions work on 64-bit operands, **QWORD** is the type for 64-bit unsigned integers and **MMWORD** is the type for a 64-bit multimedia value.
-`MMWORD` is intended to represent the same type as [__m64](../../cpp/m64.md).
+**MMWORD** is intended to represent the same type as [__m64](../../cpp/m64.md).
## Example
```asm
movq mm0, mmword ptr [ebx]
-```
\ No newline at end of file
+```
+
+## See Also
+
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/name-masm.md b/docs/assembler/masm/name-masm.md
index c79b9ce6ca..1698c4e962 100644
--- a/docs/assembler/masm/name-masm.md
+++ b/docs/assembler/masm/name-masm.md
@@ -1,18 +1,19 @@
---
title: "NAME (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["name"]
helpviewer_keywords: ["NAME directive"]
ms.assetid: 7a7ab431-6ffe-4293-9b76-4a5e020c66da
---
-# NAME (MASM)
+# NAME
Ignored.
## Syntax
-> NAME
+> **NAME**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-abs.md b/docs/assembler/masm/operator-abs.md
index 2d0d437b94..87149bd0c5 100644
--- a/docs/assembler/masm/operator-abs.md
+++ b/docs/assembler/masm/operator-abs.md
@@ -1,18 +1,19 @@
---
title: "operator ABS"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator ABS"]
helpviewer_keywords: ["operator ABS", "ABS operator"]
ms.assetid: 0c70b68e-5706-4042-a5fe-8595d0b510f2
---
# operator ABS
-See the [EXTERNDEF](../../assembler/masm/externdef.md) directive.
+See the [EXTERNDEF](externdef.md) directive.
## Syntax
-> ABS
+> **ABS**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-add.md b/docs/assembler/masm/operator-add.md
index e579b7d353..64b02fb321 100644
--- a/docs/assembler/masm/operator-add.md
+++ b/docs/assembler/masm/operator-add.md
@@ -1,6 +1,6 @@
---
title: "operator +"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["+", "operator +"]
helpviewer_keywords: ["+ operator, syntax", "+ operator", "arithmetic operators [C++], addition", "operators [MASM], arithmetic"]
ms.assetid: 89e31a6e-2f68-4481-b394-1348e14e4653
@@ -15,4 +15,5 @@ The first operator returns *expression1* plus *expression2*.
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators Reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-addr.md b/docs/assembler/masm/operator-addr.md
index 42dacc23d6..4408aaa3b5 100644
--- a/docs/assembler/masm/operator-addr.md
+++ b/docs/assembler/masm/operator-addr.md
@@ -1,18 +1,19 @@
---
title: "operator ADDR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ADDR", "operator ADDR"]
helpviewer_keywords: ["ADDR operator", "operator ADDR"]
ms.assetid: 9c2a46e4-3222-4a5b-baa2-07bdb62b7d03
---
# operator ADDR
-See the [INVOKE](../../assembler/masm/invoke.md) directive.
+See the [INVOKE](invoke.md) directive.
## Syntax
-> ADDR
+> **ADDR**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators Reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-and.md b/docs/assembler/masm/operator-and.md
index e2932aaa18..6a13af628d 100644
--- a/docs/assembler/masm/operator-and.md
+++ b/docs/assembler/masm/operator-and.md
@@ -1,6 +1,6 @@
---
title: "operator AND"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["And", "operator AND"]
helpviewer_keywords: ["operator AND", "AND operator"]
ms.assetid: 6862d248-c169-4db8-a478-9d0ce4fdd1e3
@@ -11,8 +11,9 @@ Returns the result of a bitwise AND operation for *expression1* and *expression2
## Syntax
-> expression1 AND expression2
+> *expression1* **AND** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators Reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-bitwise-and.md b/docs/assembler/masm/operator-bitwise-and.md
index 19a437f208..ad59b563d9 100644
--- a/docs/assembler/masm/operator-bitwise-and.md
+++ b/docs/assembler/masm/operator-bitwise-and.md
@@ -1,18 +1,19 @@
---
title: "operator &"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["&", "operator &"]
helpviewer_keywords: ["& operator, syntax", "AND operator", "& operator"]
ms.assetid: f3c51a54-48ba-4b99-afed-5c45177bf694
---
# operator &
-Bitwise **AND**. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Bitwise **AND**. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 & expression2
+> *expression1* **&** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators Reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-brackets.md b/docs/assembler/masm/operator-brackets.md
index 4b6fef5227..d48e375a96 100644
--- a/docs/assembler/masm/operator-brackets.md
+++ b/docs/assembler/masm/operator-brackets.md
@@ -1,6 +1,6 @@
---
title: "operator brackets"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator []", "[]"]
helpviewer_keywords: ["operator []", "[] operator"]
ms.assetid: dbe192eb-fd47-4ea4-af94-c87a047cd8ca
@@ -11,8 +11,9 @@ Returns *expression1* plus \[*expression2*\].
## Syntax
-> expression1 [expression2]
+> *expression1* **[** expression2 **]**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators Reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-carry-q.md b/docs/assembler/masm/operator-carry-q.md
index 92c891efd3..f5ca6d09af 100644
--- a/docs/assembler/masm/operator-carry-q.md
+++ b/docs/assembler/masm/operator-carry-q.md
@@ -1,18 +1,19 @@
---
title: "operator CARRY?"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["CARRY?", "operator CARRY?"]
helpviewer_keywords: ["operator CARRY?", "CARRY? operator"]
ms.assetid: 5b195de7-3f66-436a-b75a-4b8d7c3c83b7
---
# operator CARRY?
-Status of carry flag. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Status of carry flag. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> CARRY?
+> **CARRY?**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-colon.md b/docs/assembler/masm/operator-colon.md
index ddea831111..a41b1a59f1 100644
--- a/docs/assembler/masm/operator-colon.md
+++ b/docs/assembler/masm/operator-colon.md
@@ -1,6 +1,6 @@
---
title: "operator :"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator :"]
helpviewer_keywords: [": operator", "operator :"]
ms.assetid: 37c02c10-d3b0-44c2-bc69-3e8837991920
@@ -11,8 +11,9 @@ Overrides the default segment of *expression* with *segment*. The *segment* can
## Syntax
-> *segment* : *expression*
+> *segment* **:** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-dot-type.md b/docs/assembler/masm/operator-dot-type.md
index d6dca46fef..d7177c255b 100644
--- a/docs/assembler/masm/operator-dot-type.md
+++ b/docs/assembler/masm/operator-dot-type.md
@@ -1,18 +1,19 @@
---
title: "operator .TYPE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: [".TYPE", "operator .TYPE"]
helpviewer_keywords: ["operator .TYPE", ".TYPE operator"]
ms.assetid: bf4a4be6-d019-40df-a966-8f8f34f775ea
---
# operator .TYPE
-See [OPATTR](../../assembler/masm/operator-opattr.md).
+See [OPATTR](operator-opattr.md).
## Syntax
-> .TYPE expression
+> **.TYPE** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-dot.md b/docs/assembler/masm/operator-dot.md
index 50306ac6a1..54583d1bc7 100644
--- a/docs/assembler/masm/operator-dot.md
+++ b/docs/assembler/masm/operator-dot.md
@@ -1,6 +1,6 @@
---
title: "operator dot"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator ."]
helpviewer_keywords: ["dot operator (.)", "operator .", ". operator"]
ms.assetid: 468ea0c8-5b08-47be-991b-38abacb77611
@@ -11,10 +11,11 @@ The first operator returns *expression* plus the offset of *field* within its st
## Syntax
-> *expression* __.__ *field* \[__.__ *field*] ...
+> *expression*__.__*field*⟦__.__*field* ...⟧
>
-> __\[__*register*__]__ __.__ *field* \[__.__ *field*] ...
+> **\[**_register_**]**__.__*field*⟦__.__*field* ...⟧
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-double-quote.md b/docs/assembler/masm/operator-double-quote.md
index 212c43b7b2..c9ac3f98ea 100644
--- a/docs/assembler/masm/operator-double-quote.md
+++ b/docs/assembler/masm/operator-double-quote.md
@@ -1,6 +1,6 @@
---
title: "operator " ""
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["" "", "operator " ""]
helpviewer_keywords: ["" " operator", "operator " ""]
ms.assetid: e96fd419-06d4-4989-b65b-7d3754f00f81
@@ -11,8 +11,9 @@ Treats "*text*" as a string.
## Syntax
-> "text"
+> __"__*text*__"__
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-dup.md b/docs/assembler/masm/operator-dup.md
index b6ed840729..bb924bbf79 100644
--- a/docs/assembler/masm/operator-dup.md
+++ b/docs/assembler/masm/operator-dup.md
@@ -1,6 +1,6 @@
---
title: "operator DUP"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator DUP"]
helpviewer_keywords: ["operator DUP", "DUP operator"]
ms.assetid: ed1e91ea-91ed-43c0-9315-7e532df65a28
@@ -11,8 +11,9 @@ Specifies *count* number of declarations of *initialvalue*.
## Syntax
-> count DUP (initialvalue [[, initialvalue]]...)
+> *count* **DUP** __(__*initialvalue* ⟦__,__ *initialvalue* ...⟧__)__
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-eq.md b/docs/assembler/masm/operator-eq.md
index d8a16fbbb4..1d596ac7f2 100644
--- a/docs/assembler/masm/operator-eq.md
+++ b/docs/assembler/masm/operator-eq.md
@@ -1,6 +1,6 @@
---
title: "operator EQ"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator EQ", "EQ"]
helpviewer_keywords: ["operator EQ", "EQ operator"]
ms.assetid: d88afd01-dd8e-419d-ac4e-49afb4a67197
@@ -11,8 +11,9 @@ Returns true (-1) if *expression1* equals *expression2*, or returns false (0) if
## Syntax
-> expression1 EQ expression2
+> *expression1* **EQ** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-equal-masm-run-time.md b/docs/assembler/masm/operator-equal-masm-run-time.md
index cf89598858..87eddc116f 100644
--- a/docs/assembler/masm/operator-equal-masm-run-time.md
+++ b/docs/assembler/masm/operator-equal-masm-run-time.md
@@ -1,18 +1,19 @@
---
title: "operator == (MASM Run Time)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator =="]
helpviewer_keywords: ["operator ==", "== operator"]
ms.assetid: 5412dfa7-8cec-4853-a641-5c9550098b19
---
# operator == (MASM Run Time)
-Is equal to. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Is equal to. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 == expression2
+> *expression1* **==** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-ge.md b/docs/assembler/masm/operator-ge.md
index 2b09ecbc24..9c431b4a16 100644
--- a/docs/assembler/masm/operator-ge.md
+++ b/docs/assembler/masm/operator-ge.md
@@ -1,6 +1,6 @@
---
title: "operator GE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["GE", "operator GE"]
helpviewer_keywords: ["GE operator", "operator GE"]
ms.assetid: 28804311-174d-42d0-9ce1-2187b81bc844
@@ -11,8 +11,9 @@ Returns true (-1) if *expression1* is greater than or equal to *expression2*, or
## Syntax
-> expression1 GE expression2
+> *expression1* **GE** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-greater-or-equal-masm-run-time.md b/docs/assembler/masm/operator-greater-or-equal-masm-run-time.md
index 5527895748..7cf920d951 100644
--- a/docs/assembler/masm/operator-greater-or-equal-masm-run-time.md
+++ b/docs/assembler/masm/operator-greater-or-equal-masm-run-time.md
@@ -1,18 +1,19 @@
---
title: "operator >= (MASM Run Time)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator >="]
helpviewer_keywords: [">= operator, comparing specific objects", "operator >="]
ms.assetid: c7366d99-f7b8-4eb8-b5df-6dc74491b114
---
# operator >= (MASM Run Time)
-Is greater than or equal to. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Is greater than or equal to. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 >= expression2
+> *expression1* **>=** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-greater-than-masm-run-time.md b/docs/assembler/masm/operator-greater-than-masm-run-time.md
index 32b16dd501..f82a568cb7 100644
--- a/docs/assembler/masm/operator-greater-than-masm-run-time.md
+++ b/docs/assembler/masm/operator-greater-than-masm-run-time.md
@@ -1,18 +1,19 @@
---
title: "operator > (MASM Run Time)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator >"]
helpviewer_keywords: ["> operator, comparing specific objects", "operator >"]
ms.assetid: f2244900-8ddf-4e8c-9ab0-68b9118a6f75
---
# operator > (MASM Run Time)
-Is greater than. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Is greater than. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 > expression2
+> *expression1* **>** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-gt.md b/docs/assembler/masm/operator-gt.md
index e3f1b055b9..594795cca0 100644
--- a/docs/assembler/masm/operator-gt.md
+++ b/docs/assembler/masm/operator-gt.md
@@ -1,6 +1,6 @@
---
title: "operator GT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator GT", "GT"]
helpviewer_keywords: ["operator GT", "GT operator"]
ms.assetid: 48194297-7bf9-42f9-957a-e1a5b6d7be7c
@@ -11,8 +11,9 @@ Returns true (-1) if *expression1* is greater than *expression2*, or returns fal
## Syntax
-> expression1 GT expression2
+> *expression1* **GT** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-high.md b/docs/assembler/masm/operator-high.md
index 238b9d5350..c80b171daa 100644
--- a/docs/assembler/masm/operator-high.md
+++ b/docs/assembler/masm/operator-high.md
@@ -1,6 +1,6 @@
---
title: "operator HIGH"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["HIGH", "operator HIGH"]
helpviewer_keywords: ["operator HIGH", "HIGH operator"]
ms.assetid: 1deea1af-5cba-4477-aab9-21891250cdfc
@@ -11,8 +11,9 @@ Returns the high 8 bits of the low 16 bits of *expression*. MASM expressions are
## Syntax
-> HIGH expression
+> **HIGH** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-high32.md b/docs/assembler/masm/operator-high32.md
index de266cde38..619cc18342 100644
--- a/docs/assembler/masm/operator-high32.md
+++ b/docs/assembler/masm/operator-high32.md
@@ -1,6 +1,6 @@
---
title: "operator HIGH32"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["HIGH32", "operator HIGH32"]
helpviewer_keywords: ["operator HIGH32", "HIGH32 operator"]
ms.assetid: b32ae3b8-0bb3-42f8-b616-6f568791a618
@@ -11,8 +11,9 @@ Returns the high 32 bits of *expression*. MASM expressions are 64-bit values.
## Syntax
-> HIGH32 expression
+> **HIGH32** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-highword.md b/docs/assembler/masm/operator-highword.md
index cd8e2110fc..a6099ead8f 100644
--- a/docs/assembler/masm/operator-highword.md
+++ b/docs/assembler/masm/operator-highword.md
@@ -1,6 +1,6 @@
---
title: "operator HIGHWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["HIGHWORD", "operator HIGHWORD"]
helpviewer_keywords: ["operator HIGHWORD", "HIGHWORD operator"]
ms.assetid: 6a3e4d60-e7b6-4cab-b4d7-d4cb7fb307c9
@@ -11,8 +11,9 @@ Returns the high 16 bits of the low 32 bits of *expression*. MASM expressions ar
## Syntax
-> HIGHWORD expression
+> **HIGHWORD** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-imagerel.md b/docs/assembler/masm/operator-imagerel.md
index fed0443123..8e5ab2e04d 100644
--- a/docs/assembler/masm/operator-imagerel.md
+++ b/docs/assembler/masm/operator-imagerel.md
@@ -1,17 +1,17 @@
---
title: "operator IMAGEREL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator IMAGEREL", "IMAGEREL"]
helpviewer_keywords: ["operator IMAGEREL", "IMAGEREL operator"]
ms.assetid: 5b5ea425-36f0-467c-9262-62c484b7fdb4
---
# operator IMAGEREL
-Returns the image relative offset of `expression`.
+Returns the image relative offset of *expression*.
## Syntax
-> IMAGEREL expression
+> **IMAGEREL** *expression*
## Remarks
@@ -21,4 +21,5 @@ IMAGEREL is available only with COFF object emission.
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-le.md b/docs/assembler/masm/operator-le.md
index 00a94d5440..ecc9cad6a0 100644
--- a/docs/assembler/masm/operator-le.md
+++ b/docs/assembler/masm/operator-le.md
@@ -1,6 +1,6 @@
---
title: "operator LE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["LE", "operator LE"]
helpviewer_keywords: ["LE operator", "operator LE"]
ms.assetid: 3192e7ac-7577-47bd-ae3e-2cdebcc4e568
@@ -11,8 +11,9 @@ Returns true (-1) if *expression1* is less than or equal to *expression2*, or re
## Syntax
-> expression1 LE expression2
+> *expression1* **LE** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-length.md b/docs/assembler/masm/operator-length.md
index e1a3c72b81..a85d9a06e9 100644
--- a/docs/assembler/masm/operator-length.md
+++ b/docs/assembler/masm/operator-length.md
@@ -1,6 +1,6 @@
---
title: "operator LENGTH"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator LENGTH", "length"]
helpviewer_keywords: ["LENGTH operator", "operator LENGTH"]
ms.assetid: dee7ba98-8e91-4078-9435-a2c8506e37f2
@@ -11,8 +11,9 @@ Returns the number of data items in *variable* created by the first initializer.
## Syntax
-> LENGTH variable
+> **LENGTH** *variable*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-lengthof.md b/docs/assembler/masm/operator-lengthof.md
index d2d7c228e6..7f8bb4600f 100644
--- a/docs/assembler/masm/operator-lengthof.md
+++ b/docs/assembler/masm/operator-lengthof.md
@@ -1,6 +1,6 @@
---
title: "operator LENGTHOF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator LENGTHOF", "LENGTHOF"]
helpviewer_keywords: ["LENGTHOF operator", "operator LENGTHOF"]
ms.assetid: 09c40dbb-a4e0-4fc6-80ab-dc9967240ef6
@@ -11,8 +11,9 @@ Returns the number of data objects in *variable*.
## Syntax
-> LENGTHOF variable
+> **LENGTHOF** *variable*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-less-or-equal-masm-run-time.md b/docs/assembler/masm/operator-less-or-equal-masm-run-time.md
index ce5961779f..f75abe51d1 100644
--- a/docs/assembler/masm/operator-less-or-equal-masm-run-time.md
+++ b/docs/assembler/masm/operator-less-or-equal-masm-run-time.md
@@ -1,18 +1,19 @@
---
title: "operator <= (MASM Run Time)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator <="]
helpviewer_keywords: ["operator <=", "<= operator, comparing specific objects"]
ms.assetid: a5676804-07ef-40ab-8251-cde5b11ebdf9
---
# operator <= (MASM Run Time)
-Is less than or equal to. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Is less than or equal to. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 <= expression2
+> *expression1* **<=** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-less-than-masm-run-time.md b/docs/assembler/masm/operator-less-than-masm-run-time.md
index 6fc5ab374e..bdf8e54cfd 100644
--- a/docs/assembler/masm/operator-less-than-masm-run-time.md
+++ b/docs/assembler/masm/operator-less-than-masm-run-time.md
@@ -1,18 +1,19 @@
---
title: "operator < (MASM Run Time)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator <"]
helpviewer_keywords: ["operator <", "< operator, comparing specific objects"]
ms.assetid: 1d5fc8f1-a62f-4a3d-824d-619c6f421a04
---
# operator < (MASM Run Time)
-Is less than. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Is less than. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 < expression2
+> *expression1* **<** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-literal.md b/docs/assembler/masm/operator-literal.md
index 12c801a828..5a2faad22d 100644
--- a/docs/assembler/masm/operator-literal.md
+++ b/docs/assembler/masm/operator-literal.md
@@ -1,6 +1,6 @@
---
title: "operator <>"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["<>", "operator <>"]
helpviewer_keywords: ["operator <>", "<> operator"]
ms.assetid: bc5acf43-df3e-499b-a3ed-1672cfa0d1ed
@@ -11,8 +11,9 @@ Treats *text* as a single literal element.
## Syntax
-> \<*text*>
+> __\<__*text*__>__
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-logical-and-masm-run-time.md b/docs/assembler/masm/operator-logical-and-masm-run-time.md
index f7c18999a2..4be1f43f01 100644
--- a/docs/assembler/masm/operator-logical-and-masm-run-time.md
+++ b/docs/assembler/masm/operator-logical-and-masm-run-time.md
@@ -1,18 +1,19 @@
---
title: "operator && (MASM Run Time)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator &&"]
helpviewer_keywords: ["operator &&", "&& operator"]
ms.assetid: 0a633a40-114c-48f5-88ff-09bc8d9b281a
---
# operator && (MASM Run Time)
-Logical **AND**. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Logical **AND**. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 && expression2
+> *expression1* **&&** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-logical-and-masm.md b/docs/assembler/masm/operator-logical-and-masm.md
index c8787f913c..0639d370ff 100644
--- a/docs/assembler/masm/operator-logical-and-masm.md
+++ b/docs/assembler/masm/operator-logical-and-masm.md
@@ -1,6 +1,6 @@
---
title: "Substitution operator (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator &&"]
helpviewer_keywords: ["operator &&", "&& operator"]
ms.assetid: cab40336-02b2-48a1-a429-3782fc8e941d
@@ -11,8 +11,9 @@ Replaces *parameter* with its corresponding argument value.
## Syntax
-> &*parameter*&
+> __&__*parameter*__&__
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-logical-not-masm-run-time.md b/docs/assembler/masm/operator-logical-not-masm-run-time.md
index d1f252ea5b..2a44333e2f 100644
--- a/docs/assembler/masm/operator-logical-not-masm-run-time.md
+++ b/docs/assembler/masm/operator-logical-not-masm-run-time.md
@@ -1,18 +1,19 @@
---
title: "operator ! (MASM Run Time)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator !"]
helpviewer_keywords: ["operator !, syntax", "! operator"]
ms.assetid: e94f737a-8251-4a3d-95ec-e95c35689b37
---
# operator ! (MASM Run Time)
-Logical negation. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Logical negation. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> ! *expression*
+> **!** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-logical-not-masm.md b/docs/assembler/masm/operator-logical-not-masm.md
index c0d621c1e1..c95e3af298 100644
--- a/docs/assembler/masm/operator-logical-not-masm.md
+++ b/docs/assembler/masm/operator-logical-not-masm.md
@@ -1,18 +1,19 @@
---
title: "operator ! (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator !"]
helpviewer_keywords: ["operator !, syntax", "! operator", "operator !"]
ms.assetid: 220bb468-7c88-4a5c-8303-2bd7f966fdeb
---
# operator ! (MASM)
-Treats `character` as a literal character rather than as an operator or symbol.
+Treats *character* as a literal character rather than as an operator or symbol.
## Syntax
-> ! *character*
+> **!** *character*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-logical-or.md b/docs/assembler/masm/operator-logical-or.md
index 5222d8665d..f079783a1a 100644
--- a/docs/assembler/masm/operator-logical-or.md
+++ b/docs/assembler/masm/operator-logical-or.md
@@ -1,18 +1,19 @@
---
title: "operator ||"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator ||"]
helpviewer_keywords: ["|| operator", "operator ||"]
ms.assetid: 50b15b63-649c-4bcf-a663-a10ee3cb3db6
---
# operator ||
-Logical `OR`. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Logical OR. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 || expression2
+> *expression1* **||** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-low.md b/docs/assembler/masm/operator-low.md
index af2a943696..abb0fd3aa1 100644
--- a/docs/assembler/masm/operator-low.md
+++ b/docs/assembler/masm/operator-low.md
@@ -1,6 +1,6 @@
---
title: "operator LOW"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator LOW", "LOW"]
helpviewer_keywords: ["operator LOW", "LOW operator"]
ms.assetid: d09e1f6a-dcf5-444d-81fd-3670178d6885
@@ -11,8 +11,9 @@ Returns the low 8 bits of *expression*. MASM expressions are 64-bit values.
## Syntax
-> LOW expression
+> **LOW** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-low32.md b/docs/assembler/masm/operator-low32.md
index fb212fef62..ab28b7e2bd 100644
--- a/docs/assembler/masm/operator-low32.md
+++ b/docs/assembler/masm/operator-low32.md
@@ -1,6 +1,6 @@
---
title: "operator LOW32"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["LOW32", "operator LOW32"]
helpviewer_keywords: ["LOW32 operator", "operator LOW32"]
ms.assetid: e552641c-e5be-4ce6-91ea-1ebad912ecab
@@ -11,8 +11,9 @@ Returns the low 32 bits of *expression*. MASM expressions are 64-bit values.
## Syntax
-> LOW32 expression
+> **LOW32** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-lowword.md b/docs/assembler/masm/operator-lowword.md
index 82ecdff0f7..ac7774aed5 100644
--- a/docs/assembler/masm/operator-lowword.md
+++ b/docs/assembler/masm/operator-lowword.md
@@ -1,6 +1,6 @@
---
title: "operator LOWWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator LOWWORD", "LOWWORD"]
helpviewer_keywords: ["LOWWORD operator", "operator LOWWORD"]
ms.assetid: ceb45c78-474b-4099-b46e-35eb072294ff
@@ -11,8 +11,9 @@ Returns the low 16 bits of *expression*. MASM expressions are 64-bit values.
## Syntax
-> LOWWORD expression
+> **LOWWORD** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-lroffset.md b/docs/assembler/masm/operator-lroffset.md
index d57bb8a712..4c4ac2f419 100644
--- a/docs/assembler/masm/operator-lroffset.md
+++ b/docs/assembler/masm/operator-lroffset.md
@@ -1,6 +1,6 @@
---
title: "operator LROFFSET"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["LROFFSET", "operator LROFFSET"]
helpviewer_keywords: ["operator LROFFSET", "LROFFSET operator"]
ms.assetid: 61ab45d4-7a30-440d-9c11-2a9dfa6ae565
@@ -11,8 +11,9 @@ Returns the offset of *expression*. Same as **OFFSET**, but it generates a loade
## Syntax
-> LROFFSET expression
+> **LROFFSET** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-lt.md b/docs/assembler/masm/operator-lt.md
index 5691a19c36..2967263946 100644
--- a/docs/assembler/masm/operator-lt.md
+++ b/docs/assembler/masm/operator-lt.md
@@ -1,6 +1,6 @@
---
title: "operator LT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["LT", "operator LT"]
helpviewer_keywords: ["LT operator", "operator LT"]
ms.assetid: 6a7b43cc-2f38-49e9-b42e-8e5b5c41b965
@@ -11,8 +11,9 @@ Returns true (-1) if *expression1* is less than *expression2*, or returns false
## Syntax
-> expression1 LT expression2
+> *expression1* **LT** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-mask.md b/docs/assembler/masm/operator-mask.md
index 705094bd9e..04fdb4163c 100644
--- a/docs/assembler/masm/operator-mask.md
+++ b/docs/assembler/masm/operator-mask.md
@@ -1,6 +1,6 @@
---
title: "operator MASK"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator MASK", "MASK"]
helpviewer_keywords: ["MASK operator", "operator MASK"]
ms.assetid: bf997f99-17c8-4230-ab69-7a9774a75d93
@@ -11,8 +11,9 @@ Returns a bit mask in which the bits in *recordfieldname* or *record* are set an
## Syntax
-> MASK {recordfieldname | record}
+> **MASK** {*recordfieldname* | *record*}
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-mod.md b/docs/assembler/masm/operator-mod.md
index a28a5b43e8..3181e0f9a2 100644
--- a/docs/assembler/masm/operator-mod.md
+++ b/docs/assembler/masm/operator-mod.md
@@ -1,6 +1,6 @@
---
title: "operator MOD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Mod", "operator MOD"]
helpviewer_keywords: ["Mod operator", "operator MOD"]
ms.assetid: 8e05e8c2-3f07-44f9-8216-5436dcb97cc7
@@ -11,8 +11,9 @@ Returns the integer value of the remainder (modulo) when dividing *expression1*
## Syntax
-> expression1 MOD expression2
+> *expression1* **MOD** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-multiply.md b/docs/assembler/masm/operator-multiply.md
index f4bf01c52d..9b1ac1e656 100644
--- a/docs/assembler/masm/operator-multiply.md
+++ b/docs/assembler/masm/operator-multiply.md
@@ -1,6 +1,6 @@
---
title: "operator *"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator *"]
helpviewer_keywords: ["* operator, syntax", "* operator", "multiplication operator [C++], syntax", "arithmetic operators [C++], multiplication", "operators [MASM], multiplication"]
ms.assetid: 6a66521c-664f-41c3-8a77-5a948df1e9ad
@@ -11,8 +11,9 @@ Returns *expression1* times *expression2*.
## Syntax
-> expression1 * expression2
+> *expression1* __\*__ *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-ne.md b/docs/assembler/masm/operator-ne.md
index 824bb9e8b0..eda618c9f2 100644
--- a/docs/assembler/masm/operator-ne.md
+++ b/docs/assembler/masm/operator-ne.md
@@ -1,6 +1,6 @@
---
title: "operator NE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["NE", "operator NE"]
helpviewer_keywords: ["NE operator", "operator NE"]
ms.assetid: 0364a3aa-e2f1-499d-8cc7-1fbec318715c
@@ -11,8 +11,9 @@ Returns true (-1) if *expression1* does not equal *expression2*, or returns fals
## Syntax
-> expression1 NE expression2
+> *expression1* **NE** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-not-equal-masm.md b/docs/assembler/masm/operator-not-equal-masm.md
index 1f9269f97c..178226fdf8 100644
--- a/docs/assembler/masm/operator-not-equal-masm.md
+++ b/docs/assembler/masm/operator-not-equal-masm.md
@@ -1,18 +1,19 @@
---
title: "operator != (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator !="]
helpviewer_keywords: ["!= operator", "operator !="]
ms.assetid: 8d48f40b-28d4-4996-ae1a-576478fd9c32
---
# operator != (MASM)
-Is not equal to. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Is not equal to. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> expression1 != expression2
+> *expression1* **!=** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-not.md b/docs/assembler/masm/operator-not.md
index 7377ac3765..bc16f1c5f8 100644
--- a/docs/assembler/masm/operator-not.md
+++ b/docs/assembler/masm/operator-not.md
@@ -1,6 +1,6 @@
---
title: "operator NOT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator NOT"]
helpviewer_keywords: ["operator NOT", "NOT operator"]
ms.assetid: d68d44fd-f92f-4b65-8d36-96de03e1b4e5
@@ -11,8 +11,9 @@ Returns *expression* with all bits reversed.
## Syntax
-> NOT expression
+> **NOT** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-offset.md b/docs/assembler/masm/operator-offset.md
index c434b9a680..7dca685a8c 100644
--- a/docs/assembler/masm/operator-offset.md
+++ b/docs/assembler/masm/operator-offset.md
@@ -1,6 +1,6 @@
---
title: "operator OFFSET"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Offset", "operator OFFSET"]
helpviewer_keywords: ["OFFSET operator", "operator OFFSET"]
ms.assetid: d93ca835-cd25-4b26-9bdf-8cc43185e03c
@@ -11,8 +11,9 @@ Returns the offset into the relevant segment of *expression*.
## Syntax
-> OFFSET expression
+> **OFFSET** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-opattr.md b/docs/assembler/masm/operator-opattr.md
index 947a621cc0..eef9c82ce6 100644
--- a/docs/assembler/masm/operator-opattr.md
+++ b/docs/assembler/masm/operator-opattr.md
@@ -1,18 +1,19 @@
---
title: "operator OPATTR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator OPATTR", "OPATTR"]
helpviewer_keywords: ["OPATTR operator", "operator OPATTR"]
ms.assetid: ebf2e514-249d-44ad-8810-6bcefb3e4cef
---
# operator OPATTR
-Returns a word defining the mode and scope of *expression*. The low byte is identical to the byte returned by [.TYPE](../../assembler/masm/operator-dot-type.md). The high byte contains additional information.
+Returns a word defining the mode and scope of *expression*. The low byte is identical to the byte returned by [.TYPE](operator-dot-type.md). The high byte contains additional information.
## Syntax
-> OPATTR expression
+> **OPATTR** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-or.md b/docs/assembler/masm/operator-or.md
index 4b30a92f06..fa00553418 100644
--- a/docs/assembler/masm/operator-or.md
+++ b/docs/assembler/masm/operator-or.md
@@ -1,18 +1,19 @@
---
title: "operator OR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator OR", "Or"]
helpviewer_keywords: ["operator OR", "OR operator, bitwise"]
ms.assetid: fab36ba6-8ee0-4778-beb9-21dce6d99db7
---
# operator OR
-Returns the result of a bitwise `OR` operation for *expression1* and *expression2*.
+Returns the result of a bitwise OR operation for *expression1* and *expression2*.
## Syntax
-> expression1 OR expression2
+> *expression1* **OR** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-overflow-q.md b/docs/assembler/masm/operator-overflow-q.md
index 7c690dba4e..39288f784f 100644
--- a/docs/assembler/masm/operator-overflow-q.md
+++ b/docs/assembler/masm/operator-overflow-q.md
@@ -1,18 +1,19 @@
---
title: "operator OVERFLOW?"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator OVERFLOW?", "OVERFLOW?"]
helpviewer_keywords: ["operator OVERFLOW?", "OVERFLOW? operator"]
ms.assetid: 376b2850-993a-4538-b8f1-bd682ff7e91c
---
# operator OVERFLOW?
-Status of overflow flag. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Status of overflow flag. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> OVERFLOW?
+> **OVERFLOW?**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-parity-q.md b/docs/assembler/masm/operator-parity-q.md
index 89fd93ace8..36505ba945 100644
--- a/docs/assembler/masm/operator-parity-q.md
+++ b/docs/assembler/masm/operator-parity-q.md
@@ -1,18 +1,19 @@
---
title: "operator PARITY?"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["PARITY?", "operator PARITY?"]
helpviewer_keywords: ["PARITY? operator", "operator PARITY?"]
ms.assetid: f8c52def-c4b7-4b81-af96-2b0c2d943f6c
---
# operator PARITY?
-Status of parity flag. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Status of parity flag. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> PARITY?
+> **PARITY?**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-percent.md b/docs/assembler/masm/operator-percent.md
index 8abd2ebd7d..c10e30d481 100644
--- a/docs/assembler/masm/operator-percent.md
+++ b/docs/assembler/masm/operator-percent.md
@@ -1,6 +1,6 @@
---
title: "operator %"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["%", "operator %"]
helpviewer_keywords: ["operator %", "% operator"]
ms.assetid: 7f07018e-b664-4655-aa93-9854eb271bbb
@@ -11,8 +11,9 @@ Treats the value of *expression* in a macro argument as text.
## Syntax
-> % *expression*
+> **%** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-ptr.md b/docs/assembler/masm/operator-ptr.md
index 134365eaf9..2ec1e1231f 100644
--- a/docs/assembler/masm/operator-ptr.md
+++ b/docs/assembler/masm/operator-ptr.md
@@ -1,6 +1,6 @@
---
title: "operator PTR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["PTR", "operator PTR"]
helpviewer_keywords: ["PTR operator", "operator PTR"]
ms.assetid: df280f36-ca06-4578-b99d-0aa139b2b969
@@ -11,10 +11,11 @@ The first operator forces the *expression* to be treated as having the specified
## Syntax
-> *type* PTR *expression*
+> *type* **PTR** *expression*
>
-> \[*distance*] PTR *type*
+> \[*distance*] **PTR** *type*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-sectionrel.md b/docs/assembler/masm/operator-sectionrel.md
index cde64a38b4..3cd8f316ae 100644
--- a/docs/assembler/masm/operator-sectionrel.md
+++ b/docs/assembler/masm/operator-sectionrel.md
@@ -1,6 +1,6 @@
---
title: "operator SECTIONREL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator SECTIONREL", "SECTIONREL"]
helpviewer_keywords: ["SECTIONREL operator", "operator SECTIONREL"]
ms.assetid: db033a9d-b029-48dd-a010-d19e3a9d1af2
@@ -11,12 +11,13 @@ Returns the section relative offset of expression relative to the section contai
## Syntax
-> SECTIONREL expression
+> **SECTIONREL** *expression*
## Remarks
-SECTIONREL is available only with COFF object emission.
+**SECTIONREL** is available only with COFF object emission.
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-seg.md b/docs/assembler/masm/operator-seg.md
index 072d1f2e40..10316da742 100644
--- a/docs/assembler/masm/operator-seg.md
+++ b/docs/assembler/masm/operator-seg.md
@@ -1,6 +1,6 @@
---
title: "operator SEG"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator SEG", "SEG"]
helpviewer_keywords: ["operator SEG", "SEG operator"]
ms.assetid: 471733f3-72a0-4024-9861-5cc48c30dd0c
@@ -11,8 +11,9 @@ Returns the segment of *expression*.
## Syntax
-> SEG expression
+> **SEG** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-semicolon.md b/docs/assembler/masm/operator-semicolon.md
index 103f2d1e53..618dde28f1 100644
--- a/docs/assembler/masm/operator-semicolon.md
+++ b/docs/assembler/masm/operator-semicolon.md
@@ -1,6 +1,6 @@
---
title: "operator ;"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator %3B", "%3B"]
helpviewer_keywords: ["operator ;", "semicolon operator", "; operator"]
ms.assetid: 8369b28c-1fee-4e9a-a4a6-7db627e21075
@@ -11,8 +11,9 @@ Treats *text* as a comment.
## Syntax
-> ; *text*
+> __;__ *text*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-semicolons.md b/docs/assembler/masm/operator-semicolons.md
index a4e719f9ef..ac8c0bf9f4 100644
--- a/docs/assembler/masm/operator-semicolons.md
+++ b/docs/assembler/masm/operator-semicolons.md
@@ -1,6 +1,6 @@
---
title: "operator ;;"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["%3B%3B", "operator %3B%3B"]
helpviewer_keywords: [";; operator", "operator ;;"]
ms.assetid: 94320c71-70df-4e71-8c22-e36797294e2b
@@ -11,8 +11,9 @@ Treats *text* as a comment in a macro that appears only in the macro definition.
## Syntax
-> ;; *text*
+> **;;** *text*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-shl.md b/docs/assembler/masm/operator-shl.md
index 7c935d4e5d..f6ef4ddec4 100644
--- a/docs/assembler/masm/operator-shl.md
+++ b/docs/assembler/masm/operator-shl.md
@@ -1,6 +1,6 @@
---
title: "operator SHL"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator SHL", "SHL"]
helpviewer_keywords: ["SHL operator", "operator SHL"]
ms.assetid: 7c4fbc25-cbbf-41ee-a07e-d6a15e9192ff
@@ -11,8 +11,9 @@ Returns the result of shifting the bits of *expression* left *count* number of b
## Syntax
-> expression SHL count
+> *expression* **SHL** *count*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-short.md b/docs/assembler/masm/operator-short.md
index c8d7527480..735cccde6d 100644
--- a/docs/assembler/masm/operator-short.md
+++ b/docs/assembler/masm/operator-short.md
@@ -1,6 +1,6 @@
---
title: "operator SHORT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator SHORT"]
helpviewer_keywords: ["operator SHORT", "SHORT operator"]
ms.assetid: 41e0982a-4f4e-4b48-ba58-e32d72053249
@@ -11,8 +11,9 @@ Sets the type of *label* to short. All jumps to *label* must be short (within th
## Syntax
-> SHORT label
+> **SHORT** *label*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-shr.md b/docs/assembler/masm/operator-shr.md
index c682fe2a99..fede4b04ba 100644
--- a/docs/assembler/masm/operator-shr.md
+++ b/docs/assembler/masm/operator-shr.md
@@ -1,6 +1,6 @@
---
title: "operator SHR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["SHR", "operator SHR"]
helpviewer_keywords: ["operator SHR", "SHR operator"]
ms.assetid: f7b401bd-e3b3-495e-b83d-b6b9cde0a30d
@@ -11,8 +11,9 @@ Returns the result of shifting the bits of *expression* right *count* number of
## Syntax
-> expression SHR count
+> *expression* **SHR** *count*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-sign-q.md b/docs/assembler/masm/operator-sign-q.md
index a2c115988f..2719b5c9c9 100644
--- a/docs/assembler/masm/operator-sign-q.md
+++ b/docs/assembler/masm/operator-sign-q.md
@@ -1,18 +1,19 @@
---
title: "operator SIGN?"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["SIGN?", "operator SIGN?"]
helpviewer_keywords: ["SIGN? operator", "operator SIGN?"]
ms.assetid: bdc431db-4623-4c7f-9eb6-31aab62dcd79
---
# operator SIGN?
-Status of sign flag. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Status of sign flag. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> SIGN?
+> **SIGN?**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-single-quote.md b/docs/assembler/masm/operator-single-quote.md
index 6d02bb66e0..cda0b2ab29 100644
--- a/docs/assembler/masm/operator-single-quote.md
+++ b/docs/assembler/masm/operator-single-quote.md
@@ -1,6 +1,6 @@
---
title: "operator ' '"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator ' '", "' '"]
helpviewer_keywords: ["operator ' '", "' ' operator"]
ms.assetid: 62a5d993-3d9b-470d-ba8a-53d76afd29b1
@@ -11,8 +11,9 @@ Treats '*text*' as a string.
## Syntax
-> 'text'
+> __'__*text*__'__
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-size.md b/docs/assembler/masm/operator-size.md
index e35fc6b9ea..2a994c8987 100644
--- a/docs/assembler/masm/operator-size.md
+++ b/docs/assembler/masm/operator-size.md
@@ -1,6 +1,6 @@
---
title: "operator SIZE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["size", "operator SIZE"]
helpviewer_keywords: ["operator SIZE", "SIZE operator"]
ms.assetid: 2e380289-3ad7-4bf0-8b1c-75211f59e5c4
@@ -11,8 +11,9 @@ Returns the number of bytes in *variable* allocated by the first initializer.
## Syntax
-> SIZE variable
+> **SIZE** *variable*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-sizeof.md b/docs/assembler/masm/operator-sizeof.md
index 87284d70c6..71d08d056c 100644
--- a/docs/assembler/masm/operator-sizeof.md
+++ b/docs/assembler/masm/operator-sizeof.md
@@ -1,18 +1,19 @@
---
title: "operator SIZEOF"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator SIZEOF"]
helpviewer_keywords: ["sizeof operator", "operator SIZEOF"]
ms.assetid: a14ed307-7d01-4be5-982f-64982a348589
---
# operator SIZEOF
-Returns the number of bytes in *variable* or `type`.
+Returns the number of bytes in *variable* or *type*.
## Syntax
-> SIZEOF {variable | type}
+> **SIZEOF** {*variable* | *type*}
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-subtract-1.md b/docs/assembler/masm/operator-subtract-1.md
index 116c2a553d..93ac29d06a 100644
--- a/docs/assembler/masm/operator-subtract-1.md
+++ b/docs/assembler/masm/operator-subtract-1.md
@@ -1,6 +1,6 @@
---
title: "operator /"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["/", "operator /"]
helpviewer_keywords: ["/ operator", "arithmetic operators [C++], division", "operators [MASM], division", "division operator, syntax", "/ operator, syntax"]
ms.assetid: 76db4c26-59c0-495f-8e3b-66c644da02a3
@@ -11,8 +11,9 @@ Returns *expression1* divided by *expression2*.
## Syntax
-> expression1 / expression2
+> *expression1* __/__ *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-subtract-2.md b/docs/assembler/masm/operator-subtract-2.md
index 3d2af05bf5..a3156bbd42 100644
--- a/docs/assembler/masm/operator-subtract-2.md
+++ b/docs/assembler/masm/operator-subtract-2.md
@@ -1,6 +1,6 @@
---
title: "operator -"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator -"]
helpviewer_keywords: ["- operator, syntax", "subtraction operator, syntax", "operators [MASM], subtraction", "arithmetic operators [C++], subtraction"]
ms.assetid: 474607cb-e48d-4c91-bef6-91ff0971d5cf
@@ -11,10 +11,11 @@ Returns *expression1* minus *expression2*. The second operator reverses the sign
## Syntax
-> *expression1* - *expression2*
+> *expression1* **-** *expression2*
>
-> -*expression*
+> __-__*expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-this.md b/docs/assembler/masm/operator-this.md
index 330c2cc51d..8a2df29a56 100644
--- a/docs/assembler/masm/operator-this.md
+++ b/docs/assembler/masm/operator-this.md
@@ -1,18 +1,19 @@
---
title: "operator THIS"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["this", "operator THIS"]
helpviewer_keywords: ["operator THIS", "THIS operator"]
ms.assetid: d795aa0e-6c01-49b7-8c64-8ab111fd82d3
---
# operator THIS
-Returns an operand of specified `type` whose offset and segment values are equal to the current location counter value.
+Returns an operand of specified *type* whose offset and segment values are equal to the current location counter value.
## Syntax
-> THIS type
+> **THIS** *type*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-type.md b/docs/assembler/masm/operator-type.md
index 5bbca0249a..8593178037 100644
--- a/docs/assembler/masm/operator-type.md
+++ b/docs/assembler/masm/operator-type.md
@@ -1,6 +1,6 @@
---
title: "operator TYPE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Type", "operator TYPE"]
helpviewer_keywords: ["operator TYPE", "TYPE operator"]
ms.assetid: 5e714381-4a58-4323-88f8-512b01b2e155
@@ -11,8 +11,9 @@ Returns the type of *expression*.
## Syntax
-> TYPE expression
+> **TYPE** *expression*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-width.md b/docs/assembler/masm/operator-width.md
index 032918ecaf..dde2ecb1a2 100644
--- a/docs/assembler/masm/operator-width.md
+++ b/docs/assembler/masm/operator-width.md
@@ -1,6 +1,6 @@
---
title: "operator WIDTH"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["Width", "operator WIDTH"]
helpviewer_keywords: ["WIDTH operator", "operator WIDTH"]
ms.assetid: 7b00e296-a101-4cd5-a578-17eec7a4eb44
@@ -11,8 +11,9 @@ Returns the width in bits of the current *recordfieldname* or *record*.
## Syntax
-> WIDTH {recordfieldname | record}
+> **WIDTH** {*recordfieldname* | *record*}
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-xor.md b/docs/assembler/masm/operator-xor.md
index 340ea91250..f3c009bfbd 100644
--- a/docs/assembler/masm/operator-xor.md
+++ b/docs/assembler/masm/operator-xor.md
@@ -1,6 +1,6 @@
---
title: "operator XOR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator XOR", "Xor"]
helpviewer_keywords: ["operator XOR", "XOR operator"]
ms.assetid: 856eb920-314a-49b9-aebf-7d50e5384e4d
@@ -11,8 +11,9 @@ Returns the result of a bitwise **XOR** operation for *expression1* and *express
## Syntax
-> expression1 XOR expression2
+> *expression1* **XOR** *expression2*
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operator-zero-q.md b/docs/assembler/masm/operator-zero-q.md
index ad02223abe..9fae180c91 100644
--- a/docs/assembler/masm/operator-zero-q.md
+++ b/docs/assembler/masm/operator-zero-q.md
@@ -1,18 +1,19 @@
---
title: "operator ZERO?"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["operator ZERO?", "ZERO?"]
helpviewer_keywords: ["ZERO? operator", "operator ZERO?"]
ms.assetid: c7629c0b-3254-4f50-9bd6-31be762eb03b
---
# operator ZERO?
-Status of zero flag. Used only within [.IF](../../assembler/masm/dot-if.md), [.WHILE](../../assembler/masm/dot-while.md), or [.REPEAT](../../assembler/masm/dot-repeat.md) blocks and evaluated at run time, not at assembly time.
+Status of zero flag. Used only within [.IF](dot-if.md), [.WHILE](dot-while.md), or [.REPEAT](dot-repeat.md) blocks and evaluated at run time, not at assembly time.
## Syntax
-> ZERO?
+> **ZERO?**
## See also
-[Operators Reference](../../assembler/masm/operators-reference.md)
\ No newline at end of file
+[Operators reference](operators-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/operators-reference.md b/docs/assembler/masm/operators-reference.md
index 022a7e079a..a1641010f4 100644
--- a/docs/assembler/masm/operators-reference.md
+++ b/docs/assembler/masm/operators-reference.md
@@ -1,10 +1,10 @@
---
-title: "MASM Operators Reference"
-ms.date: "08/30/2018"
+title: "MASM Operators reference"
+ms.date: "12/17/2019"
helpviewer_keywords: ["MASM (Microsoft Macro Assembler), operators reference", "operators [MASM]"]
ms.assetid: c069cab7-d6b0-4f82-a6ce-0ca3fc7e6428
---
-# MASM Operators Reference
+# MASM Operators reference
## Arithmetic
@@ -82,4 +82,5 @@ ms.assetid: c069cab7-d6b0-4f82-a6ce-0ca3fc7e6428
## See also
-[Microsoft Macro Assembler Reference](microsoft-macro-assembler-reference.md)
+[Microsoft Macro Assembler Reference](microsoft-macro-assembler-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/option-masm.md b/docs/assembler/masm/option-masm.md
index 88e720b613..510b70cb06 100644
--- a/docs/assembler/masm/option-masm.md
+++ b/docs/assembler/masm/option-masm.md
@@ -1,17 +1,17 @@
---
title: "OPTION (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["option"]
helpviewer_keywords: ["OPTION directive"]
ms.assetid: 8e10dabd-e36f-4586-ab01-ada96736b0bd
---
-# OPTION (MASM)
+# OPTION
Enables and disables features of the assembler.
## Syntax
-> OPTION *optionlist*
+> **OPTION** *optionlist*
## Remarks
@@ -27,8 +27,9 @@ Available options include:
|**PROC**|**PROLOGUE**|**READONLY**|**NOREADONLY**|
|**SCOPED**|**NOSCOPED**|**SEGMENT**|**SETIF2**.|
-The syntax for LANGUAGE is **OPTION LANGUAGE:**x, where *x* is one of C, SYSCALL, STDCALL, PASCAL, FORTRAN, or BASIC. SYSCALL, PASCAL, FORTRAN, and BASIC are not supported with used with [.MODEL](../../assembler/masm/dot-model.md) FLAT.
+The syntax for LANGUAGE is **OPTION LANGUAGE:**x, where *x* is one of C, SYSCALL, STDCALL, PASCAL, FORTRAN, or BASIC. SYSCALL, PASCAL, FORTRAN, and BASIC are not supported with [.MODEL](dot-model.md) FLAT.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/org.md b/docs/assembler/masm/org.md
index a6435ee7a8..7cc41c65ad 100644
--- a/docs/assembler/masm/org.md
+++ b/docs/assembler/masm/org.md
@@ -1,6 +1,6 @@
---
title: "ORG"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["ORG"]
helpviewer_keywords: ["ORG directive"]
ms.assetid: ab654827-99dd-4018-b27e-f29a7bb392eb
@@ -11,8 +11,9 @@ Sets the location counter to *expression*.
## Syntax
-> ORG *expression*
+> **ORG** *expression*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/oword.md b/docs/assembler/masm/oword.md
index 1370738214..9579a52e56 100644
--- a/docs/assembler/masm/oword.md
+++ b/docs/assembler/masm/oword.md
@@ -1,6 +1,6 @@
---
title: "OWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["OWORD"]
helpviewer_keywords: ["OWORD directive"]
ms.assetid: 83262c07-6c67-4296-a07d-65502ba5d09c
@@ -11,8 +11,9 @@ Used as a type specifier when an 16-byte data type is required.
## Syntax
-> OWORD
+> ⟦*name*⟧ **OWORD** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/page.md b/docs/assembler/masm/page.md
index 78a82ad5bf..08855c25c9 100644
--- a/docs/assembler/masm/page.md
+++ b/docs/assembler/masm/page.md
@@ -1,6 +1,6 @@
---
title: "PAGE"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["PAGE"]
helpviewer_keywords: ["Page directive"]
ms.assetid: 6654c094-c1f7-4d10-8d9d-902ddd1ac27e
@@ -11,9 +11,11 @@ The first directive sets line *length* and character *width* of the program list
## Syntax
-> PAGE [[*length*]][[, *width*]]
-> PAGE +
+> **PAGE** ⟦*length*⟧⟦__,__ *width*⟧
+
+> **PAGE +**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/percent-out.md b/docs/assembler/masm/percent-out.md
index 4978237b5e..db03e28197 100644
--- a/docs/assembler/masm/percent-out.md
+++ b/docs/assembler/masm/percent-out.md
@@ -1,18 +1,19 @@
---
title: "%OUT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["%OUT"]
helpviewer_keywords: ["%OUT directive"]
ms.assetid: d08c2757-76a3-46a2-a4d1-52f7a7e985f7
---
# %OUT
-See [ECHO](../../assembler/masm/echo.md).
+See [ECHO](echo.md).
## Syntax
-> %OUT
+> **%OUT**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/popcontext.md b/docs/assembler/masm/popcontext.md
index d0e6bee04c..a7a6130105 100644
--- a/docs/assembler/masm/popcontext.md
+++ b/docs/assembler/masm/popcontext.md
@@ -1,18 +1,19 @@
---
title: "POPCONTEXT"
-ms.date: "08/30/2018"
+ms.date: "12/06/2019"
f1_keywords: ["POPCONTEXT"]
helpviewer_keywords: ["POPCONTEXT directive"]
ms.assetid: 19f59290-a54d-477d-88d8-97d3f63ed417
---
# POPCONTEXT
-Restores part or all of the current `context` (saved by the [PUSHCONTEXT](../../assembler/masm/pushcontext.md) directive). The `context` can be **ASSUMES**, `RADIX`, **LISTING**, **CPU**, or **ALL**.
+Restores part or all of the current *context* (saved by the [PUSHCONTEXT](pushcontext.md) directive). The *context* can be **ASSUMES** (32-bit MASSM only), **RADIX**, **LISTING**, **CPU** (32-bit MASSM only), or **ALL**.
## Syntax
-> POPCONTEXT context
+> **POPCONTEXT** *context*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/proc.md b/docs/assembler/masm/proc.md
index f46a3f7255..fecefcb069 100644
--- a/docs/assembler/masm/proc.md
+++ b/docs/assembler/masm/proc.md
@@ -1,28 +1,30 @@
---
title: "PROC"
-ms.date: "08/30/2018"
+ms.date: "12/06/2019"
f1_keywords: ["PROC"]
helpviewer_keywords: ["PROC directive"]
ms.assetid: ee5bb6b6-fa15-4d73-b0cf-e650178539a9
---
# PROC
-Marks start and end of a procedure block called *label*. The statements in the block can be called with the **CALL** instruction or [INVOKE](../../assembler/masm/invoke.md) directive.
+Marks start and end of a procedure block called *label*. The statements in the block can be called with the **CALL** instruction or [INVOKE](invoke.md) directive.
## Syntax
-> *label* PROC [[*distance*]] [[*langtype*]] [[*visibility*]] [[\<*prologuearg*>]] [[USES *reglist*]] [[, *parameter* [[:*tag*]]]] ...
-> [[FRAME [[:*ehandler-address*]] ]]
-> *statements*
-> *label* ENDP
+> *label* **PROC** ⟦*distance*⟧ ⟦*language-type*⟧ ⟦ **PUBLIC** | **PRIVATE** | **EXPORT** ⟧ ⟦__\<__*prologuearg*__>__⟧ ⟦**USES** *reglist*⟧ ⟦__,__ *parameter* ⟦__:__*tag*⟧ ...⟧\
+> ⟦**FRAME** ⟦__:__*ehandler-address*⟧ ⟧\
+> *statements*\
+> *label* **ENDP**
## Remarks
-[[FRAME [[:*ehandler-address*]] ]] is only valid with ml64.exe, and causes MASM to generate a function table entry in .pdata and unwind information in .xdata for a function's structured exception handling unwind behavior.
+The ⟦*distance*⟧ and ⟦*language-type*⟧ arguments are valid only in 32-bit MASM.
-When the **FRAME** attribute is used, it must be followed by an [.ENDPROLOG](../../assembler/masm/dot-endprolog.md) directive.
+⟦**FRAME** ⟦__:__*ehandler-address*⟧ ⟧ is only valid with ml64.exe, and causes MASM to generate a function table entry in .pdata and unwind information in .xdata for a function's structured exception handling unwind behavior.
-See [MASM for x64 (ml64.exe)](../../assembler/masm/masm-for-x64-ml64-exe.md) for more information on using ml64.exe.
+When the **FRAME** attribute is used, it must be followed by an [.ENDPROLOG](dot-endprolog.md) directive.
+
+See [MASM for x64 (ml64.exe)](masm-for-x64-ml64-exe.md) for more information on using ml64.exe.
## Example
@@ -71,4 +73,5 @@ Dumping Unwind Information for file ex2.exe
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/processor-manufacturer-programming-manuals.md b/docs/assembler/masm/processor-manufacturer-programming-manuals.md
index 51a7f1f6d0..9362dc7b56 100644
--- a/docs/assembler/masm/processor-manufacturer-programming-manuals.md
+++ b/docs/assembler/masm/processor-manufacturer-programming-manuals.md
@@ -1,13 +1,13 @@
---
-title: "Processor Manufacturer Programming Manuals"
-ms.date: "08/30/2018"
+title: "Processor manufacturer programming manuals"
+ms.date: "12/17/2019"
ms.assetid: 61844163-de2f-419a-808e-04de39dfdddf
---
-# Processor Manufacturer Programming Manuals
+# Processor manufacturer programming manuals
This article provides links to websites that may contain programming information about processors that are not manufactured, sold, or supported by Microsoft. Microsoft does not own or control the websites or the content on them.
-## Processor Manufacturer Websites
+## Processor manufacturer websites
- [AMD Developer Guides, Manuals & ISA Documents](https://developer.amd.com/resources/developer-guides-manuals/)
@@ -21,4 +21,5 @@ Neither Visual Studio nor the Microsoft Macro Assembler support all processors.
## See also
-- [Microsoft Macro Assembler Reference](../../assembler/masm/microsoft-macro-assembler-reference.md)
+[Microsoft Macro Assembler reference](microsoft-macro-assembler-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/proto.md b/docs/assembler/masm/proto.md
index e1c6480678..9aa7f70eb0 100644
--- a/docs/assembler/masm/proto.md
+++ b/docs/assembler/masm/proto.md
@@ -1,6 +1,6 @@
---
title: "PROTO"
-ms.date: "10/22/2018"
+ms.date: "12/06/2019"
f1_keywords: ["PROTO"]
helpviewer_keywords: ["PROTO directive"]
ms.assetid: 0487ee16-9dc7-43d1-9445-cd1601f5a080
@@ -11,27 +11,27 @@ Prototypes a function or procedure. You can call the function prototyped by the
## Syntax
-> *label* **PROTO** \[*distance*] \[*langtype*] \[__,__ \[*parameter*]__:__*tag*] ...
+> *label* **PROTO** ⟦*distance*⟧ ⟦*language-type*⟧ ⟦__,__ ⟦*parameter*⟧__:__*tag* ...⟧
### Parameters
-*label*
+*label*\
The name of the prototyped function.
-*distance*
+*distance* (32-bit MASM only.)\
(Optional) Used in 16-bit memory models to override the default and indicate **NEAR** or **FAR** calls.
-*langtype*
+*language-type* (32-bit MASM only.)\
(Optional) Sets the calling and naming convention for procedures and public symbols. Supported conventions are:
- 32-bit **FLAT** model: **C**, **STDCALL**
- 16-bit models: **C**, **BASIC**, **FORTRAN**, **PASCAL**, **SYSCALL**, **STDCALL**
-*parameter*
+*parameter*\
The optional name for a function parameter.
-*tag*
+*tag*\
The type of a function parameter.
The *parameter* and *tag* parameters may appear multiple times, once for each passed argument.
@@ -46,5 +46,6 @@ addup3 PROTO NEAR C, argcount:WORD, arg1:VARARG
## See also
-[Directives Reference](directives-reference.md)
-[.MODEL Reference](dot-model.md)
+[Directives Reference](directives-reference.md)\
+[.MODEL Reference](dot-model.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/public-masm.md b/docs/assembler/masm/public-masm.md
index 7159e97295..e1ed4d2c7c 100644
--- a/docs/assembler/masm/public-masm.md
+++ b/docs/assembler/masm/public-masm.md
@@ -1,18 +1,23 @@
---
title: "PUBLIC (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["public"]
helpviewer_keywords: ["PUBLIC directive"]
ms.assetid: 56e15a68-8a35-4bdd-b1ec-a38cbbf1c582
---
-# PUBLIC (MASM)
+# PUBLIC
Makes each variable, label, or absolute symbol specified as *name* available to all other modules in the program.
## Syntax
-> PUBLIC [[langtype]] name [[, [[langtype]] name]]...
+> **PUBLIC** ⟦*language-type*⟧ *name* ⟦__,__ ⟦*language-type*⟧ *name* ...⟧
+
+## Remarks
+
+The *language-type* argument is valid in 32-bit MASM only.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/purge.md b/docs/assembler/masm/purge.md
index 03d218220a..55662a457c 100644
--- a/docs/assembler/masm/purge.md
+++ b/docs/assembler/masm/purge.md
@@ -1,6 +1,6 @@
---
title: "PURGE"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["PURGE"]
helpviewer_keywords: ["PURGE directive"]
ms.assetid: 1e7ec2bf-f123-4ff9-97de-28b512ade2f9
@@ -11,8 +11,9 @@ Deletes the specified macros from memory.
## Syntax
-> PURGE macroname [[, macroname]]...
+> **PURGE** *macronameId* ⟦__,__ *macronameId* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/pushcontext.md b/docs/assembler/masm/pushcontext.md
index e28be62b46..2917f3aa1c 100644
--- a/docs/assembler/masm/pushcontext.md
+++ b/docs/assembler/masm/pushcontext.md
@@ -1,18 +1,19 @@
---
title: "PUSHCONTEXT"
-ms.date: "08/30/2018"
+ms.date: "12/06/2019"
f1_keywords: ["PUSHCONTEXT"]
helpviewer_keywords: ["PUSHCONTEXT directive"]
ms.assetid: 18e528ee-df6c-4ce6-8823-b35b40f757fd
---
# PUSHCONTEXT
-Saves part or all of the current `context`: segment register assumes, radix value, listing and cref flags, or processor/coprocessor values. The `context` can be **ASSUMES**, `RADIX`, **LISTING**, **CPU**, or **ALL**.
+Saves part or all of the current *context*: segment register assumes, radix value, listing and cref flags, or processor/coprocessor values. The *context* can be **ASSUMES** (32-bit MASM only), **RADIX**, **LISTING**, **CPU** (32-bit MASM only), or **ALL**.
## Syntax
-> PUSHCONTEXT context
+> **PUSHCONTEXT** *context*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/q.md b/docs/assembler/masm/q.md
index 67685807bb..829964dc0e 100644
--- a/docs/assembler/masm/q.md
+++ b/docs/assembler/masm/q.md
@@ -1,6 +1,6 @@
---
-title: "?"
-ms.date: "08/30/2018"
+title: "? (MASM)"
+ms.date: "12/17/2019"
f1_keywords: ["?"]
helpviewer_keywords: ["? symbol, macro assembler character"]
ms.assetid: 0bea8cb1-9d69-4833-a62c-9e4d062cd551
@@ -11,8 +11,9 @@ In data declarations, a value that the assembler allocates but does not initiali
## Syntax
-> ?
+> **?**
## See also
-[Symbols Reference](../../assembler/masm/symbols-reference.md)
\ No newline at end of file
+[Symbols reference](symbols-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/qword.md b/docs/assembler/masm/qword.md
index 82c21de24a..19c970f61a 100644
--- a/docs/assembler/masm/qword.md
+++ b/docs/assembler/masm/qword.md
@@ -1,20 +1,21 @@
---
title: "QWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["QWORD"]
helpviewer_keywords: ["QWORD directive"]
ms.assetid: 70fcad8f-db48-4cb0-9710-8feb58baab22
---
# QWORD
-Allocates and optionally initializes 8 bytes of storage for each `initializer`. Also can be used as a type specifier anywhere a type is legal.
+Allocates and optionally initializes 8 bytes of storage for each *initializer*. Also can be used as a type specifier anywhere a type is legal. **QWORD** is a synonym of [DQ](dq.md).
## Syntax
-> [[name]] QWORD initializer [[, initializer]]...
+> ⟦*name*⟧ **QWORD** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[SQWORD](../../assembler/masm/qword.md)
-[DQ](../../assembler/masm/dq.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[SQWORD](qword.md)\
+[DQ](dq.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/real10.md b/docs/assembler/masm/real10.md
index 83de182888..c8a6871ae5 100644
--- a/docs/assembler/masm/real10.md
+++ b/docs/assembler/masm/real10.md
@@ -1,6 +1,6 @@
---
title: "REAL10"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["REAL10"]
helpviewer_keywords: ["REAL10 directive"]
ms.assetid: 6abe2c35-db96-45c7-82d7-ea6e2f92fbf9
@@ -11,8 +11,9 @@ Allocates and optionally initializes a 10-byte floating-point number for each *i
## Syntax
-> name REAL10 initializer [[, initializer]]...
+> *name* **REAL10** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/real4.md b/docs/assembler/masm/real4.md
index ab8eb493bb..7b44afe665 100644
--- a/docs/assembler/masm/real4.md
+++ b/docs/assembler/masm/real4.md
@@ -1,6 +1,6 @@
---
title: "REAL4"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["REAL4"]
helpviewer_keywords: ["REAL4 directive"]
ms.assetid: b41d584b-6c9d-4bea-9d31-a2c70b292d50
@@ -11,8 +11,9 @@ Allocates and optionally initializes a single-precision (4-byte) floating-point
## Syntax
-> name REAL4 initializer [[, initializer]]...
+> *name* **REAL4** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/real8.md b/docs/assembler/masm/real8.md
index c78953ec4e..1832b933a4 100644
--- a/docs/assembler/masm/real8.md
+++ b/docs/assembler/masm/real8.md
@@ -1,6 +1,6 @@
---
title: "REAL8"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["REAL8"]
helpviewer_keywords: ["REAL8 directive"]
ms.assetid: 757244ea-e4c9-4fc9-94ec-16313578bede
@@ -11,8 +11,9 @@ Allocates and optionally initializes a double-precision (8-byte) floating-point
## Syntax
-> name REAL8 initializer [[, initializer]]...
+> *name* **REAL8** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/record-masm.md b/docs/assembler/masm/record-masm.md
index 74fec1d533..baa9e4bb88 100644
--- a/docs/assembler/masm/record-masm.md
+++ b/docs/assembler/masm/record-masm.md
@@ -1,18 +1,19 @@
---
title: "RECORD (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["RECORD"]
helpviewer_keywords: ["RECORD directive"]
ms.assetid: c83db394-0fe3-468f-813f-13302cdc862d
---
-# RECORD (MASM)
+# RECORD
Declares a record type consisting of the specified fields. *fieldname* names the field, *width* specifies the number of bits, and *expression* gives its initial value.
## Syntax
-> *recordname* RECORD *fieldname*:*width* [[= *expression*]] [[, *fieldname*:*width* [[= *expression*]] ]] ...
+> *recordname* **RECORD** *fieldname*__:__*width* ⟦__=__ *expression*⟧ ⟦__,__ *fieldname*__:__*width* ⟦__=__ *expression*⟧ ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/repeat.md b/docs/assembler/masm/repeat.md
index c51bf5da13..9805df108f 100644
--- a/docs/assembler/masm/repeat.md
+++ b/docs/assembler/masm/repeat.md
@@ -1,20 +1,21 @@
---
title: "REPEAT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["REPEAT"]
helpviewer_keywords: ["REPEAT directive"]
ms.assetid: 26a72d91-d6b0-4d32-b5ba-4f5074e7973b
---
# REPEAT
-Marks a block that is to be repeated *expression* times. Same as [REPT](../../assembler/masm/rept.md).
+Marks a block that is to be repeated *expression* times. Same as [REPT](rept.md).
## Syntax
-> REPEAT *expression*
-> *statements*
-> ENDM
+> **REPEAT** *expression*\
+> *statements*\
+> **ENDM**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/rept.md b/docs/assembler/masm/rept.md
index 4bc321eb09..3c152bbe4c 100644
--- a/docs/assembler/masm/rept.md
+++ b/docs/assembler/masm/rept.md
@@ -1,18 +1,19 @@
---
title: "REPT"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["REPT"]
helpviewer_keywords: ["REPT directive"]
ms.assetid: 1952f6be-d2a2-4fc1-87a7-b773d07c7399
---
# REPT
-See [REPEAT](../../assembler/masm/repeat.md).
+See [REPEAT](repeat.md).
## Syntax
-> REPT
+> **REPT**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/sbyte-masm.md b/docs/assembler/masm/sbyte-masm.md
index 6d753078f4..7f5193cf26 100644
--- a/docs/assembler/masm/sbyte-masm.md
+++ b/docs/assembler/masm/sbyte-masm.md
@@ -1,20 +1,21 @@
---
title: "SBYTE (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["sbyte"]
helpviewer_keywords: ["SBYTE directive"]
ms.assetid: ae9323cc-4ed5-45fa-9cd6-c241868e4cfd
---
-# SBYTE (MASM)
+# SBYTE
-Allocates and optionally initializes a signed byte of storage for each `initializer`. Can also be used as a type specifier anywhere a type is legal.
+Allocates and optionally initializes a signed byte of storage for each *initializer*. Can also be used as a type specifier anywhere a type is legal.
## Syntax
-> name SBYTEinitializer [[, initializer]]...
+> *name* **SBYTE** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[BYTE](../../assembler/masm/byte-masm.md)
-[DB](../../assembler/masm/db.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[BYTE](byte-masm.md)\
+[DB](db.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/sdword.md b/docs/assembler/masm/sdword.md
index 23c319e021..bade6a5047 100644
--- a/docs/assembler/masm/sdword.md
+++ b/docs/assembler/masm/sdword.md
@@ -1,20 +1,21 @@
---
title: "SDWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["SDWORD"]
helpviewer_keywords: ["SDWORD directive"]
ms.assetid: 12663144-2426-4b4e-aabd-dbe0b04321d0
---
# SDWORD
-Allocates and optionally initializes a signed double word (4 bytes) of storage for each `initializer`. Also can be used as a type specifier anywhere a type is legal.
+Allocates and optionally initializes a signed double word (4 bytes) of storage for each *initializer*. Also can be used as a type specifier anywhere a type is legal.
## Syntax
-> name SDWORD initializer [[, initializer]]...
+> *name* **SDWORD** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[DWORD](../../assembler/masm/dword.md)
-[DD](../../assembler/masm/dd.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[DWORD](dword.md)\
+[DD](dd.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/segment.md b/docs/assembler/masm/segment.md
index ecb2ca1325..f72a883c0a 100644
--- a/docs/assembler/masm/segment.md
+++ b/docs/assembler/masm/segment.md
@@ -1,6 +1,6 @@
---
title: "SEGMENT"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["SEGMENT"]
helpviewer_keywords: ["SEGMENT directive"]
ms.assetid: e6f68367-6714-4f06-a79c-edfa88014430
@@ -11,13 +11,13 @@ Defines a program segment called *name* having segment attributes
## Syntax
-> *name* SEGMENT [[READONLY]] [[*align*]] [[*combine*]] [[*use*]] [[*characteristics*]] ALIAS(*string*) [['*class*']]
-> *statements*
-> *name* ENDS
+> *name* **SEGMENT** ⟦**READONLY**⟧ ⟦*align*⟧ ⟦*combine*⟧ ⟦*use*⟧ ⟦*characteristics*⟧ **ALIAS(**_string_**)** ⟦__'__*class*__'__⟧\
+> *statements*\
+> *name* **ENDS**
#### Parameters
-*align*
+*align*\
The range of memory addresses from which a starting address for the segment can be selected. The alignment type can be any one of the following:
|Align Type|Starting Address|
@@ -31,23 +31,23 @@ The range of memory addresses from which a starting address for the segment can
If this parameter is not specified, **PARA** is used by default.
-*combine*
+*combine* (32-bit MASM only)\
**PUBLIC**, **STACK**, **COMMON**, **MEMORY**, **AT**address, **PRIVATE**
-*use*
+*use* (32-bit MASM only)\
**USE16**, **USE32**, **FLAT**
-*characteristics*
+*characteristics*\
**INFO**, **READ**, **WRITE**, **EXECUTE**, **SHARED**, **NOPAGE**, **NOCACHE**, and **DISCARD**
These are supported for COFF only and correspond to the COFF section characteristics of similar name (for example, **SHARED** corresponds to IMAGE_SCN_MEM_SHARED). READ sets the IMAGE_SCN_MEM_READ flag. The obsolete READONLY flag caused the section to clear the IMG_SCN_MEM_WRITE flag. If any *characteristics* are set, the default characteristics are not used and only the programmer-specified flags are in effect.
-`ALIAS(` *string* `)`
+_string_\
This string is used as the section name in the emitted COFF object. Creates multiple sections with the same external name, with distinct MASM segment names.
Not supported with **/omf**.
-*class*
+*class*\
Designates how segments should be combined and ordered in the assembled file. Typical values are, `'DATA'`, `'CODE'`, `'CONST'` and `'STACK'`
## Remarks
@@ -56,4 +56,5 @@ For `ALIGN(n)`, *n* may be any power of 2 from 1 to 8192; not supported with **/
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/sizestr.md b/docs/assembler/masm/sizestr.md
index 3c3cec10e4..096f1f3a44 100644
--- a/docs/assembler/masm/sizestr.md
+++ b/docs/assembler/masm/sizestr.md
@@ -1,6 +1,6 @@
---
title: "SIZESTR"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["SIZESTR"]
helpviewer_keywords: ["SIZESTR directive"]
ms.assetid: 8fe88b2e-8a44-4787-9015-030dfb6ea70e
@@ -11,8 +11,9 @@ Finds the size of a text item.
## Syntax
-> name SIZESTR textitem
+> *name* **SIZESTR** *textitem*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/sqword.md b/docs/assembler/masm/sqword.md
index d171383d29..d7f2c56d60 100644
--- a/docs/assembler/masm/sqword.md
+++ b/docs/assembler/masm/sqword.md
@@ -1,20 +1,21 @@
---
title: "SQWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["SQWORD"]
helpviewer_keywords: ["SQWORD directive"]
ms.assetid: 329245f1-af34-4540-a912-73e9045c47fa
---
# SQWORD
-Allocates and optionally initializes 8 signed bytes of storage for each `initializer`. Also can be used as a type specifier anywhere a type is legal.
+Allocates and optionally initializes 8 signed bytes of storage for each *initializer*. Also can be used as a type specifier anywhere a type is legal.
## Syntax
-> name SQWORD initializer [[, initializer]]...
+> *name* **SQWORD** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[QWORD](../../assembler/masm/qword.md)
-[DQ](../../assembler/masm/dq.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[QWORD](qword.md)\
+[DQ](dq.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/struc.md b/docs/assembler/masm/struc.md
index c3a38beb7a..55802b0232 100644
--- a/docs/assembler/masm/struc.md
+++ b/docs/assembler/masm/struc.md
@@ -1,18 +1,19 @@
---
title: "STRUC"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["STRUC"]
helpviewer_keywords: ["STRUC directive"]
ms.assetid: 1c7c131e-b787-4902-8db7-3a2342e523f9
---
# STRUC
-See [STRUCT](../../assembler/masm/struct-masm.md).
+See [STRUCT](struct-masm.md).
## Syntax
-> STRUC
+> **STRUC**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/struct-masm.md b/docs/assembler/masm/struct-masm.md
index 78f0141134..e366f5df1d 100644
--- a/docs/assembler/masm/struct-masm.md
+++ b/docs/assembler/masm/struct-masm.md
@@ -1,20 +1,25 @@
---
title: "STRUCT (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["struct"]
helpviewer_keywords: ["STRUCT directive"]
ms.assetid: 70c3ba6b-00db-461e-8dd9-eafd3ae5b3c8
---
-# STRUCT (MASM)
+# STRUCT
-Declares a structure type having the specified *field-declarations*. Each field must be a valid data definition. Same as [STRUC](../../assembler/masm/struc.md).
+Declares a structure type having the specified *field-declarations*. Each field must be a valid data definition. Same as [STRUC](struc.md).
## Syntax
-> *name* STRUCT [[*alignment*]] [[, NONUNIQUE]]
-> *field-declarations*
-> *name* ENDS
+> *name* **STRUCT** ⟦*alignment*⟧ ⟦__,__ **NONUNIQUE**⟧
+> *field-declarations*\
+> *name* **ENDS**
+
+## Remarks
+
+The *name* argument must be the same in the opening and closing statement.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/substr.md b/docs/assembler/masm/substr.md
index b5326a036d..cfa46eba58 100644
--- a/docs/assembler/masm/substr.md
+++ b/docs/assembler/masm/substr.md
@@ -1,6 +1,6 @@
---
title: "SUBSTR"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["substr"]
helpviewer_keywords: ["SUBSTR directive"]
ms.assetid: d1aa9a7d-a03a-4213-93ad-ee92635fd58a
@@ -11,8 +11,9 @@ Returns a substring of *textitem*, starting at *position*. The *textitem* can be
## Syntax
-> name SUBSTR textitem, position [[, length]]
+> *name* **SUBSTR** *textitem*__,__ *position* ⟦__,__ *length*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/subtitle.md b/docs/assembler/masm/subtitle.md
index 64effdfee2..dd98209b17 100644
--- a/docs/assembler/masm/subtitle.md
+++ b/docs/assembler/masm/subtitle.md
@@ -1,18 +1,19 @@
---
title: "SUBTITLE"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["SUBTITLE"]
helpviewer_keywords: ["SUBTITLE directive"]
ms.assetid: b882ae31-9998-46ed-bd88-6656263143e7
---
# SUBTITLE
-Defines the listing subtitle. Same as [SUBTTL](../../assembler/masm/subttl.md).
+Defines the listing subtitle. Same as [SUBTTL](subttl.md).
## Syntax
-> SUBTITLE text
+> **SUBTITLE** *text*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/subttl.md b/docs/assembler/masm/subttl.md
index 761619de6b..d464c2fc1d 100644
--- a/docs/assembler/masm/subttl.md
+++ b/docs/assembler/masm/subttl.md
@@ -1,18 +1,19 @@
---
title: "SUBTTL"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["SUBTTL"]
helpviewer_keywords: ["SUBTTL directive"]
ms.assetid: 927efadd-ec99-4de9-b64d-229bb2df3bf4
---
# SUBTTL
-See [SUBTITLE](../../assembler/masm/subtitle.md).
+See [SUBTITLE](subtitle.md).
## Syntax
-> SUBTTL
+> **SUBTTL**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/sword.md b/docs/assembler/masm/sword.md
index bd29f7c255..4608b250a9 100644
--- a/docs/assembler/masm/sword.md
+++ b/docs/assembler/masm/sword.md
@@ -1,19 +1,20 @@
---
title: "SWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["SWORD"]
helpviewer_keywords: ["SWORD directive"]
ms.assetid: 99228a2a-4ed1-4343-a317-e59302620a55
---
# SWORD
-Allocates and optionally initializes a signed word (2 bytes) of storage for each `initializer`. Can also be used as a type specifier anywhere a type is legal.
+Allocates and optionally initializes a signed word (2 bytes) of storage for each *initializer*. Can also be used as a type specifier anywhere a type is legal.
## Syntax
-> name SWORD initializer [[, initializer]]...
+> *name* **SWORD** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[WORD](../../assembler/masm/word.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[WORD](word.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/symbols-reference.md b/docs/assembler/masm/symbols-reference.md
index aa74f51fb1..470f38341e 100644
--- a/docs/assembler/masm/symbols-reference.md
+++ b/docs/assembler/masm/symbols-reference.md
@@ -1,54 +1,55 @@
---
-title: "Symbols Reference"
+title: "Symbols reference"
ms.date: "11/06/2018"
helpviewer_keywords: ["MASM (Microsoft Macro Assembler), symbols reference"]
ms.assetid: 96ed59cc-dafa-4299-bb2e-9c7c3f496491
---
-# Symbols Reference
+# Symbols reference
-## Date and Time Information
+## Date and time information
|||
|-|-|
-|[\@Date](../../assembler/masm/at-date.md)|[\@Time](../../assembler/masm/at-time.md)|
+|[\@Date](at-date.md)|[\@Time](at-time.md)|
-## Environment Information
+## Environment information
|||
|-|-|
-|[\@Cpu](../../assembler/masm/at-cpu.md)|[\@Environ](../../assembler/masm/at-environ.md)|
-|[\@Interface](../../assembler/masm/at-interface.md)|[\@Version](../../assembler/masm/at-version.md)|
+|[\@Cpu](at-cpu.md)|[\@Environ](at-environ.md)|
+|[\@Interface](at-interface.md)|[\@Version](at-version.md)|
-## File Information
+## File information
|||
|-|-|
-|[\@FileCur](../../assembler/masm/at-filecur.md)|[\@FileName](../../assembler/masm/at-filename.md)|
-|[\@Line](../../assembler/masm/at-line.md)||
+|[\@FileCur](at-filecur.md)|[\@FileName](at-filename.md)|
+|[\@Line](at-line.md)||
-## Macro Functions
+## Macro functions
|||
|-|-|
-|[\@CatStr](../../assembler/masm/at-catstr.md)|[\@InStr](../../assembler/masm/at-instr.md)|
-|[\@SizeStr](../../assembler/masm/at-sizestr.md)|[\@SubStr](../../assembler/masm/at-substr.md)|
+|[\@CatStr](at-catstr.md)|[\@InStr](at-instr.md)|
+|[\@SizeStr](at-sizestr.md)|[\@SubStr](at-substr.md)|
## Miscellaneous
||||
|-|-|-|
-|[\$](../../assembler/masm/dollar.md)|[\?](../../assembler/masm/q.md)|[\@\@:](../../assembler/masm/at-at.md)|
-|[\@B](../../assembler/masm/at-b.md)|[\@F](../../assembler/masm/at-f.md)||
+|[\$](dollar.md)|[\?](q.md)|[\@\@:](at-at.md)|
+|[\@B](at-b.md)|[\@F](at-f.md)||
-## Segment Information
+## Segment information
||||
|-|-|-|
-|[\@code](../../assembler/masm/at-code.md)|[\@CodeSize](../../assembler/masm/at-codesize.md)|[\@CurSeg](../../assembler/masm/at-curseg.md)|
-|[\@data](../../assembler/masm/at-data.md)|[\@DataSize](../../assembler/masm/at-datasize.md)|[\@fardata](../../assembler/masm/at-fardata.md)|
-|[\@fardata?](../../assembler/masm/at-fardata-q.md)|[\@Model](../../assembler/masm/at-model.md)|[\@stack](../../assembler/masm/at-stack.md)|
-|[\@WordSize](../../assembler/masm/at-wordsize.md)|||
+|[\@code](at-code.md)|[\@CodeSize](at-codesize.md)|[\@CurSeg](at-curseg.md)|
+|[\@data](at-data.md)|[\@DataSize](at-datasize.md)|[\@fardata](at-fardata.md)|
+|[\@fardata?](at-fardata-q.md)|[\@Model](at-model.md)|[\@stack](at-stack.md)|
+|[\@WordSize](at-wordsize.md)|||
## See also
-[Microsoft Macro Assembler Reference](../../assembler/masm/microsoft-macro-assembler-reference.md)
\ No newline at end of file
+[Microsoft Macro Assembler reference](microsoft-macro-assembler-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/tbyte.md b/docs/assembler/masm/tbyte.md
index d0fff1ec76..6659ba520e 100644
--- a/docs/assembler/masm/tbyte.md
+++ b/docs/assembler/masm/tbyte.md
@@ -1,19 +1,20 @@
---
title: "TBYTE"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["TBYTE"]
helpviewer_keywords: ["TBYTE directive"]
ms.assetid: d5f96bb0-403c-413e-9e3c-2af1ce528da7
---
# TBYTE
-Allocates and optionally initializes 10 bytes of storage for each `initializer`. Can also be used as a type specifier anywhere a type is legal.
+Allocates and optionally initializes 10 bytes of storage for each *initializer*. Can also be used as a type specifier anywhere a type is legal. **DT** is a synonym of **TBYTE**.
## Syntax
-> [[name]] TBYTEinitializer [[, initializer]]...
+> ⟦*name*⟧ **TBYTE** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[DT](../../assembler/masm/dt.md)
\ No newline at end of file
+[Directives Reference](directives-reference.md)\
+[DT](dt.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/textequ.md b/docs/assembler/masm/textequ.md
index c950551cdf..5d7e77c330 100644
--- a/docs/assembler/masm/textequ.md
+++ b/docs/assembler/masm/textequ.md
@@ -1,6 +1,6 @@
---
title: "TEXTEQU"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["TEXTEQU"]
helpviewer_keywords: ["TEXTEQU directive"]
ms.assetid: 7c01df77-10d6-4555-8fe0-c5f7762df86d
@@ -11,8 +11,9 @@ Assigns *textitem* to *name*. The *textitem* can be a literal string, a constant
## Syntax
-> name TEXTEQU [[textitem]]
+> *name* **TEXTEQU** ⟦*textitem*⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/title.md b/docs/assembler/masm/title.md
index 4de2b4a82d..e022fcd101 100644
--- a/docs/assembler/masm/title.md
+++ b/docs/assembler/masm/title.md
@@ -1,6 +1,6 @@
---
title: "TITLE"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["title"]
helpviewer_keywords: ["TITLE directive"]
ms.assetid: d49df4dc-75db-472c-950e-75344e3c81eb
@@ -11,8 +11,9 @@ Defines the program listing title.
## Syntax
-> TITLE text
+> **TITLE** *text*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/typedef-masm.md b/docs/assembler/masm/typedef-masm.md
index 2b26b8c5b2..2735de98a5 100644
--- a/docs/assembler/masm/typedef-masm.md
+++ b/docs/assembler/masm/typedef-masm.md
@@ -1,18 +1,19 @@
---
title: "TYPEDEF (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["typedef"]
helpviewer_keywords: ["TYPEDEF directive"]
ms.assetid: 0c659890-c9a5-485a-a680-e4fb3272032c
---
-# TYPEDEF (MASM)
+# TYPEDEF
-Defines a new type called *name*, which is equivalent to *type*.
+Defines a new type or **PROTO** called *name*, which is equivalent to *type* or *protoDefinition*.
## Syntax
-> *name* TYPEDEF *type*
+> *name* **TYPEDEF** *type* | **PROTO** *protoDefinition*
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/union.md b/docs/assembler/masm/union.md
index 09f64d1999..236107c1f2 100644
--- a/docs/assembler/masm/union.md
+++ b/docs/assembler/masm/union.md
@@ -1,20 +1,21 @@
---
title: "UNION"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["union"]
helpviewer_keywords: ["UNION directive"]
ms.assetid: 52504abf-7dc1-47c5-944c-b886803a0c6a
---
# UNION
-Declares a union of one or more data types. The *field-declarations* must be valid data definitions. Omit the [ENDS](../../assembler/masm/ends-masm.md) *name* label on nested **UNION** definitions.
+Declares a union of one or more data types. The *field-declarations* must be valid data definitions. Omit the [ENDS](ends-masm.md) *name* label on nested **UNION** definitions.
## Syntax
-> *name* UNION [[*alignment*]] [[, NONUNIQUE]]
-> *field-declarations*
-> [[*name*]] ENDS
+> *name* **UNION** ⟦*alignment*⟧ ⟦__,__ **NONUNIQUE**⟧\
+> *field-declarations*\
+> ⟦*name*⟧ **ENDS**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/while-masm.md b/docs/assembler/masm/while-masm.md
index cbbac9f88e..2778f5badb 100644
--- a/docs/assembler/masm/while-masm.md
+++ b/docs/assembler/masm/while-masm.md
@@ -1,20 +1,21 @@
---
title: "WHILE (MASM)"
-ms.date: "08/30/2018"
+ms.date: "12/16/2019"
f1_keywords: ["while"]
helpviewer_keywords: ["WHILE directive"]
ms.assetid: ff9d908e-7e7f-4983-9f6b-31ff51ef0fad
---
-# WHILE (MASM)
+# WHILE
-Repeats assembly of block *statements* as long as *expression* remains true.
+Repeats assembly of block *statements* as long as *constantExpression* remains true.
## Syntax
-> WHILE *expression*
-> *statements*
-> ENDM
+> **WHILE** *constantExpression*\
+> *statements*\
+> **ENDM**
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/word.md b/docs/assembler/masm/word.md
index 322dddd787..8304c1dc8f 100644
--- a/docs/assembler/masm/word.md
+++ b/docs/assembler/masm/word.md
@@ -1,20 +1,21 @@
---
title: "WORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["WORD"]
helpviewer_keywords: ["WORD directive"]
ms.assetid: 36f7ac49-480d-4d67-8967-3a62acb8f4df
---
# WORD
-Allocates and optionally initializes a word (2 bytes) of storage for each `initializer`. Can also be used as a type specifier anywhere a type is legal.
+Allocates and optionally initializes a word (2 bytes) of storage for each *initializer*. Can also be used as a type specifier anywhere a type is legal. [DW](dw.md) is a synonym of **WORD**.
## Syntax
-> [[*name*]] WORD *initializer* [[, *initializer*]]...
+> ⟦*name*⟧ **WORD** *initializer* ⟦__,__ *initializer* ...⟧
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
-[SWORD](../../assembler/masm/sword.md)
-[DW](../../assembler/masm/dw.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[SWORD](sword.md)\
+[DW](dw.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/xmmword.md b/docs/assembler/masm/xmmword.md
index 0c02365ccf..1324fde5a5 100644
--- a/docs/assembler/masm/xmmword.md
+++ b/docs/assembler/masm/xmmword.md
@@ -1,6 +1,6 @@
---
title: "XMMWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["XMMWORD"]
helpviewer_keywords: ["XMMWORD directive"]
ms.assetid: 18026d32-5cab-403e-ad7e-382fb41aa9b8
@@ -11,14 +11,18 @@ Used for 128-bit multimedia operands with MMX and SSE (XMM) instructions.
## Syntax
-> XMMWORD
+> **XMMWORD**
## Remarks
-`XMMWORD` is intended to represent the same type as [__m128](../../cpp/m128.md).
+**XMMWORD** is intended to represent the same type as [__m128](../../cpp/m128.md).
## Example
```asm
movdqa xmm0, xmmword ptr [ebx]
-```
\ No newline at end of file
+```
+
+## See Also
+
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/assembler/masm/ymmword.md b/docs/assembler/masm/ymmword.md
index 58ccf116cb..7e2f2030dc 100644
--- a/docs/assembler/masm/ymmword.md
+++ b/docs/assembler/masm/ymmword.md
@@ -1,6 +1,6 @@
---
title: "YMMWORD"
-ms.date: "08/30/2018"
+ms.date: "12/17/2019"
f1_keywords: ["YMMWORD"]
helpviewer_keywords: ["YMMWORD directive"]
ms.assetid: 955a7d23-6150-4056-befc-7f72e8258ecb
@@ -11,12 +11,13 @@ Used for 256-bit multimedia operands with Intel Advanced Vector Extensions (AVX)
## Syntax
-> YMMWORD
+> **YMMWORD**
## Remarks
-`YMMWORD` is intended to represent the same type as `__m256` for the AVX intrinsics.
+**YMMWORD** is intended to represent the same type as `__m256` for the AVX intrinsics.
## See also
-[Directives Reference](../../assembler/masm/directives-reference.md)
\ No newline at end of file
+[Directives reference](directives-reference.md)\
+[MASM BNF Grammar](masm-bnf-grammar.md)
diff --git a/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_1.cpp b/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_1.cpp
index 60f9ab16f7..597a279a89 100644
--- a/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_1.cpp
+++ b/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_1.cpp
@@ -2,13 +2,13 @@ static AFX_EXTENSION_MODULE NVC_MFC_DLLDLL = { NULL, NULL };
extern "C" int APIENTRY
DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
- // Remove this if you use lpReserved
- UNREFERENCED_PARAMETER(lpReserved);
+ // Remove this if you use lpReserved
+ UNREFERENCED_PARAMETER(lpReserved);
- if (dwReason == DLL_PROCESS_ATTACH)
- {
- TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
-
- // MFC extension DLL one-time initialization
- if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
- return 0;
\ No newline at end of file
+ if (dwReason == DLL_PROCESS_ATTACH)
+ {
+ TRACE0("NVC_MFC_DLL.DLL Initializing!\n");
+
+ // MFC extension DLL one-time initialization
+ if (!AfxInitExtensionModule(NVC_MFC_DLLDLL, hInstance))
+ return 0;
\ No newline at end of file
diff --git a/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_2.cpp b/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_2.cpp
index 03b70e9e5c..c59bce1318 100644
--- a/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_2.cpp
+++ b/docs/atl-mfc-shared/codesnippet/CPP/afx-extension-module-structure_2.cpp
@@ -4,17 +4,17 @@ CMyDynLinkLibrary::CMyDynLinkLibrary(AFX_EXTENSION_MODULE& state, BOOL bSystem)
: CDynLinkLibrary(state, bSystem)
{
#ifndef _AFX_NO_OLE_SUPPORT
- m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));
+ m_factoryList.Construct(offsetof(COleObjectFactory, m_pNextFactory));
#endif
- m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));
+ m_classList.Construct(offsetof(CRuntimeClass, m_pNextClass));
- // copy info from AFX_EXTENSION_MODULE struct
- ASSERT(state.hModule != NULL);
- m_hModule = state.hModule;
- m_hResource = state.hResource;
- m_classList.m_pHead = state.pFirstSharedClass;
+ // copy info from AFX_EXTENSION_MODULE struct
+ ASSERT(state.hModule != NULL);
+ m_hModule = state.hModule;
+ m_hResource = state.hResource;
+ m_classList.m_pHead = state.pFirstSharedClass;
#ifndef _AFX_NO_OLE_SUPPORT
- m_factoryList.m_pHead = state.pFirstSharedFactory;
+ m_factoryList.m_pHead = state.pFirstSharedFactory;
#endif
- m_bSystem = bSystem;
+ m_bSystem = bSystem;
}
\ No newline at end of file
diff --git a/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_41.cpp b/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_41.cpp
index 89816c1597..ff6b8357a1 100644
--- a/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_41.cpp
+++ b/docs/atl-mfc-shared/codesnippet/CPP/cstringt-class_41.cpp
@@ -8,5 +8,5 @@
// Output:
// --------------------------
- // Before: ****Soccer is best!
+ // Before: ****Soccer is best!
// After: Soccer is best!
\ No newline at end of file
diff --git a/docs/atl-mfc-shared/reference/cfiletimespan-class.md b/docs/atl-mfc-shared/reference/cfiletimespan-class.md
index 1c5013c3d4..5ddf663a06 100644
--- a/docs/atl-mfc-shared/reference/cfiletimespan-class.md
+++ b/docs/atl-mfc-shared/reference/cfiletimespan-class.md
@@ -1,36 +1,37 @@
---
-title: "CFileTimeSpan Class"
-ms.date: "10/18/2018"
+title: "CFileTimeSpan class"
+description: "The Active Template Library (ATL) and Microsoft Foundation Classes (MFC) CFileTimeSpan class manages time intervals in FILETIME units."
+ms.date: "01/10/2020"
f1_keywords: ["CFileTimeSpan", "ATLTIME/ATL::CFileTimeSpan", "ATLTIME/ATL::CFileTimeSpan::CFileTimeSpan", "ATLTIME/ATL::CFileTimeSpan::GetTimeSpan", "ATLTIME/ATL::CFileTimeSpan::SetTimeSpan"]
helpviewer_keywords: ["shared classes, CFileTimeSpan", "CFileTimeSpan class"]
ms.assetid: 5856fb39-9c82-4027-8ccf-8760890491ec
---
-# CFileTimeSpan Class
+# CFileTimeSpan class
This class provides methods for managing relative date and time values associated with a file.
## Syntax
-```
+```cpp
class CFileTimeSpan
```
## Members
-### Public Constructors
+### Public constructors
|Name|Description|
|----------|-----------------|
|[CFileTimeSpan::CFileTimeSpan](#cfiletimespan)|The constructor.|
-### Public Methods
+### Public methods
|Name|Description|
|----------|-----------------|
|[CFileTimeSpan::GetTimeSpan](#gettimespan)|Call this method to retrieve the time span from the `CFileTimeSpan` object.|
|[CFileTimeSpan::SetTimeSpan](#settimespan)|Call this method to set the time span of the `CFileTimeSpan` object.|
-### Public Operators
+### Public operators
|Name|Description|
|----------|-----------------|
@@ -48,7 +49,7 @@ class CFileTimeSpan
## Remarks
-This class provides methods for managing relative periods of time often encountered when performing operations concerning when a file was created, last accessed or last modified. The methods of this class are frequently used in conjunction with [CFileTime class](../../atl-mfc-shared/reference/cfiletime-class.md) objects.
+The `CFileTimeSpan` class provides methods to handle relative periods of time in the units the file system uses. These units are often used in file operations, such as when a file was created, last accessed, or last modified. The methods of this class are frequently used in conjunction with [CFileTime class](../../atl-mfc-shared/reference/cfiletime-class.md) objects.
## Example
@@ -58,11 +59,11 @@ See the example for [CFileTime::Millisecond](../../atl-mfc-shared/reference/cfil
**Header:** atltime.h
-## CFileTimeSpan::CFileTimeSpan
+## CFileTimeSpan::CFileTimeSpan
The constructor.
-```
+```cpp
CFileTimeSpan() throw();
CFileTimeSpan(const CFileTimeSpan& span) throw();
CFileTimeSpan(LONGLONG nSpan) throw();
@@ -70,231 +71,231 @@ CFileTimeSpan(LONGLONG nSpan) throw();
### Parameters
-*span*
+*span*\
An existing `CFileTimeSpan` object.
-*nSpan*
-A period of time in milliseconds.
+*nSpan*\
+A period of time in FILETIME units.
### Remarks
-The `CFileTimeSpan` object can be created using an existing `CFileTimeSpan` object, or expressed as a 64-bit value. The default constructor sets the time span to 0.
+The `CFileTimeSpan` object can be created using an existing `CFileTimeSpan` object, or expressed as a 64-bit value in 100-nanosecond FILETIME units. For more information, see [CFileTime](cfiletime-class.md). The default constructor sets the time span to 0.
-## CFileTimeSpan::GetTimeSpan
+## CFileTimeSpan::GetTimeSpan
Call this method to retrieve the time span from the `CFileTimeSpan` object.
-```
+```cpp
LONGLONG GetTimeSpan() const throw();
```
-### Return Value
+### Return value
-Returns the time span in milliseconds.
+Returns the time span in 100-nanosecond FILETIME units. For more information, see [CFileTime](cfiletime-class.md).
-## CFileTimeSpan::operator -
+## CFileTimeSpan::operator -
Performs subtraction on a `CFileTimeSpan` object.
-```
+```cpp
CFileTimeSpan operator-(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
A `CFileTimeSpan` object.
-### Return Value
+### Return value
Returns a `CFileTimeSpan` object representing the result of the difference between two time spans.
-## CFileTimeSpan::operator !=
+## CFileTimeSpan::operator !=
Compares two `CFileTimeSpan` objects for inequality.
-```
+```cpp
bool operator!=(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
The `CFileTimeSpan` object to be compared.
-### Return Value
+### Return value
-Returns TRUE if the item being compared is not equal to the `CFileTimeSpan` object; otherwise FALSE.
+Returns TRUE if the item being compared isn't equal to the `CFileTimeSpan` object; otherwise FALSE.
-## CFileTimeSpan::operator +
+## CFileTimeSpan::operator +
Performs addition on a `CFileTimeSpan` object.
-```
+```cpp
CFileTimeSpan operator+(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
A `CFileTimeSpan` object.
-### Return Value
+### Return value
Returns a `CFileTimeSpan` object containing the sum of the two time spans.
-## CFileTimeSpan::operator +=
+## CFileTimeSpan::operator +=
Performs addition on a `CFileTimeSpan` object and assigns the result to the current object.
-```
+```cpp
CFileTimeSpan& operator+=(CFileTimeSpan span) throw();
```
### Parameters
-*span*
+*span*\
A `CFileTimeSpan` object.
-### Return Value
+### Return value
Returns the updated `CFileTimeSpan` object containing the sum of the two time spans.
-## CFileTimeSpan::operator <
+## CFileTimeSpan::operator <
Compares two `CFileTimeSpan` objects to determine the lesser.
-```
+```cpp
bool operator<(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
The `CFileTimeSpan` object to be compared.
-### Return Value
+### Return value
Returns TRUE if the first object is less (that is, represents a shorter time period) than the second, otherwise FALSE.
-## CFileTimeSpan::operator <=
+## CFileTimeSpan::operator <=
Compares two `CFileTimeSpan` objects to determine equality or the lesser.
-```
+```cpp
bool operator<=(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
The `CFileTimeSpan` object to be compared.
-### Return Value
+### Return value
Returns TRUE if the first object is less than (that is, represents a shorter time period) or equal to the second, otherwise FALSE.
-## CFileTimeSpan::operator =
+## CFileTimeSpan::operator =
The assignment operator.
-```
+```cpp
CFileTimeSpan& operator=(const CFileTimeSpan& span) throw();
```
### Parameters
-*span*
+*span*\
A `CFileTimeSpan` object.
-### Return Value
+### Return value
Returns the updated `CFileTimeSpan` object.
-## CFileTimeSpan::operator -=
+## CFileTimeSpan::operator -=
Performs subtraction on a `CFileTimeSpan` object and assigns the result to the current object.
-```
+```cpp
CFileTimeSpan& operator-=(CFileTimeSpan span) throw();
```
### Parameters
-*span*
+*span*\
A `CFileTimeSpan` object.
-### Return Value
+### Return value
Returns the updated `CFileTimeSpan` object.
-## CFileTimeSpan::operator ==
+## CFileTimeSpan::operator ==
Compares two `CFileTimeSpan` objects for equality.
-```
+```cpp
bool operator==(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
The `CFileTimeSpan` object to be compared.
-### Return Value
+### Return value
Returns TRUE if the objects are equal, otherwise FALSE.
-## CFileTimeSpan::operator >
+## CFileTimeSpan::operator >
Compares two `CFileTimeSpan` objects to determine the larger.
-```
+```cpp
bool operator>(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
The `CFileTimeSpan` object to be compared.
-### Return Value
+### Return value
Returns TRUE if the first object is greater than (that is, represents a longer time period) than the second, otherwise FALSE.
-## CFileTimeSpan::operator >=
+## CFileTimeSpan::operator >=
Compares two `CFileTimeSpan` objects to determine equality or the larger.
-```
+```cpp
bool operator>=(CFileTimeSpan span) const throw();
```
### Parameters
-*span*
+*span*\
The `CFileTimeSpan` object to be compared.
-### Return Value
+### Return value
Returns TRUE if the first object is greater than (that is, represents a longer time period) or equal to the second, otherwise FALSE.
-## CFileTimeSpan::SetTimeSpan
+## CFileTimeSpan::SetTimeSpan
Call this method to set the time span of the `CFileTimeSpan` object.
-```
+```cpp
void SetTimeSpan(LONGLONG nSpan) throw();
```
### Parameters
-*nSpan*
-The new value for the time span in milliseconds.
+*nSpan*\
+The new value for the time span in 100-nanosecond FILETIME units. For more information, see [CFileTime](cfiletime-class.md).
## See also
-[FILETIME](/windows/win32/api/minwinbase/ns-minwinbase-filetime)
-[CFileTime Class](../../atl-mfc-shared/reference/cfiletime-class.md)
-[Hierarchy Chart](../../mfc/hierarchy-chart.md)
-[ATL/MFC Shared Classes](../../atl-mfc-shared/atl-mfc-shared-classes.md)
+[FILETIME](/windows/win32/api/minwinbase/ns-minwinbase-filetime)\
+[CFileTime class](cfiletime-class.md)\
+[Hierarchy chart](../../mfc/hierarchy-chart.md)\
+[ATL/MFC shared classes](../../atl-mfc-shared/atl-mfc-shared-classes.md)
diff --git a/docs/atl-mfc-shared/reference/codesnippet/CPP/accessing-file-status_1.cpp b/docs/atl-mfc-shared/reference/codesnippet/CPP/accessing-file-status_1.cpp
index a31cdb08a5..b677cfd245 100644
--- a/docs/atl-mfc-shared/reference/codesnippet/CPP/accessing-file-status_1.cpp
+++ b/docs/atl-mfc-shared/reference/codesnippet/CPP/accessing-file-status_1.cpp
@@ -14,4 +14,4 @@
// Open the file with the Create flag
bOpenOK = theFile.Open( szFileName,
CFile::modeCreate | CFile::modeWrite );
- }
\ No newline at end of file
+ }
\ No newline at end of file
diff --git a/docs/atl-mfc-shared/reference/codesnippet/CPP/opening-files_1.cpp b/docs/atl-mfc-shared/reference/codesnippet/CPP/opening-files_1.cpp
index 4db26496f1..f27b2177b4 100644
--- a/docs/atl-mfc-shared/reference/codesnippet/CPP/opening-files_1.cpp
+++ b/docs/atl-mfc-shared/reference/codesnippet/CPP/opening-files_1.cpp
@@ -7,4 +7,4 @@
{
TRACE( _T("Can't open file %s, error = %u\n"),
pszFileName, fileException.m_cause );
- }
\ No newline at end of file
+ }
\ No newline at end of file
diff --git a/docs/atl-mfc-shared/reference/codesnippet/CPP/reading-and-writing-files_1.cpp b/docs/atl-mfc-shared/reference/codesnippet/CPP/reading-and-writing-files_1.cpp
index 520e6d4beb..fb58fe66d8 100644
--- a/docs/atl-mfc-shared/reference/codesnippet/CPP/reading-and-writing-files_1.cpp
+++ b/docs/atl-mfc-shared/reference/codesnippet/CPP/reading-and-writing-files_1.cpp
@@ -1,6 +1,6 @@
- TCHAR szBuffer[256];
+ TCHAR szBuffer[256];
UINT nActual = 0;
- CFile myFile;
+ CFile myFile;
if ( myFile.Open( _T("c:\\test\\myfile.dat"), CFile::modeCreate |
CFile::modeReadWrite ) )
diff --git a/docs/atl-mfc-shared/reference/crect-class.md b/docs/atl-mfc-shared/reference/crect-class.md
index 89e9b2dada..035ca13704 100644
--- a/docs/atl-mfc-shared/reference/crect-class.md
+++ b/docs/atl-mfc-shared/reference/crect-class.md
@@ -299,7 +299,7 @@ CRect rect(0, 0, 100, 50);
ASSERT(rect.Width() == 100);
ASSERT(rect.Height() == 50);
-// Initialize from RECT stucture
+// Initialize from RECT structure
RECT sdkRect;
sdkRect.left = 0;
sdkRect.top = 0;
diff --git a/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md b/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md
index bf61e3d1c8..7d14d346c8 100644
--- a/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md
+++ b/docs/atl-mfc-shared/unicode-and-multibyte-character-set-mbcs-support.md
@@ -1,6 +1,6 @@
---
title: "Unicode and Multibyte Character Set (MBCS) Support"
-ms.date: "1/09/2017"
+ms.date: "01/09/2017"
helpviewer_keywords: ["MFC [C++], character set support", "MBCS [C++], strings and MFC support", "strings [C++], MBCS support in MFC", "character sets [C++], multibyte", "Unicode [C++], MFC strings", "Unicode [C++], string objects", "strings [C++], Unicode", "strings [C++], character set support"]
---
# Unicode and Multibyte Character Set (MBCS) Support
diff --git a/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md b/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md
index 18df05ca70..cb5bbb0e09 100644
--- a/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md
+++ b/docs/atl/adding-a-property-to-the-control-atl-tutorial-part-3.md
@@ -26,14 +26,14 @@ ms.assetid: f775fe34-103b-4f07-9999-400e987ee030
```cpp
short get_Sides();
- void set_Sides(short value);
+ void set_Sides(short value);
```
with
```cpp
[propget, id(1), helpstring("property Sides")] HRESULT Sides([out, retval] short *pVal);
- [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
+ [propput, id(1), helpstring("property Sides")] HRESULT Sides([in] short newVal);
```
1. From **Solution Explorer**, open PolyCtl.h and add the following lines after the definition of `m_clrFillColor`:
diff --git a/docs/atl/adding-an-event-atl-tutorial-part-5.md b/docs/atl/adding-an-event-atl-tutorial-part-5.md
index 1604365f2d..68cfe2c834 100644
--- a/docs/atl/adding-an-event-atl-tutorial-part-5.md
+++ b/docs/atl/adding-an-event-atl-tutorial-part-5.md
@@ -63,57 +63,57 @@ To help implement `IConnectionPoint`, you will use the Implement Connection Poin
```cpp
VOID Fire_ClickIn(LONG x, LONG y)
- {
- T* pT = static_cast(this);
- int nConnectionIndex;
- CComVariant* pvars = new CComVariant[2];
- int nConnections = m_vec.GetSize();
-
- for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
- {
- pT->Lock();
- CComPtr sp = m_vec.GetAt(nConnectionIndex);
- pT->Unlock();
- IDispatch* pDispatch = reinterpret_cast(sp.p);
- if (pDispatch != NULL)
- {
- pvars[1].vt = VT_I4;
- pvars[1].lVal = x;
- pvars[0].vt = VT_I4;
- pvars[0].lVal = y;
- DISPPARAMS disp = { pvars, NULL, 2, 0 };
- pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
- }
- }
- delete[] pvars;
-
- }
- VOID Fire_ClickOut(LONG x, LONG y)
- {
- T* pT = static_cast(this);
- int nConnectionIndex;
- CComVariant* pvars = new CComVariant[2];
- int nConnections = m_vec.GetSize();
-
- for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
- {
- pT->Lock();
- CComPtr sp = m_vec.GetAt(nConnectionIndex);
- pT->Unlock();
- IDispatch* pDispatch = reinterpret_cast(sp.p);
- if (pDispatch != NULL)
- {
- pvars[1].vt = VT_I4;
- pvars[1].lVal = x;
- pvars[0].vt = VT_I4;
- pvars[0].lVal = y;
- DISPPARAMS disp = { pvars, NULL, 2, 0 };
- pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
- }
- }
- delete[] pvars;
-
- }
+ {
+ T* pT = static_cast(this);
+ int nConnectionIndex;
+ CComVariant* pvars = new CComVariant[2];
+ int nConnections = m_vec.GetSize();
+
+ for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
+ {
+ pT->Lock();
+ CComPtr sp = m_vec.GetAt(nConnectionIndex);
+ pT->Unlock();
+ IDispatch* pDispatch = reinterpret_cast(sp.p);
+ if (pDispatch != NULL)
+ {
+ pvars[1].vt = VT_I4;
+ pvars[1].lVal = x;
+ pvars[0].vt = VT_I4;
+ pvars[0].lVal = y;
+ DISPPARAMS disp = { pvars, NULL, 2, 0 };
+ pDispatch->Invoke(0x1, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
+ }
+ }
+ delete[] pvars;
+
+ }
+ VOID Fire_ClickOut(LONG x, LONG y)
+ {
+ T* pT = static_cast(this);
+ int nConnectionIndex;
+ CComVariant* pvars = new CComVariant[2];
+ int nConnections = m_vec.GetSize();
+
+ for (nConnectionIndex = 0; nConnectionIndex < nConnections; nConnectionIndex++)
+ {
+ pT->Lock();
+ CComPtr sp = m_vec.GetAt(nConnectionIndex);
+ pT->Unlock();
+ IDispatch* pDispatch = reinterpret_cast(sp.p);
+ if (pDispatch != NULL)
+ {
+ pvars[1].vt = VT_I4;
+ pvars[1].lVal = x;
+ pvars[0].vt = VT_I4;
+ pvars[0].lVal = y;
+ DISPPARAMS disp = { pvars, NULL, 2, 0 };
+ pDispatch->Invoke(0x2, IID_NULL, LOCALE_USER_DEFAULT, DISPATCH_METHOD, &disp, NULL, NULL, NULL);
+ }
+ }
+ delete[] pvars;
+
+ }
```
You will see that this file has a class called `CProxy_IPolyCtlEvents` that derives from `IConnectionPointImpl`. _IPolyCtlEvents_CP.h now defines the two methods `Fire_ClickIn` and `Fire_ClickOut`, which take the two coordinate parameters. You call these methods when you want to fire an event from your control.
diff --git a/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md b/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md
index 3a4ba0b7e3..a700ce9542 100644
--- a/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md
+++ b/docs/atl/changing-the-drawing-code-atl-tutorial-part-4.md
@@ -37,14 +37,14 @@ Start by adding support for the math functions `sin` and `cos`, which will be us
```cpp
public CComControl,
- public IProvideClassInfo2Impl<&CLSID_PolyCtl, &DIID__IPolyCtlEvents, &LIBID_PolygonLib>
+ public IProvideClassInfo2Impl<&CLSID_PolyCtl, &DIID__IPolyCtlEvents, &LIBID_PolygonLib>
```
and in `BEGIN_COM_MAP(CPolyCtl)`, add the lines:
```cpp
COM_INTERFACE_ENTRY(IProvideClassInfo)
- COM_INTERFACE_ENTRY(IProvideClassInfo2)
+ COM_INTERFACE_ENTRY(IProvideClassInfo2)
```
1. Once the polygon points are calculated, they will be stored in an array of type `POINT`, so add the array after the definition statement `short m_nSides;` in PolyCtl.h:
diff --git a/docs/atl/codesnippet/CPP/atl-copy-policy-classes_1.h b/docs/atl/codesnippet/CPP/atl-copy-policy-classes_1.h
index d92e123a82..16850853aa 100644
--- a/docs/atl/codesnippet/CPP/atl-copy-policy-classes_1.h
+++ b/docs/atl/codesnippet/CPP/atl-copy-policy-classes_1.h
@@ -2,8 +2,8 @@
class GenericCopy
{
public :
- typedef DestinationType destination_type;
- typedef SourceType source_type;
+ typedef DestinationType destination_type;
+ typedef SourceType source_type;
static void init(destination_type* p)
{
diff --git a/docs/atl/codesnippet/CPP/ccomcontrolbase-class_5.h b/docs/atl/codesnippet/CPP/ccomcontrolbase-class_5.h
index 088a417f6d..17463d9b09 100644
--- a/docs/atl/codesnippet/CPP/ccomcontrolbase-class_5.h
+++ b/docs/atl/codesnippet/CPP/ccomcontrolbase-class_5.h
@@ -17,9 +17,9 @@
SetTextAlign(di.hdcDraw, TA_CENTER|TA_BASELINE);
LPCTSTR pszText = _T("ATL 8.0 : MyControl");
- // For security reasons, we recommend that you use the lstrlen function
- // with caution. Here, we can guarantee that pszText is NULL terminated,
- // and therefore it is safe to use this function.
+ // For security reasons, we recommend that you use the lstrlen function
+ // with caution. Here, we can guarantee that pszText is NULL terminated,
+ // and therefore it is safe to use this function.
TextOut(di.hdcDraw,
(rc.left + rc.right) / 2,
(rc.top + rc.bottom) / 2,
diff --git a/docs/atl/codesnippet/CPP/hosting-activex-controls-using-atl-axhost_1.cpp b/docs/atl/codesnippet/CPP/hosting-activex-controls-using-atl-axhost_1.cpp
index 0dcdf2caeb..6662b8b78d 100644
--- a/docs/atl/codesnippet/CPP/hosting-activex-controls-using-atl-axhost_1.cpp
+++ b/docs/atl/codesnippet/CPP/hosting-activex-controls-using-atl-axhost_1.cpp
@@ -293,9 +293,9 @@ int APIENTRY _tWinMain(HINSTANCE hInstance,
LPTSTR lpCmdLine,
int nCmdShow)
{
- UNREFERENCED_PARAMETER(hInstance);
+ UNREFERENCED_PARAMETER(hInstance);
UNREFERENCED_PARAMETER(hPrevInstance);
-
+
g_UseMethod = _ttoi(lpCmdLine);
if (ValidateUseMethod())
diff --git a/docs/atl/iunknown.md b/docs/atl/iunknown.md
index 584b104e37..19cbfe61eb 100644
--- a/docs/atl/iunknown.md
+++ b/docs/atl/iunknown.md
@@ -7,7 +7,7 @@ ms.assetid: e6b85472-e54b-4b8c-b19f-4454d6c05a8f
---
# IUnknown
-[IUnknown](/windows/win32/api/unknwn/nn-unknwn-iunknown) is the base interface of every other COM interface. This interface defines three methods: [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q_)), [AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref), and [Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release). [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q_)) allows an interface user to ask the object for a pointer to another of its interfaces. [AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref) and [Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release) implement reference counting on the interface.
+[IUnknown](/windows/win32/api/unknwn/nn-unknwn-iunknown) is the base interface of every other COM interface. This interface defines three methods: [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q)), [AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref), and [Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release). [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q)) allows an interface user to ask the object for a pointer to another of its interfaces. [AddRef](/windows/win32/api/unknwn/nf-unknwn-iunknown-addref) and [Release](/windows/win32/api/unknwn/nf-unknwn-iunknown-release) implement reference counting on the interface.
## See also
diff --git a/docs/atl/queryinterface.md b/docs/atl/queryinterface.md
index a202592219..1a9387bfd7 100644
--- a/docs/atl/queryinterface.md
+++ b/docs/atl/queryinterface.md
@@ -7,7 +7,7 @@ ms.assetid: 62fce95e-aafa-4187-b50b-e6611b74c3b3
---
# QueryInterface
-Although there are mechanisms by which an object can express the functionality it provides statically (before it is instantiated), the fundamental COM mechanism is to use the `IUnknown` method called [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q_)).
+Although there are mechanisms by which an object can express the functionality it provides statically (before it is instantiated), the fundamental COM mechanism is to use the `IUnknown` method called [QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q)).
Every interface is derived from `IUnknown`, so every interface has an implementation of `QueryInterface`. Regardless of implementation, this method queries an object using the IID of the interface to which the caller wants a pointer. If the object supports that interface, `QueryInterface` retrieves a pointer to the interface, while also calling `AddRef`. Otherwise, it returns the E_NOINTERFACE error code.
diff --git a/docs/atl/reference/caxwindow-class.md b/docs/atl/reference/caxwindow-class.md
index b61d65e3d0..819092f5c6 100644
--- a/docs/atl/reference/caxwindow-class.md
+++ b/docs/atl/reference/caxwindow-class.md
@@ -114,18 +114,18 @@ HRESULT CreateControl(
*lpszName*
A pointer to a string to create the control. Must be formatted in one of the following ways:
-- A ProgID such as "MSCAL.Calendar.7"
+- A ProgID such as `"MSCAL.Calendar.7"`
-- A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
+- A CLSID such as `"{8E27C92B-1264-101C-8A2F-040224009C02}"`
-- A URL such as ""
+- A URL such as `""`
-- A reference to an Active document such as "file://\\\Documents\MyDoc.doc"
+- A reference to an Active document such as `"file://\\\Documents\MyDoc.doc"`
-- A fragment of HTML such as "MSHTML:\\This is a line of text\\"
+- A fragment of HTML such as `"MSHTML:\\This is a line of text\\"`
> [!NOTE]
- > "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream. Only the ProgID and CLSID are supported in Windows Mobile platforms. Windows CE embedded platforms, other than Windows Mobile with support for CE IE support all types including ProgID, CLSID, URL, reference to active document, and fragment of HTML.
+ > `"MSHTML:"` must precede the HTML fragment so that it is designated as being an MSHTML stream. Only the ProgID and CLSID are supported in Windows Mobile platforms. Windows CE embedded platforms, other than Windows Mobile with support for CE IE support all types including ProgID, CLSID, URL, reference to active document, and fragment of HTML.
*pStream*
[in] A pointer to a stream that is used to initialize the properties of the control. Can be NULL.
@@ -181,18 +181,18 @@ HRESULT CreateControlEx(
*lpszName*
A pointer to a string to create the control. Must be formatted in one of the following ways:
-- A ProgID such as "MSCAL.Calendar.7"
+- A ProgID such as `"MSCAL.Calendar.7"`
-- A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
+- A CLSID such as `"{8E27C92B-1264-101C-8A2F-040224009C02}"`
-- A URL such as ""
+- A URL such as `""`
-- A reference to an Active document such as "file://\\\Documents\MyDoc.doc"
+- A reference to an Active document such as `"file://\\\Documents\MyDoc.doc"`
-- A fragment of HTML such as "MSHTML:\\This is a line of text\\"
+- A fragment of HTML such as `"MSHTML:\\This is a line of text\\"`
> [!NOTE]
- > "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream. Only the ProgID and CLSID are supported in Windows Mobile platforms. Windows CE embedded platforms, other than Windows Mobile with support for CE IE support all types including ProgID, CLSID, URL, reference to active document, and fragment of HTML.
+ > `"MSHTML:"` must precede the HTML fragment so that it is designated as being an MSHTML stream. Only the ProgID and CLSID are supported in Windows Mobile platforms. Windows CE embedded platforms, other than Windows Mobile with support for CE IE support all types including ProgID, CLSID, URL, reference to active document, and fragment of HTML.
*pStream*
[in] A pointer to a stream that is used to initialize the properties of the control. Can be NULL.
diff --git a/docs/atl/reference/ccomapartment-class.md b/docs/atl/reference/ccomapartment-class.md
index f706bfe22f..69b51fd54c 100644
--- a/docs/atl/reference/ccomapartment-class.md
+++ b/docs/atl/reference/ccomapartment-class.md
@@ -7,7 +7,7 @@ ms.assetid: dbc177d7-7ee4-45f2-b563-d578a467ca93
---
# CComApartment Class
-This class provides support for managing an appartment in a thread-pooled EXE module.
+This class provides support for managing an apartment in a thread-pooled EXE module.
> [!IMPORTANT]
> This class and its members cannot be used in applications that execute in the Windows Runtime.
diff --git a/docs/atl/reference/ccomptr-class.md b/docs/atl/reference/ccomptr-class.md
index f8d734c5db..4ebeb2b878 100644
--- a/docs/atl/reference/ccomptr-class.md
+++ b/docs/atl/reference/ccomptr-class.md
@@ -1,6 +1,7 @@
---
title: "CComPtr Class"
-ms.date: "11/04/2016"
+description: "Reference guide to the Microsoft C++ Active Template Library (ATL) class CComPtr."
+ms.date: "02/07/2020"
f1_keywords: ["CComPtr", "ATLBASE/ATL::CComPtr", "ATLBASE/ATL::CComPtr::CComPtr"]
helpviewer_keywords: ["CComPtr class"]
ms.assetid: 22d9ea8d-ed66-4c34-940f-141db11e83bd
@@ -11,12 +12,12 @@ A smart pointer class for managing COM interface pointers.
## Syntax
-```
+```cpp
template
class CComPtr
```
-#### Parameters
+### Parameters
*T*
A COM interface specifying the type of pointer to be stored.
@@ -37,9 +38,9 @@ A COM interface specifying the type of pointer to be stored.
## Remarks
-ATL uses `CComPtr` and [CComQIPtr](../../atl/reference/ccomqiptr-class.md) to manage COM interface pointers. Both are derived from [CComPtrBase](../../atl/reference/ccomptrbase-class.md), and both perform automatic reference counting.
+ATL uses `CComPtr` and [CComQIPtr](../../atl/reference/ccomqiptr-class.md) to manage COM interface pointers. Both are derived from [CComPtrBase](../../atl/reference/ccomptrbase-class.md), and both do automatic reference counting.
-The `CComPtr` and [CComQIPtr](../../atl/reference/ccomqiptr-class.md) classes can help eliminate memory leaks by performing automatic reference counting. The following functions both perform the same logical operations; however, note how the second version may be less error-prone by using the `CComPtr` class:
+The `CComPtr` and [CComQIPtr](../../atl/reference/ccomqiptr-class.md) classes can help eliminate memory leaks by performing automatic reference counting. The following functions both do the same logical operations. However, the second version may be less error-prone because it uses the `CComPtr` class:
[!code-cpp[NVC_ATL_Utilities#130](../../atl/codesnippet/cpp/ccomptr-class_1.cpp)]
@@ -57,11 +58,11 @@ In Debug builds, link atlsd.lib for code tracing.
**Header:** atlbase.h
-## CComPtr::CComPtr
+## CComPtr::CComPtr
The constructor.
-```
+```cpp
CComPtr() throw ();
CComPtr(T* lp) throw ();
CComPtr (const CComPtr& lp) throw ();
@@ -75,11 +76,15 @@ Used to initialize the interface pointer.
*T*
A COM interface.
-## CComPtr::operator =
+### Remarks
+
+The constructors that take an argument call `AddRef` on *lp*, if it isn't a null pointer. A non-null owned object gets a `Release` call upon the CComPtr object's destruction, or if a new object is assigned to the CComPtr object.
+
+## CComPtr::operator =
Assignment operator.
-```
+```cpp
T* operator= (T* lp) throw ();
T* operator= (const CComPtr& lp) throw ();
```
diff --git a/docs/atl/reference/ccomptrbase-class.md b/docs/atl/reference/ccomptrbase-class.md
index 252a171bc9..7449aea897 100644
--- a/docs/atl/reference/ccomptrbase-class.md
+++ b/docs/atl/reference/ccomptrbase-class.md
@@ -359,7 +359,7 @@ Returns S_OK on success, or E_NOINTERFACE on failure.
### Remarks
-This method calls [IUnknown::QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q_)).
+This method calls [IUnknown::QueryInterface](/windows/win32/api/unknwn/nf-unknwn-iunknown-queryinterface(q)).
In debug builds, an assertion error will occur if *pp* is not equal to NULL.
diff --git a/docs/atl/reference/ccomsafedeletecriticalsection-class.md b/docs/atl/reference/ccomsafedeletecriticalsection-class.md
index 209fb83cc0..5c4ca5695a 100644
--- a/docs/atl/reference/ccomsafedeletecriticalsection-class.md
+++ b/docs/atl/reference/ccomsafedeletecriticalsection-class.md
@@ -106,7 +106,7 @@ Returns the result of [CComCriticalSection::Lock](../../atl/reference/ccomcritic
### Remarks
-This method assumes the [m_bInitialized](#m_binitialized) data member is set to TRUE upon entry. An assertion is generated in Debug builds if this condidtion is not met.
+This method assumes the [m_bInitialized](#m_binitialized) data member is set to TRUE upon entry. An assertion is generated in Debug builds if this condition is not met.
For more information on the behavior of the function, refer to [CComCriticalSection::Lock](../../atl/reference/ccomcriticalsection-class.md#lock).
diff --git a/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_1.cpp b/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_1.cpp
index 1660423ba3..f3d2420d8a 100644
--- a/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_1.cpp
+++ b/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_1.cpp
@@ -9,7 +9,7 @@ public :
// your service
// Suggested - PKT Level Authentication,
// Impersonation Level of RPC_C_IMP_LEVEL_IDENTIFY
- // and an appropiate Non NULL Security Descriptor.
+ // and an appropriate Non NULL Security Descriptor.
return S_OK;
}
diff --git a/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_2.cpp b/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_2.cpp
index 84cf7fc89e..b1848952a2 100644
--- a/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_2.cpp
+++ b/docs/atl/reference/codesnippet/CPP/catlservicemodulet-class_2.cpp
@@ -11,7 +11,7 @@ class CAttribServiceModule
// your service
// Suggested - PKT Level Authentication,
// Impersonation Level of RPC_C_IMP_LEVEL_IDENTIFY
- // and an appropiate Non NULL Security Descriptor.
+ // and an appropriate Non NULL Security Descriptor.
return S_OK;
}
diff --git a/docs/atl/reference/composite-control-global-functions.md b/docs/atl/reference/composite-control-global-functions.md
index 9c7ea1fa03..501bf78a32 100644
--- a/docs/atl/reference/composite-control-global-functions.md
+++ b/docs/atl/reference/composite-control-global-functions.md
@@ -136,18 +136,18 @@ ATLAPI AtlAxCreateControl(
*lpszName*
A pointer to a string to be passed to the control. Must be formatted in one of the following ways:
-- A ProgID such as "MSCAL.Calendar.7"
+- A ProgID such as `"MSCAL.Calendar.7"`
-- A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
+- A CLSID such as `"{8E27C92B-1264-101C-8A2F-040224009C02}"`
-- A URL such as ""
+- A URL such as `""`
-- A reference to an Active document such as "file://\\\Documents\MyDoc.doc"
+- A reference to an Active document such as `"file://\\\Documents\MyDoc.doc"`
-- A fragment of HTML such as "MSHTML:\\This is a line of text\\"
+- A fragment of HTML such as `"MSHTML:\\This is a line of text\\"`
> [!NOTE]
- > "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream.
+ > `"MSHTML:"` must precede the HTML fragment so that it is designated as being an MSHTML stream.
*hWnd*
[in] Handle to the window that the control will be attached to.
@@ -188,18 +188,18 @@ ATLAPI AtlAxCreateControlEx(
*lpszName*
A pointer to a string to be passed to the control. Must be formatted in one of the following ways:
-- A ProgID such as "MSCAL.Calendar.7"
+- A ProgID such as `"MSCAL.Calendar.7"`
-- A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
+- A CLSID such as `"{8E27C92B-1264-101C-8A2F-040224009C02}"`
-- A URL such as ""
+- A URL such as `""`
-- A reference to an Active document such as "file://\\\Documents\MyDoc.doc"
+- A reference to an Active document such as `"file://\\\Documents\MyDoc.doc"`
-- A fragment of HTML such as "MSHTML:\\This is a line of text\\"
+- A fragment of HTML such as `"MSHTML:\\This is a line of text\\"`
> [!NOTE]
- > "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream.
+ > `"MSHTML:"` must precede the HTML fragment so that it is designated as being an MSHTML stream.
*hWnd*
[in] Handle to the window that the control will be attached to.
@@ -247,18 +247,18 @@ ATLAPI AtlAxCreateControlLic(
*lpszName*
A pointer to a string to be passed to the control. Must be formatted in one of the following ways:
-- A ProgID such as "MSCAL.Calendar.7"
+- A ProgID such as `"MSCAL.Calendar.7"`
-- A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
+- A CLSID such as `"{8E27C92B-1264-101C-8A2F-040224009C02}"`
-- A URL such as ""
+- A URL such as `""`
-- A reference to an Active document such as "file://\\\Documents\MyDoc.doc"
+- A reference to an Active document such as `"file://\\\Documents\MyDoc.doc"`
-- A fragment of HTML such as "MSHTML:\\This is a line of text\\"
+- A fragment of HTML such as `"MSHTML:\\This is a line of text\\"`
> [!NOTE]
- > "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream.
+ > `"MSHTML:"` must precede the HTML fragment so that it is designated as being an MSHTML stream.
*hWnd*
Handle to the window that the control will be attached to.
@@ -301,18 +301,18 @@ ATLAPI AtlAxCreateControlLicEx(
*lpszName*
A pointer to a string to be passed to the control. Must be formatted in one of the following ways:
-- A ProgID such as "MSCAL.Calendar.7"
+- A ProgID such as `"MSCAL.Calendar.7"`
-- A CLSID such as "{8E27C92B-1264-101C-8A2F-040224009C02}"
+- A CLSID such as `"{8E27C92B-1264-101C-8A2F-040224009C02}"`
-- A URL such as ""
+- A URL such as `""`
-- A reference to an Active document such as "file://\\\Documents\MyDoc.doc"
+- A reference to an Active document such as `"file://\\\Documents\MyDoc.doc"`
-- A fragment of HTML such as "MSHTML:\\This is a line of text\\"
+- A fragment of HTML such as `"MSHTML:\\This is a line of text\\"`
> [!NOTE]
- > "MSHTML:" must precede the HTML fragment so that it is designated as being an MSHTML stream.
+ > `"MSHTML:"` must precede the HTML fragment so that it is designated as being an MSHTML stream.
*hWnd*
Handle to the window that the control will be attached to.
diff --git a/docs/atl/reference/debugging-and-error-reporting-macros.md b/docs/atl/reference/debugging-and-error-reporting-macros.md
index 8bffbd8e8a..a29ce176d4 100644
--- a/docs/atl/reference/debugging-and-error-reporting-macros.md
+++ b/docs/atl/reference/debugging-and-error-reporting-macros.md
@@ -188,7 +188,7 @@ ATLTRACE2(exp);
ATLTRACE2(
DWORD category,
UINT level,
- LPCSTRlpszFormat, ...);
+ LPCSTR lpszFormat, ...);
```
### Parameters
diff --git a/docs/atl/reference/iregistrar-class.md b/docs/atl/reference/iregistrar-class.md
index a45586952a..68121e6d40 100644
--- a/docs/atl/reference/iregistrar-class.md
+++ b/docs/atl/reference/iregistrar-class.md
@@ -1,6 +1,6 @@
---
title: "IRegistrar Interface"
-ms.date: "2/1/2017"
+ms.date: "02/01/2017"
f1_keywords: ["IRegistrar", "ATLIFASE/ATL::IRegistrar", "ATLIFASE/ATL::IRegistrar::ResourceRegisterSz", "ATLIFASE/ATL::IRegistrar::ResourceUnregisterSz", "ATLIFASE/ATL::IRegistrar::FileRegister", "ATLIFASE/ATL::IRegistrar::FileUnregister", "ATLIFASE/ATL::IRegistrar::StringRegister", "ATLIFASE/ATL::IRegistrar::StringUnregister", "ATLIFASE/ATL::IRegistrar::ResourceRegister", "ATLIFASE/ATL::IRegistrar::ResourceUnregister"]
helpviewer_keywords: ["Iregistrar Interface"]
ms.assetid: e88c04b7-0c93-4ae8-aeb9-ecd78f87421e
diff --git a/docs/build-insights/get-started-with-cpp-build-insights.md b/docs/build-insights/get-started-with-cpp-build-insights.md
new file mode 100644
index 0000000000..5b8548e6d1
--- /dev/null
+++ b/docs/build-insights/get-started-with-cpp-build-insights.md
@@ -0,0 +1,120 @@
+---
+title: "Get started with C++ Build Insights"
+description: "A high-level overview of how to use the build-time performance analysis tools that are part of C++ Build Insights."
+ms.date: "11/03/2019"
+helpviewer_keywords: ["C++ Build Insights", "throughput analysis", "build time analysis", "vcperf.exe"]
+---
+# Get started with C++ Build Insights
+
+::: moniker range="<=vs-2017"
+
+The C++ Build Insights tools are available in Visual Studio 2019. To see the documentation for that version, set the Visual Studio version selector control for this article to Visual Studio 2019.
+
+::: moniker-end
+::: moniker range="vs-2019"
+
+C++ Build Insights is a collection of tools that provides increased visibility into the Microsoft Visual C++ (MSVC) tool chain. The tools collect data about your C++ builds, and present it in a format that can help you answer common questions, like:
+
+- Are my builds sufficiently parallelized?
+- What should I include in my pre-compiled header (PCH)?
+- Is there a specific bottleneck I should focus on to increase my build speeds?
+
+The two main components of this technology are the command-line utility *vcperf.exe* and an add-in for the Windows Performance Analyzer (WPA) trace viewer. The utility is used to collect traces of your build, while the add-in allows you to view them in WPA. Follow these steps to get started using these two tools.
+
+## Step 1: Install and configure Windows Performance Analyzer
+
+WPA is a trace viewer available in the Windows Assessment and Deployment Kit (ADK). It's a separate utility that's not part of the components you can install with the Visual Studio installer.
+
+A version of WPA that supports C++ Build Insights is currently only available in the Windows ADK Insider Preview. To access this preview, you must sign up for the [Windows Insider program](https://insider.windows.com). You don't need to install the Windows 10 Insider Preview operating system to obtain the Windows ADK preview. You only need to register your Microsoft account with the Windows Insider Program.
+
+### To download and install WPA
+
+NOTE: Windows 8 or above is required for installing the Windows Performance Analyzer.
+
+1. Browse to the Windows ADK Insider Preview [download page](https://www.microsoft.com/en-us/software-download/windowsinsiderpreviewADK).
+
+1. Download the Windows ADK Insider Preview. It's a disk image.
+
+1. Open the disk image and run the *adksetup.exe* installer.
+
+1. When prompted for the features that you want to install, select the **Windows Performance Toolkit**. You may select other features if you wish, but they're not required to install WPA.
+
+ ![The Windows Performance Analyzer installer's feature selection screen](media/wpa-installation.png)
+
+### To configure Build Insights
+
+1. Launch WPA.
+
+1. Select **Window** > **Select Tables (Experimental)**.
+
+1. Scroll down to the **Diagnostics** section.
+
+1. Select all the MSVC Build Insights views.
+
+ ![Windows Performance Analyzer's table selection panel](media/wpa-configuration.png)
+
+## Step 2: Trace your build with vcperf.exe
+
+To view C++ Build Insights data, first collect it into a trace file by following these steps:
+
+1. Open a native tools or cross tools developer command prompt for Visual Studio 2019 in administrator mode. (Right-click the Start menu item and choose **More** > **Run as administrator**.)
+
+1. In the command prompt window, enter this command:
+
+ **vcperf.exe /start _SessionName_**
+
+ Choose a session name you'll remember for *SessionName*.
+
+1. Build your project as you normally would. You don't need to use the same command prompt window to build.
+
+1. In the command prompt window, enter this command:
+
+ **vcperf.exe /stop _SessionName_ _traceFile.etl_**
+
+ Use the same session name you chose for *SessionName* before. Choose an appropriate name for the *traceFile.etl* trace file.
+
+Here's what a typical *vcperf.exe* command sequence looks like in a developer command prompt window:
+
+![A simple vcperf.exe usage scenario](media/vcperf-simple-usage.png)
+
+### Important notes about vcperf.exe
+
+- Administrator privileges are required to start or stop a *vcperf.exe* trace. Use a developer command prompt window that you open by using **Run as administrator**.
+
+- Only one tracing session at a time may run on a machine.
+
+- Make sure to remember the session name you used to start your trace. It can be troublesome to stop a running session without knowing its name.
+
+- Just like *cl.exe* and *link.exe*, the command-line utility *vcperf.exe* is included in an MSVC installation. No additional steps are required to obtain this component.
+
+- *vcperf.exe* collects information about all MSVC tools running on your system. As a result, you don't have to start your build from the same command prompt you used to collect the trace. You can build your project from either a different command prompt, or even in Visual Studio.
+
+## Step 3: View your trace in Windows Performance Analyzer
+
+Launch WPA and open the trace you just collected. WPA should recognize it as a C++ Build Insights trace, and the following views should appear in the Graph Explorer panel on the left:
+
+- Build Explorer
+- Files
+- Function
+
+If you can't see these views, double-check that WPA is configured correctly, as described in [Step 1](#configuration-steps). You can view your build data by dragging the views into the empty Analysis window on the right, as shown here:
+
+![Viewing a C++ Build Insights trace in Windows Performance Analyzer](media/wpa-viewing-trace.gif)
+
+Other views are available in the Graph Explorer panel. Drag them into the Analysis window when you're interested in the information they contain. A useful one is the CPU (Sampled) view, which shows CPU utilization throughout your build.
+
+## More information
+
+[Windows Performance Analyzer basics](wpa-basics.md)\
+Learn about common WPA operations that can help you analyze your build traces.
+
+[vcperf.exe reference](vcperf-reference.md)\
+The *vcperf.exe* command reference lists all the available command options.
+
+[Windows Performance Analyzer views reference](wpa-views-reference.md)\
+Refer to this article for details about the C++ Build Insights views in WPA.
+
+[Windows Performance Analyzer](/windows-hardware/test/wpt/windows-performance-analyzer)\
+The official WPA documentation site.
+
+::: moniker-end
diff --git a/docs/build-insights/media/vcperf-simple-usage.png b/docs/build-insights/media/vcperf-simple-usage.png
new file mode 100644
index 0000000000..cbb17e373e
Binary files /dev/null and b/docs/build-insights/media/vcperf-simple-usage.png differ
diff --git a/docs/build-insights/media/wpa-configuration.png b/docs/build-insights/media/wpa-configuration.png
new file mode 100644
index 0000000000..9048e02a13
Binary files /dev/null and b/docs/build-insights/media/wpa-configuration.png differ
diff --git a/docs/build-insights/media/wpa-grouping.gif b/docs/build-insights/media/wpa-grouping.gif
new file mode 100644
index 0000000000..d66e1dd23f
Binary files /dev/null and b/docs/build-insights/media/wpa-grouping.gif differ
diff --git a/docs/build-insights/media/wpa-installation.png b/docs/build-insights/media/wpa-installation.png
new file mode 100644
index 0000000000..34bd649e28
Binary files /dev/null and b/docs/build-insights/media/wpa-installation.png differ
diff --git a/docs/build-insights/media/wpa-presets.png b/docs/build-insights/media/wpa-presets.png
new file mode 100644
index 0000000000..3dddfbe013
Binary files /dev/null and b/docs/build-insights/media/wpa-presets.png differ
diff --git a/docs/build-insights/media/wpa-switching-view-mode.gif b/docs/build-insights/media/wpa-switching-view-mode.gif
new file mode 100644
index 0000000000..f4b5d85d46
Binary files /dev/null and b/docs/build-insights/media/wpa-switching-view-mode.gif differ
diff --git a/docs/build-insights/media/wpa-viewing-trace.gif b/docs/build-insights/media/wpa-viewing-trace.gif
new file mode 100644
index 0000000000..66f02dfa25
Binary files /dev/null and b/docs/build-insights/media/wpa-viewing-trace.gif differ
diff --git a/docs/build-insights/media/wpa-zooming.gif b/docs/build-insights/media/wpa-zooming.gif
new file mode 100644
index 0000000000..6296524f9f
Binary files /dev/null and b/docs/build-insights/media/wpa-zooming.gif differ
diff --git a/docs/build-insights/vcperf-reference.md b/docs/build-insights/vcperf-reference.md
new file mode 100644
index 0000000000..739504aeef
--- /dev/null
+++ b/docs/build-insights/vcperf-reference.md
@@ -0,0 +1,45 @@
+---
+title: "C++ Build Insights: vcperf.exe reference"
+description: "Reference for the command-line utility vcperf.exe."
+ms.date: "11/03/2019"
+helpviewer_keywords: ["C++ Build Insights", "throughput analysis", "build time analysis", "vcperf.exe"]
+---
+# C++ Build Insights: vcperf.exe reference
+
+::: moniker range="<=vs-2017"
+
+The C++ Build Insights tools are available in Visual Studio 2019. To see the documentation for that version, set the Visual Studio version selector control for this article to Visual Studio 2019.
+
+::: moniker-end
+::: moniker range="vs-2019"
+
+This article lists and describes the commands available in *vcperf.exe*, and how to use them.
+
+## Commands to start and stop traces
+
+*IMPORTANT: the following commands all require administrative privileges.*
+
+| Option | Arguments and description |
+|------------------|---------------------------|
+| `/start` | `[/nocpusampling]` `` |
+| | Tells *vcperf.exe* to start a trace under the given session name. There can only be one active session at a time on a given machine.
If the `/nocpusampling` option is specified, *vcperf.exe* doesn't collect CPU samples. It prevents the use of the CPU Usage (Sampled) view in Windows Performance Analyzer, but makes the collected traces smaller.
Once tracing is started, *vcperf.exe* returns immediately. Events are collected system-wide for all processes running on the machine. That means that you don't need to build your project from the same command prompt as the one you used to run *vcperf.exe*. For example, you can build your project from Visual Studio. |
+| `/stop` | `` `` |
+| | Stops the trace identified by the given session name. Runs a post-processing step on the trace to generate a file viewable in Windows Performance Analyzer (WPA). For the best viewing experience, use a version of WPA that includes the C++ Build Insights add-in. For more information, see [Get started with C++ Build Insights](get-started-with-cpp-build-insights.md). The `` parameter specifies where to save the output file. |
+| `/stopnoanalyze` | `` `` |
+| | Stops the trace identified by the given session name and writes the raw, unprocessed data in the specified output file. The resulting file isn't meant to be viewed in WPA.
The post-processing step involved in the `/stop` command can sometimes be lengthy. You can use the `/stopnoanalyze` command to delay this post-processing step. Use the `/analyze` command when you're ready to produce a file viewable in Windows Performance Analyzer. |
+
+## Miscellaneous commands
+
+| Option | Arguments and description |
+|------------|---------------------------|
+| `/analyze` | ` ` |
+| | Accepts a raw trace file produced by the `/stopnoanalyze` command. Runs a post-processing step on this trace to generate a file viewable in Windows Performance Analyzer. For the best viewing experience, use a version of WPA that includes the C++ Build Insights add-in. For more information, see [Get started with C++ Build Insights](get-started-with-cpp-build-insights.md). |
+
+## See also
+
+[Get started with C++ Build Insights](get-started-with-cpp-build-insights.md)\
+[Windows Performance Analyzer basics](wpa-basics.md)\
+[Windows Performance Analyzer views reference](wpa-views-reference.md)\
+[Windows Performance Analyzer](/windows-hardware/test/wpt/windows-performance-analyzer)
+
+::: moniker-end
diff --git a/docs/build-insights/wpa-basics.md b/docs/build-insights/wpa-basics.md
new file mode 100644
index 0000000000..223497b1eb
--- /dev/null
+++ b/docs/build-insights/wpa-basics.md
@@ -0,0 +1,56 @@
+---
+title: "C++ Build Insights: Windows Performance Analyzer basics"
+description: "Tutorial on how to complete basic operations in Windows Performance Analyzer."
+ms.date: "11/03/2019"
+helpviewer_keywords: ["C++ Build Insights", "throughput analysis", "build time analysis", "vcperf.exe"]
+---
+# C++ Build Insights: Windows Performance Analyzer basics
+
+::: moniker range="<=vs-2017"
+
+The C++ Build Insights tools are available in Visual Studio 2019. To see the documentation for that version, set the Visual Studio version selector control for this article to Visual Studio 2019.
+
+::: moniker-end
+::: moniker range="vs-2019"
+
+Using C++ Build Insights effectively requires some knowledge of Windows Performance Analyzer (WPA). This article helps you become familiar with common WPA operations. For more information on how to use WPA, see the [Windows Performance Analyzer](/windows-hardware/test/wpt/windows-performance-analyzer) documentation.
+
+## Change the view mode
+
+WPA offers two basic view modes for you to explore your traces:
+
+- graph mode, and
+- table mode.
+
+You can switch between them by using the view mode icons in the top of the view pane:
+
+![Switching between graph mode and table mode.](media/wpa-switching-view-mode.gif)
+
+## Select presets
+
+Most C++ Build Insights WPA views have multiple presets for you to choose from. You can select the preset you want by using the drop-down menu in the top of the view pane:
+
+![Selecting a preset.](media/wpa-presets.png)
+
+## Zoom in and out
+
+Some build traces are so large it's hard to make out the details. To zoom in on an area that interests you, right-click on the graph and select **Zoom**. You can always go back to the previous setting by choosing **Undo Zoom**. This image shows an example of using a selection and the **Zoom** command to zoom in on a section of the graph:
+
+![Zooming in on a graph.](media/wpa-zooming.gif)
+
+## Group by different columns
+
+You can customize the way your trace is displayed. Click on the gear icon at the top of a view pane and rearrange the columns in the Build Explorer View Editor. The columns found above the yellow line in this dialog are the ones your data rows are grouped by. The column right above the yellow line is special: in the graph view, it's displayed on the colored bars.
+
+This image shows an example bar graph of a link invocation. We use the gear icon to open the Build Explorer View Editor dialog. Then we drag the Component and Name column entries above the yellow line. The configuration is changed to increase the level of detail, and to see what actually happened inside the linker:
+
+![Zooming in on a graph.](media/wpa-grouping.gif)
+
+## See also
+
+[Get started with C++ Build Insights](get-started-with-cpp-build-insights.md)\
+[vcperf.exe reference](vcperf-reference.md)\
+[Windows Performance Analyzer views reference](wpa-views-reference.md)\
+[Windows Performance Analyzer](/windows-hardware/test/wpt/windows-performance-analyzer)
+
+::: moniker-end
diff --git a/docs/build-insights/wpa-views-reference.md b/docs/build-insights/wpa-views-reference.md
new file mode 100644
index 0000000000..ad37dd5c72
--- /dev/null
+++ b/docs/build-insights/wpa-views-reference.md
@@ -0,0 +1,128 @@
+---
+title: "C++ Build Insights: Windows Performance Analyzer views reference"
+description: "Reference for C++ Build Insights views available in Windows Performance Analyzer."
+ms.date: "11/03/2019"
+helpviewer_keywords: ["C++ Build Insights", "throughput analysis", "build time analysis", "vcperf.exe"]
+---
+# C++ Build Insights: Windows Performance Analyzer views reference
+
+::: moniker range="<=vs-2017"
+
+The C++ Build Insights tools are available in Visual Studio 2019. To see the documentation for that version, set the Visual Studio version selector control for this article to Visual Studio 2019.
+
+::: moniker-end
+::: moniker range="vs-2019"
+
+This article provides details on each of the C++ Build Insights views available in Windows Performance Analyzer (WPA). Use this page to find:
+
+- data column descriptions; and
+- available presets for each view, including their intended use and preferred viewing mode.
+
+If you're new to WPA, we recommend that you first familiarize yourself with the [basics of WPA for C++ Build Insights](wpa-basics.md).
+
+## Build Explorer
+
+The Build Explorer view is used to:
+
+- diagnose parallelism issues,
+- determine if your build time is dominated by parsing, code generation, or linking, and
+- identify bottlenecks and unusually long build activities.
+
+### Build Explorer view data columns
+
+| Column Name | Description |
+|-|-|
+| BuildTimelineDescription | A textual description the timeline the current activity or property occurs on. |
+| BuildTimelineId | A zero-based identifier for the timeline the current activity or property occurs on. |
+| Component | The component being compiled or linked when the current event was emitted. The value of this column is *\* when no component is associated with this event. X is a unique numerical identifier for the invocation being executed at the time the event was emitted. This identifier is the same as the one in the InvocationId column for this event. |
+| Count | The number of activities or properties represented by this data row. This value is always 1, and is only useful in aggregation scenarios when multiple rows are grouped. |
+| ExclusiveCPUTime | The amount of CPU time in milliseconds used by this activity. The time spent in child activities isn't included in this amount. |
+| ExclusiveDuration | The millisecond duration of the activity. The duration of child activities isn't included in this amount. |
+| InclusiveCPUTime | The amount of CPU time in milliseconds used by this activity and all child activities. |
+| InclusiveDuration | The millisecond duration of this activity, including all child activities. |
+| InvocationDescription | A textual description of the invocation this event occurred in. The description includes whether it was *cl.exe* or *link.exe*, and a unique numerical invocation identifier. If applicable, it includes the full path to the component compiled or linked during the invocation. For invocations that don't build any component, or for the ones that build multiple components, the path is blank. The invocation identifier is the same as the one in the InvocationId column. |
+| InvocationId | A unique numerical identifier for the invocation this event occurred in. |
+| Name | The name of the activity or property represented by this event. |
+| Time | A timestamp that identifies when the event occurred. |
+| Tool | The tool executing when this event occurred. The value of this column is either CL or Link. |
+| Type | The type of the current event. This value is either Activity or Property. |
+| Value | If the current event is a property, this column contains its value. This column is left blank when the current event is an activity. |
+
+### Build Explorer view presets
+
+| Preset Name | Preferred View Mode | How to Use |
+|-----------------------|---------------------|------------|
+| Activity Statistics | Graph / Table | Use this preset to view aggregated statistics for all Build Explorer activities. In table mode, tell at a glance if your build is dominated by parsing, code generation, or the linker. The aggregated durations for each activity are sorted in descending order. Drill in by expanding the top node to easily find which invocations take the most time for these top activities. If you like, you can adjust WPA settings to show averages or other types of aggregations. In graph mode, see when each activity is active during your build. |
+| Invocations | Graph | Scroll down through a list of invocations in the graph view sorted by start time. You can use it together with the CPU (Sampled) view to find invocations that align with low CPU utilization zones. Detect parallelism issues. |
+| Invocation Properties | Table | Quickly find key information about a given compiler or linker invocation. Determine its version, working directory, or the full command line used to invoke it. |
+| Timelines | Graph | See a bar graph of how your build was parallelized. Identify parallelism issues and bottlenecks at a glance. Configure WPA to assign different meanings to the bars according to your needs. Choose invocation descriptions as the last grouped column to view a color coded bar graph of all your invocations. It helps you quickly identify time consuming culprits. Then, zoom in and choose the activity name as the last grouped column to see the longest parts. |
+
+## Files
+
+The Files view is used to:
+
+- determine which headers get included the most often, and
+- help you decide what to include in a pre-compiled header (PCH).
+
+### Files view data columns
+
+| Column Name | Description |
+|--------------------------|-------------|
+| ActivityName | The activity in progress when this file event was emitted. Currently, this value is always *Parsing*. |
+| BuildTimelineDescription | * |
+| BuildTimelineId | * |
+| Component | * |
+| Count | * |
+| Depth | The zero-based position in the include tree in which this file is found. Counting starts at the root of the include tree. A value of 0 typically corresponds to a .c/.cpp file. |
+| ExclusiveDuration | * |
+| IncludedBy | The full path of the file that included the current file. |
+| IncludedPath | The full path of the current file. |
+| InclusiveDuration | * |
+| InvocationId | * |
+| StartTime | A timestamp that represents the time at which the current file event was emitted. |
+| Tool | * |
+
+\* The value of this column is the same as in the [Build Explorer](#build-explorer-view-data-columns) view.
+
+### Files view presets
+
+| Preset Name | Preferred View Mode | How to Use |
+|-------------|---------------------|------------|
+| Statistics | Table | See which files had the highest aggregated parsing time by looking at the list in descending order. Use this information to help you restructure your headers or decide what to include in your PCH. |
+
+## Functions
+
+The Functions view is used to identify functions with an excessively long code generation time.
+
+### Functions view data columns
+
+| Column Name | Description |
+|--------------------------|-------------|
+| ActivityName | The activity in progress when this function event was emitted. Currently, this value is always *CodeGeneration*. |
+| BuildTimelineDescription | * |
+| BuildTimelineId | * |
+| Component | * |
+| Count | * |
+| Duration | The duration of the code generation activity for this function. |
+| FunctionName | The name of the function undergoing code generation. |
+| InvocationId | * |
+| StartTime | A timestamp that represents when the current function event was emitted. |
+| Tool | * |
+
+\* The value of this column is the same as in the [Build Explorer](#build-explorer-view-data-columns) view.
+
+### Functions view presets
+
+| Preset Name | Preferred View Mode | How to Use |
+|-------------|---------------------|------------|
+| Statistics | Table | See which functions had the highest aggregated code generation time by looking at the list in descending order. They may hint where your code overuses the **__forceinline** keyword, or that some functions may be too large. |
+| Timelines | Graph | Look at this bar graph to learn the location and duration of functions that take the most time to generate. See if they align with bottlenecks in the Build Explorer view. If they do, take appropriate action to reduce their code generation time and benefit your build times. |
+
+## See also
+
+[Get started with C++ Build Insights](get-started-with-cpp-build-insights.md)\
+[vcperf.exe reference](vcperf-reference.md)\
+[Windows Performance Analyzer basics](wpa-basics.md)\
+[Windows Performance Analyzer](/windows-hardware/test/wpt/windows-performance-analyzer)
+
+::: moniker-end
diff --git a/docs/build/arm-exception-handling.md b/docs/build/arm-exception-handling.md
index 143f87be7c..d33ed3ffda 100644
--- a/docs/build/arm-exception-handling.md
+++ b/docs/build/arm-exception-handling.md
@@ -9,7 +9,7 @@ Windows on ARM uses the same structured exception handling mechanism for asynchr
## ARM Exception Handling
-Windows on ARM uses *unwind codes* to control stack unwinding during [structured exception handling](/windows/win32/debug/structured-exception-handling) (SEH). Unwind codes are a sequence of bytes stored in the .xdata section of the executable image. They describe the operation of function prologue and epilogue code in an abstract way, so that the effects of a function’s prologue can be undone in preparation for unwinding to the caller’s stack frame.
+Windows on ARM uses *unwind codes* to control stack unwinding during [structured exception handling](/windows/win32/debug/structured-exception-handling) (SEH). Unwind codes are a sequence of bytes stored in the .xdata section of the executable image. They describe the operation of function prologue and epilogue code in an abstract way, so that the effects of a function's prologue can be undone in preparation for unwinding to the caller's stack frame.
The ARM EABI (embedded application binary interface) specifies an exception unwinding model that uses unwind codes, but it's not sufficient for SEH unwinding in Windows, which must handle asynchronous cases where the processor is in the middle of the prologue or epilogue of a function. Windows also separates unwinding control into function-level unwinding and language-specific scope unwinding, which is unified in the ARM EABI. For these reasons, Windows on ARM specifies more details for the unwinding data and procedure.
@@ -19,7 +19,7 @@ Executable images for Windows on ARM use the Portable Executable (PE) format. Fo
The exception handling mechanism makes certain assumptions about code that follows the ABI for Windows on ARM:
-- When an exception occurs within the body of a function, it does not matter whether the prologue’s operations are undone, or the epilogue’s operations are performed in a forward manner. Both should produce identical results.
+- When an exception occurs within the body of a function, it does not matter whether the prologue's operations are undone, or the epilogue's operations are performed in a forward manner. Both should produce identical results.
- Prologues and epilogues tend to mirror each other. This can be used to reduce the size of the metadata needed to describe unwinding.
@@ -261,7 +261,7 @@ This shows the range of hexadecimal values for each byte in an unwind code *Code
The unwind codes are designed so that the first byte of the code tells both the total size in bytes of the code and the size of the corresponding opcode in the instruction stream. To compute the size of the prologue or epilogue, walk the unwind codes from the start of the sequence to the end, and use a lookup table or similar method to determine how long the corresponding opcode is.
-Unwind codes 0xFD and 0xFE are equivalent to the regular end code 0xFF, but account for one extra nop opcode in the epilogue case, either 16-bit or 32-bit. For prologues, codes 0xFD, 0xFE and 0xFF are exactly equivalent. This accounts for the common epilogue endings `bx lr` or `b `, which don’t have an equivalent prologue instruction. This increases the chance that unwind sequences can be shared between the prologue and the epilogues.
+Unwind codes 0xFD and 0xFE are equivalent to the regular end code 0xFF, but account for one extra nop opcode in the epilogue case, either 16-bit or 32-bit. For prologues, codes 0xFD, 0xFE and 0xFF are exactly equivalent. This accounts for the common epilogue endings `bx lr` or `b `, which don't have an equivalent prologue instruction. This increases the chance that unwind sequences can be shared between the prologue and the epilogues.
In many cases, it should be possible to use the same set of unwind codes for the prologue and all epilogues. However, to handle the unwinding of partially executed prologues and epilogues, you might have to have multiple unwind code sequences that vary in ordering or behavior. This is why each epilogue has its own index into the unwind array to show where to begin executing.
@@ -284,7 +284,7 @@ For example, consider this prologue and epilogue sequence:
0148: bx lr
```
-Next to each opcode is the appropriate unwind code to describe this operation. The sequence of unwind codes for the prologue is a mirror image of the unwind codes for the epilogue, not counting the final instruction. This case is common, and is the reason the unwind codes for the prologue are always assumed to be stored in reverse order from the prologue’s execution order. This gives us a common set of unwind codes:
+Next to each opcode is the appropriate unwind code to describe this operation. The sequence of unwind codes for the prologue is a mirror image of the unwind codes for the epilogue, not counting the final instruction. This case is common, and is the reason the unwind codes for the prologue are always assumed to be stored in reverse order from the prologue's execution order. This gives us a common set of unwind codes:
```asm
0xc7, 0xdd, 0x04, 0xfd
@@ -322,9 +322,9 @@ Assuming that the function prologue is at the beginning of the function and can'
In the first case, only the prologue must be described. This can be done in compact .pdata form by describing the prologue normally and specifying a *Ret* value of 3 to indicate no epilogue. In the full .xdata form, this can be done by providing the prologue unwind codes at index 0 as usual, and specifying an epilogue count of 0.
-The second case is just like a normal function. If there’s only one epilogue in the fragment, and it is at the end of the fragment, then a compact .pdata record can be used. Otherwise, a full .xdata record must be used. Keep in mind that the offsets specified for the epilogue start are relative to the start of the fragment, not the original start of the function.
+The second case is just like a normal function. If there's only one epilogue in the fragment, and it is at the end of the fragment, then a compact .pdata record can be used. Otherwise, a full .xdata record must be used. Keep in mind that the offsets specified for the epilogue start are relative to the start of the fragment, not the original start of the function.
-The third and fourth cases are variants of the first and second cases, respectively, except they don’t contain a prologue. In these situations, it is assumed that there is code before the start of the epilogue and it is considered part of the body of the function, which would normally be unwound by undoing the effects of the prologue. These cases must therefore be encoded with a pseudo-prologue, which describes how to unwind from within the body, but which is treated as 0-length when determining whether to perform a partial unwind at the start of the fragment. Alternatively, this pseudo-prologue may be described by using the same unwind codes as the epilogue because they presumably perform equivalent operations.
+The third and fourth cases are variants of the first and second cases, respectively, except they don't contain a prologue. In these situations, it is assumed that there is code before the start of the epilogue and it is considered part of the body of the function, which would normally be unwound by undoing the effects of the prologue. These cases must therefore be encoded with a pseudo-prologue, which describes how to unwind from within the body, but which is treated as 0-length when determining whether to perform a partial unwind at the start of the fragment. Alternatively, this pseudo-prologue may be described by using the same unwind codes as the epilogue because they presumably perform equivalent operations.
In the third and fourth cases, the presence of a pseudo-prologue is specified either by setting the *Flag* field of the compact .pdata record to 2, or by setting the *F* flag in the .xdata header to 1. In either case, the check for a partial prologue unwind is ignored, and all non-epilogue unwinds are considered to be full.
@@ -338,7 +338,7 @@ If a fragment has no prologue and no epilogue, it still requires its own .pdata
#### Shrink-wrapping
-A more complex special case of function fragments is *shrink-wrapping*, a technique for deferring register saves from the start of the function to later in the function, to optimize for simple cases that don’t require register saving. This can be described as an outer region that allocates the stack space but saves a minimal set of registers, and an inner region that saves and restores additional registers.
+A more complex special case of function fragments is *shrink-wrapping*, a technique for deferring register saves from the start of the function to later in the function, to optimize for simple cases that don't require register saving. This can be described as an outer region that allocates the stack space but saves a minimal set of registers, and an inner region that saves and restores additional registers.
```asm
ShrinkWrappedFunction
@@ -354,7 +354,7 @@ ShrinkWrappedFunction
pop {r4, pc} ; C:
```
-Shrink-wrapped functions are typically expected to pre-allocate the space for the extra register saves in the regular prologue, and then perform the register saves by using `str` or `stm` instead of `push`. This keeps all stack-pointer manipulation in the function’s original prologue.
+Shrink-wrapped functions are typically expected to pre-allocate the space for the extra register saves in the regular prologue, and then perform the register saves by using `str` or `stm` instead of `push`. This keeps all stack-pointer manipulation in the function's original prologue.
The example shrink-wrapped function must be broken into three regions, which are marked as A, B, and C in the comments. The first A region covers the start of the function through the end of the additional non-volatile saves. A .pdata or .xdata record must be constructed to describe this fragment as having a prologue and no epilogues.
diff --git a/docs/build/arm64-exception-handling.md b/docs/build/arm64-exception-handling.md
index e1702a5f1b..bdbcf90524 100644
--- a/docs/build/arm64-exception-handling.md
+++ b/docs/build/arm64-exception-handling.md
@@ -1,5 +1,6 @@
---
title: "ARM64 exception handling"
+description: Describes the exception handling conventions and data used by windows on ARM64.
ms.date: "11/19/2018"
---
# ARM64 exception handling
@@ -12,15 +13,15 @@ The exception unwinding data conventions, and this description, are intended to:
1. Provide enough description to allow unwinding without code probing in all cases.
- - Analyzing the code requires the code to be paged in. This prevents unwinding in some circumstances where it is useful (tracing, sampling, debugging).
+ - Analyzing the code requires the code to be paged in. This prevents unwinding in some circumstances where it's useful (tracing, sampling, debugging).
- - Analyzing the code is complex; the compiler must be careful to only generate instructions that the unwinder is capable of decoding.
+ - Analyzing the code is complex; the compiler must be careful to only generate instructions that the unwinder can decode.
- - If unwinding cannot be fully described through the use of unwind codes, then in some cases it must fall back to instruction decoding. This increases the overall complexity, and ideally would be avoided.
+ - If unwinding can't be fully described through the use of unwind codes, then in some cases it must fall back to instruction decoding. This increases the overall complexity, and ideally would be avoided.
1. Support unwinding in mid-prolog and mid-epilog.
- - Unwinding is used in Windows for more than exception handling, so it is critical that we be able to perform an accurate unwind even when in the middle of a prolog or epilog code sequence.
+ - Unwinding is used in Windows for more than exception handling. It's critical that code can unwind accurately even when in the middle of a prolog or epilog code sequence.
1. Take up a minimal amount of space.
@@ -30,25 +31,25 @@ The exception unwinding data conventions, and this description, are intended to:
## Assumptions
-These are the assumptions made in the exception handling description:
+These assumptions are made in the exception handling description:
-1. Prologs and epilogs tend to mirror either other. By taking advantage of this common trait, the size of the metadata needed to describe unwinding can be greatly reduced. Within the body of the function, it does not matter whether the prolog's operations are undone, or the epilog's operations are performed in a forward manner. Both should produce identical results.
+1. Prologs and epilogs tend to mirror either other. By taking advantage of this common trait, the size of the metadata needed to describe unwinding can be greatly reduced. Within the body of the function, it doesn't matter whether the prolog's operations are undone, or the epilog's operations are done in a forward manner. Both should produce identical results.
-1. Functions tend on the whole to be relatively small. Several optimizations for space rely on this in order to achieve the most efficient packing of data.
+1. Functions tend on the whole to be relatively small. Several optimizations for space rely on this fact to achieve the most efficient packing of data.
-1. There is no conditional code in epilogs.
+1. There's no conditional code in epilogs.
-1. Dedicated frame pointer register: If the sp is saved in another register (x29) in the prolog, that register remains untouched throughout the function, so that the original sp may be recovered at any time.
+1. Dedicated frame pointer register: If the sp is saved in another register (x29) in the prolog, that register remains untouched throughout the function. It means the original sp may be recovered at any time.
1. Unless the sp is saved in another register, all manipulation of the stack pointer occurs strictly within the prolog and epilog.
-1. The stack frame layout is organized as described in next section.
+1. The stack frame layout is organized as described in the next section.
## ARM64 stack frame layout
![stack frame layout](media/arm64-exception-handling-stack-frame.png "stack frame layout")
-For frame chained functions, the fp and lr pair can be saved at any position in the local variable area depending on optimization considerations. The goal is to maximize the number of locals that can be reached by one single instruction based on frame pointer (x29) or stack pointer (sp). However for `alloca` functions, it must be chained and x29 must point to the bottom of stack. To allow for better register-pair-addressing-mode coverage, nonvolatile register save areas are positioned at the top of the Local area stack. Here are examples that illustrate several of the most efficient prolog sequences. For the sake of clarity and better cache locality, the order of storing callee-saved registers in all canonical prologs is in "growing up" order. `#framesz` below represents the size of entire stack (excluding alloca area). `#localsz` and `#outsz` denote local area size (including the save area for the \ pair) and outgoing parameter size, respectively.
+For frame chained functions, the fp and lr pair can be saved at any position in the local variable area, depending on optimization considerations. The goal is to maximize the number of locals that can be reached by a single instruction based on the frame pointer (x29) or stack pointer (sp). However, for `alloca` functions, it must be chained, and x29 must point to the bottom of stack. To allow for better register-pair-addressing-mode coverage, nonvolatile register save areas are positioned at the top of the Local area stack. Here are examples that illustrate several of the most efficient prolog sequences. For the sake of clarity and better cache locality, the order of storing callee-saved registers in all canonical prologs is in "growing up" order. `#framesz` below represents the size of entire stack (excluding alloca area). `#localsz` and `#outsz` denote local area size (including the save area for the \ pair) and outgoing parameter size, respectively.
1. Chained, #localsz \<= 512
@@ -89,7 +90,7 @@ For frame chained functions, the fp and lr pair can be saved at any position in
sub sp,sp,#(framesz-80) // allocate the remaining local area
```
- All locals are accessed based on SP. \ points to the previous frame. For frame size \<= 512, the "sub sp, ..." can be optimized away if the regs saved area is moved to the bottom of stack. The downside of that is that it is not consistent with other layouts above, and saved regs take part of the range for pair-regs and pre- and post-indexed offset addressing mode.
+ All locals are accessed based on SP. \ points to the previous frame. For frame size \<= 512, the "sub sp, ..." can be optimized away if the regs saved area is moved to the bottom of stack. The downside is that it's not consistent with other layouts above, and saved regs take part of the range for pair-regs and pre- and post-indexed offset addressing mode.
1. Unchained, non-leaf functions (lr is saved in Int saved area)
@@ -121,7 +122,7 @@ For frame chained functions, the fp and lr pair can be saved at any position in
sub sp,sp,#(framesz-16) // allocate the remaining local area
```
- \* The reg save area allocation is not folded into the stp because a pre-indexed reg-lr stp cannot be represented with the unwind codes.
+ \* The reg save area allocation isn't folded into the stp because a pre-indexed reg-lr stp can't be represented with the unwind codes.
All locals are accessed based on SP. \ points to the previous frame.
@@ -134,7 +135,7 @@ For frame chained functions, the fp and lr pair can be saved at any position in
stp d8,d9,[sp,#(framesz-16)] // save FP pair
```
- Comparing to #1 prolog above, the advantage is that all register save instructions are ready to be executed right after the only one stack allocating instruction. Thus, there is no anti-dependence on sp that prevents from instruction level parallelism.
+ Compared to the first prolog example above, the advantage here is that all register save instructions are ready to execute after only one stack allocation instruction. That means there's no anti-dependence on sp that prevents instruction level parallelism.
1. Chained, frame size > 512 (optional for functions without alloca)
@@ -177,9 +178,9 @@ For frame chained functions, the fp and lr pair can be saved at any position in
### .pdata records
-The .pdata records are an ordered array of fixed-length items which describe every stack-manipulating function in a PE binary. Note carefully the phrase "stack-manipulating": leaf functions which do not require any local storage and which do not need to save/restore non-volatile registers do not require a .pdata record; these should be explicitly omitted to save space. A unwind from one of these functions can simply get the return address from LR to move up to the caller.
+The .pdata records are an ordered array of fixed-length items that describe every stack-manipulating function in a PE binary. The phrase "stack-manipulating" is significant: leaf functions that don't require any local storage, and don't need to save/restore non-volatile registers, do not require a .pdata record. These records should be explicitly omitted to save space. An unwind from one of these functions can get the return address directly from LR to move up to the caller.
-Each .pdata record for ARM64 is 8 bytes in length. The general format of the each record places the 32-bit RVA of the function start in the first word, followed by a second with that contains either a pointer to a variable-length .xdata block, or a packed word describing a canonical function unwinding sequence.
+Each .pdata record for ARM64 is 8 bytes in length. The general format of each record places the 32-bit RVA of the function start in the first word, followed by a second word that contains either a pointer to a variable-length .xdata block, or a packed word describing a canonical function unwinding sequence.
![.pdata record layout](media/arm64-exception-handling-pdata-record.png ".pdata record layout")
@@ -187,7 +188,7 @@ The fields are as follows:
- **Function Start RVA** is the 32-bit RVA of the start of the function.
-- **Flag** is a 2-bit field that indicates how to interpret the remaining 30 bits of the second .pdata word. If **Flag** is 0, then the remaining bits form an **Exception Information RVA** (with the low two bits implicitly 0). If **Flag** is non-zero, then the remaining bits form a **Packed Unwind Data** structure.
+- **Flag** is a 2-bit field that indicates how to interpret the remaining 30 bits of the second .pdata word. If **Flag** is 0, then the remaining bits form an **Exception Information RVA** (with the two lowest bits implicitly 0). If **Flag** is non-zero, then the remaining bits form a **Packed Unwind Data** structure.
- **Exception Information RVA** is the address of the variable-length exception information structure, stored in the .xdata section. This data must be 4-byte aligned.
@@ -201,39 +202,39 @@ When the packed unwind format is insufficient to describe the unwinding of a fun
This data is broken into four sections:
-1. A 1 or 2-word header describing the overall size of the structure and providing key function data. The second word is only present if both the **Epilog Count** and **Code Words** fields are set to 0. These are the bit fields in the header:
+1. A 1 or 2-word header describing the overall size of the structure and providing key function data. The second word is only present if both the **Epilog Count** and **Code Words** fields are set to 0. The header has these bit fields:
- a. **Function Length** is an 18-bit field indicating the total length of the function in bytes, divided by 4. If a function is larger than 1M, then multiple pdata and xdata records must be used to describe the function. See the [Large functions](#large-functions) section for more details.
+ a. **Function Length** is an 18-bit field. It indicates the total length of the function in bytes, divided by 4. If a function is larger than 1M, then multiple .pdata and .xdata records must be used to describe the function. For more information, see the [Large functions](#large-functions) section.
- b. **Vers** is a 2-bit field describing the version of the remaining xdata. As of this writing, only version 0 is defined, and thus values of 1-3 are not permitted.
+ b. **Vers** is a 2-bit field. It describes the version of the remaining .xdata. Currently, only version 0 is defined, so values of 1-3 aren't permitted.
- c. **X** is a 1-bit field indicating the presence (1) or absence (0) of exception data.
+ c. **X** is a 1-bit field. It indicates the presence (1) or absence (0) of exception data.
- d. **E** is one bit field indicates that information describing a single epilog is packed into the header (1) rather than requiring additional scope words later (0).
+ d. **E** is a 1-bit field. It indicates that information describing a single epilog is packed into the header (1) rather than requiring additional scope words later (0).
e. **Epilog Count** is a 5-bit field that has two meanings, depending on the state of **E** bit:
- 1. If **E** is set to 0: it specifies the count of the total number of epilog scopes described in section 2. If more than 31 scopes exist in the function, then the **Code Words** field must be set to 0 to indicate that an extension word is required.
+ 1. If **E** is 0, it specifies the count of the total number of epilog scopes described in section 2. If more than 31 scopes exist in the function, then the **Code Words** field must be set to 0 to indicate that an extension word is required.
- 2. If **E** is set to 1, then this field specifies the index of the first unwind code that describes the one and only epilog.
+ 2. If **E** is 1, then this field specifies the index of the first unwind code that describes the one and only epilog.
- f. **Code Words** is a 5-bit field that specifies the number of 32-bit words needed to contain all of the unwind codes in section 3. If more than 31 words are required (i.e., more than 124 unwind code bytes), then this field must be set to 0 to indicate that an extension word is required.
+ f. **Code Words** is a 5-bit field that specifies the number of 32-bit words needed to contain all of the unwind codes in section 3. If more than 31 words are required (that is, if there are more than 124 unwind code bytes), then this field must be 0 to indicate that an extension word is required.
- g. **Extended Epilog Count** and **Extended Code Words** are 16-bit and 8-bit fields, respectively, that provide more space for encoding an unusually large number of epilogs or an unusually large number of unwind code words. The extension word containing these fields is only present if both the **Epilog Count** and **Code Words** fields in the first header word are set to 0.
+ g. **Extended Epilog Count** and **Extended Code Words** are 16-bit and 8-bit fields, respectively. They provide more space for encoding an unusually large number of epilogs, or an unusually large number of unwind code words. The extension word that contains these fields is only present if both the **Epilog Count** and **Code Words** fields in the first header word are 0.
-1. After the header and optional extended header described above, if **Epilog Count** is not zero, is a list of information about epilog scopes, packed one to a word, and stored in order of increasing starting offset. Each scope contains the following bits:
+1. If **Epilog Count** isn't zero, a list of information about epilog scopes, packed one to a word, comes after the header and optional extended header. They're stored in order of increasing starting offset. Each scope contains the following bits:
- a. **Epilog Start Offset** is an 18-bit field describing the offset in bytes, divided by 4, of the epilog relative to the start of the function
+ a. **Epilog Start Offset** is an 18-bit field that has the offset in bytes, divided by 4, of the epilog relative to the start of the function.
b. **Res** is a 4-bit field reserved for future expansion. Its value must be 0.
- c. **Epilog Start Index** is a 10-bit (2 more bits than **Extended Code Words**) field indicating the byte index of the first unwind code that describes this epilog.
+ c. **Epilog Start Index** is a 10-bit field (2 more bits than **Extended Code Words**). It indicates the byte index of the first unwind code that describes this epilog.
-1. After the list of epilog scopes comes an array of bytes that contain unwind codes, described in detail in a later section. This array is padded at the end to the nearest full word boundary. Unwind codes are written to this array, starting with the one closest to the body of the function, moving towards the edges of the function. The bytes for each unwind code are stored in big-endian order so they can be fetched directly, starting with the most significant byte first, which identifies the operation and the length of the rest of the code.
+1. After the list of epilog scopes comes an array of bytes that contain unwind codes, described in detail in a later section. This array is padded at the end to the nearest full word boundary. Unwind codes are written to this array. They start with the one closest to the body of the function, and move towards the edges of the function. The bytes for each unwind code are stored in big-endian order so they can be fetched directly, starting with the most significant byte first, which identifies the operation and the length of the rest of the code.
-1. Finally, after the unwind code bytes, if the **X** bit in the header was set to 1, comes the exception handler information. This consists of a single **Exception Handler RVA** providing the address of the exception handler itself, followed immediately by a variable-length amount of data required by the exception handler.
+1. Finally, after the unwind code bytes, if the **X** bit in the header was set to 1, comes the exception handler information. It consists of a single **Exception Handler RVA** that provides the address of the exception handler itself. It's followed immediately by a variable-length amount of data required by the exception handler.
-The .xdata record above is designed such that it is possible to fetch the first 8 bytes and from that compute the full size of the record (minus the length of the variable-sized exception data that follows). The following code snippet computes the record size:
+The .xdata record is designed so it's possible to fetch the first 8 bytes, and use them to compute the full size of the record, minus the length of the variable-sized exception data that follows. The following code snippet computes the record size:
```cpp
ULONG ComputeXdataSize(PULONG *Xdata)
@@ -261,70 +262,71 @@ ULONG ComputeXdataSize(PULONG *Xdata)
}
```
-It should be noted that although the prolog and each epilog has its own index into the unwind codes, the table is shared between them, and it is entirely possible (and not altogether uncommon) that they can all share the same codes (see Example 2 in the Examples section below). Compiler writers should optimize for this case, in particular because the largest index that can be specified is 255, thus limiting the total number of unwind codes for a particular function.
+Although the prolog and each epilog has its own index into the unwind codes, the table is shared between them. It's entirely possible (and not altogether uncommon) that they can all share the same codes. (For an example, see Example 2 in the [Examples](#examples) section.) Compiler writers should optimize for this case, in particular, because the largest index that can be specified is 255, which limits the total number of unwind codes for a particular function.
### Unwind codes
-The array of unwind codes is pool of sequences that describe exactly how to undo the effects of the prolog, in the order in which the operations need to be undone. The unwind codes can be thought of as a mini instruction set, encoded as a string of bytes. When execution is complete, the return address to the calling function is in the lr register, and all non-volatile registers are restored to their values at the time the function was called.
+The array of unwind codes is pool of sequences that describe exactly how to undo the effects of the prolog, stored in the same order the operations need to be undone. The unwind codes can be thought of as a small instruction set, encoded as a string of bytes. When execution is complete, the return address to the calling function is in the lr register. And, all non-volatile registers are restored to their values at the time the function was called.
-If exceptions were guaranteed to only ever occur within a function body (and never with a prolog or any epilog), then only a single sequence would be necessary. However, Windows unwinding model requires that we be able to unwind from within a partially executed prolog or epilog. In order to accommodate this requirement, the unwind codes have been carefully designed such that they unambiguously map 1:1 to each relevant opcode in the prolog and epilog. This has several implications:
+If exceptions were guaranteed to only ever occur within a function body, and never within a prolog or any epilog, then only a single sequence would be necessary. However, the Windows unwinding model requires that code can unwind from within a partially executed prolog or epilog. To meet this requirement, the unwind codes have been carefully designed so they unambiguously map 1:1 to each relevant opcode in the prolog and epilog. This design has several implications:
-1. By counting the number of unwind codes, it is possible to compute the length of the prolog and epilog.
+1. By counting the number of unwind codes, it's possible to compute the length of the prolog and epilog.
-1. By counting the number of instructions past the start of an epilog scope, it is possible to skip the equivalent number of unwind codes, and execute the rest of a sequence to complete the partially-executed unwind that the epilog was performing.
+1. By counting the number of instructions past the start of an epilog scope, it's possible to skip the equivalent number of unwind codes. Then we can execute the rest of a sequence to complete the partially executed unwind done by the epilog.
-1. By counting the number of instructions before the end of the prolog, it is possible to skip the equivalent number of unwind codes, and execute the rest of the sequence to undo only those parts of the prolog that have completed execution.
+1. By counting the number of instructions before the end of the prolog, it's possible to skip the equivalent number of unwind codes. Then we can execute the rest of the sequence to undo only those parts of the prolog that have completed execution.
-The unwind codes are encoded according to the table below. All unwind codes are a single/double byte, except the one that allocates a huge stack. Totally there are 21 unwind code. Each unwind code maps exactly one instruction in the prolog/epilog in order to allow for unwinding of partially executed prologs and epilogs.
+The unwind codes are encoded according to the table below. All unwind codes are a single/double byte, except the one that allocates a huge stack. Totally there are 21 unwind code. Each unwind code maps exactly one instruction in the prolog/epilog, to allow for unwinding of partially executed prologs and epilogs.
|Unwind code|Bits and interpretation|
|-|-|
|`alloc_s`|000xxxxx: allocate small stack with size \< 512 (2^5 * 16).|
-|`save_r19r20_x`| 001zzzzz: save \ pair at [sp-#Z*8]!, pre-indexed offset >= -248 |
-|`save_fplr`| 01zzzzzz: save \ pair at [sp+#Z*8], offset \<= 504. |
-|`save_fplr_x`| 10zzzzzz: save \ pair at [sp-(#Z+1)*8]!, pre-indexed offset >= -512 |
+|`save_r19r20_x`| 001zzzzz: save \ pair at `[sp-#Z*8]!`, pre-indexed offset >= -248 |
+|`save_fplr`| 01zzzzzz: save \ pair at `[sp+#Z*8]`, offset \<= 504. |
+|`save_fplr_x`| 10zzzzzz: save \ pair at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 |
|`alloc_m`| 11000xxx'xxxxxxxx: allocate large stack with size \< 16k (2^11 * 16). |
-|`save_regp`| 110010xx'xxzzzzzz: save x(19+#X) pair at [sp+#Z*8], offset \<= 504 |
-|`save_regp_x`| 110011xx'xxzzzzzz: save pair x(19+#X) at [sp-(#Z+1)*8]!, pre-indexed offset >= -512 |
-|`save_reg`| 110100xx'xxzzzzzz: save reg x(19+#X) at [sp+#Z*8], offset \<= 504 |
-|`save_reg_x`| 1101010x'xxxzzzzz: save reg x(19+#X) at [sp-(#Z+1)*8]!, pre-indexed offset >= -256 |
-|`save_lrpair`| 1101011x'xxzzzzzz: save pair \ at [sp+#Z*8], offset \<= 504 |
-|`save_fregp`| 1101100x'xxzzzzzz: save pair d(8+#X) at [sp+#Z*8], offset \<= 504 |
-|`save_fregp_x`| 1101101x'xxzzzzzz: save pair d(8+#X), at [sp-(#Z+1)*8]!, pre-indexed offset >= -512 |
-|`save_freg`| 1101110x'xxzzzzzz: save reg d(8+#X) at [sp+#Z*8], offset \<= 504 |
-|`save_freg_x`| 11011110'xxxzzzzz: save reg d(8+#X) at [sp-(#Z+1)*8]!, pre-indexed offset >= -256 |
+|`save_regp`| 110010xx'xxzzzzzz: save x(19+#X) pair at `[sp+#Z*8]`, offset \<= 504 |
+|`save_regp_x`| 110011xx'xxzzzzzz: save pair x(19+#X) at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 |
+|`save_reg`| 110100xx'xxzzzzzz: save reg x(19+#X) at `[sp+#Z*8]`, offset \<= 504 |
+|`save_reg_x`| 1101010x'xxxzzzzz: save reg x(19+#X) at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -256 |
+|`save_lrpair`| 1101011x'xxzzzzzz: save pair \ at `[sp+#Z*8]`, offset \<= 504 |
+|`save_fregp`| 1101100x'xxzzzzzz: save pair d(8+#X) at `[sp+#Z*8]`, offset \<= 504 |
+|`save_fregp_x`| 1101101x'xxzzzzzz: save pair d(8+#X), at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -512 |
+|`save_freg`| 1101110x'xxzzzzzz: save reg d(8+#X) at `[sp+#Z*8]`, offset \<= 504 |
+|`save_freg_x`| 11011110'xxxzzzzz: save reg d(8+#X) at `[sp-(#Z+1)*8]!`, pre-indexed offset >= -256 |
|`alloc_l`| 11100000'xxxxxxxx'xxxxxxxx'xxxxxxxx: allocate large stack with size \< 256M (2^24 *16) |
-|`set_fp`| 11100001: set up x29: with: mov x29,sp |
-|`add_fp`| 11100010'xxxxxxxx: set up x29 with: add x29,sp,#x*8 |
+|`set_fp`| 11100001: set up x29: with: `mov x29,sp` |
+|`add_fp`| 11100010'xxxxxxxx: set up x29 with: `add x29,sp,#x*8` |
|`nop`| 11100011: no unwind operation is required. |
|`end`| 11100100: end of unwind code. Implies ret in epilog. |
|`end_c`| 11100101: end of unwind code in current chained scope. |
|`save_next`| 11100110: save next non-volatile Int or FP register pair. |
-|`arithmetic(add)`| 11100111'000zxxxx: add cookie reg(z) to lr (0=x28, 1=sp); add lr, lr, reg(z) |
-|`arithmetic(sub)`| 11100111'001zxxxx: sub cookie reg(z) from lr (0=x28, 1=sp); sub lr, lr, reg(z) |
-|`arithmetic(eor)`| 11100111'010zxxxx: eor lr with cookie reg(z) (0=x28, 1=sp); eor lr, lr, reg(z) |
-|`arithmetic(rol)`| 11100111'0110xxxx: simulated rol of lr with cookie reg (x28); xip0 = neg x28; ror lr, xip0 |
-|`arithmetic(ror)`| 11100111'100zxxxx: ror lr with cookie reg(z) (0=x28, 1=sp); ror lr, lr, reg(z) |
+|`arithmetic(add)`| 11100111'000zxxxx: add cookie reg(z) to lr (0=x28, 1=sp); `add lr, lr, reg(z)` |
+|`arithmetic(sub)`| 11100111'001zxxxx: sub cookie reg(z) from lr (0=x28, 1=sp); `sub lr, lr, reg(z)` |
+|`arithmetic(eor)`| 11100111'010zxxxx: eor lr with cookie reg(z) (0=x28, 1=sp); `eor lr, lr, reg(z)` |
+|`arithmetic(rol)`| 11100111'0110xxxx: simulated rol of lr with cookie reg (x28); xip0 = neg x28; `ror lr, xip0` |
+|`arithmetic(ror)`| 11100111'100zxxxx: ror lr with cookie reg(z) (0=x28, 1=sp); `ror lr, lr, reg(z)` |
| | 11100111: xxxz----: ---- reserved |
| | 11101xxx: reserved for custom stack cases below only generated for asm routines |
-| | 11101001: Custom stack for MSFT_OP_TRAP_FRAME |
-| | 11101010: Custom stack for MSFT_OP_MACHINE_FRAME |
-| | 11101011: Custom stack for MSFT_OP_CONTEXT |
+| | 11101000: Custom stack for MSFT_OP_TRAP_FRAME |
+| | 11101001: Custom stack for MSFT_OP_MACHINE_FRAME |
+| | 11101010: Custom stack for MSFT_OP_CONTEXT |
+| | 11101100: Custom stack for MSFT_OP_CLEAR_UNWOUND_TO_CALL |
| | 1111xxxx: reserved |
-In instructions with large values covering multiple bytes, the most significant bits are stored first. The unwind codes above are designed such that by simply looking up the first byte of the code, it is possible to know the total size in bytes of the unwind code. Given that each unwind code is exactly mapped to an instruction in prolog/epilog, to compute the size of the prolog or epilog, all that needs to be done is to walk from the start of the sequence to the end, using a lookup table or similar device to determine how long the corresponding opcode is.
+In instructions with large values covering multiple bytes, the most significant bits are stored first. This design makes it possible to find the total size in bytes of the unwind code by looking up only the first byte of the code. Since each unwind code is exactly mapped to an instruction in a prolog or epilog, you can compute the size of the prolog or epilog. You can walk from the start of the sequence to the end, and use a lookup table or similar device to determine how long the corresponding opcode is.
-Note that post-indexed offset addressing is not allowed in 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).
+Post-indexed offset addressing isn't allowed in a prolog. All offset ranges (#Z) match the encoding of STP/STR addressing except `save_r19r20_x`, in which 248 is sufficient for all save areas (10 Int registers + 8 FP registers + 8 input registers).
-`save_next` must follow a save for Int or FP volatile register pair: `save_regp`, `save_regp_x`, `save_fregp`, `save_fregp_x`, `save_r19r20_x`, or another `save_next`. It saves next register pair at the next 16-byte slot in "growing up" order. `save-next` following a `save_next` that denotes the last Int register pair refers to first FP register pair.
+`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.
-Since the size of regular return and jump instructions are the same, there is no need of a separated `end` unwind code for tail-call scenarios.
+Since the size of regular return and jump instructions are the same, there's no need of a separated `end` unwind code for tail-call scenarios.
-`end_c` is designed to handle noncontiguous function fragments for optimization purposes. A `end_c` which indicates the end of unwind codes in the current scope must be followed by another series of unwind code ended with a real `end`. The unwind codes between `end_c` and `end` represent the prolog operations in parent region ("phantom" prolog). More details and examples are described in section below.
+`end_c` is designed to handle noncontiguous function fragments for optimization purposes. An `end_c` that indicates the end of unwind codes in the current scope must be followed by another series of unwind code ended with a real `end`. The unwind codes between `end_c` and `end` represent the prolog operations in the parent region ("phantom" prolog). More details and examples are described in the section below.
### Packed unwind data
-For functions whose prologs and epilogs follow the canonical form described below, packed unwind data can be used, eliminating the need for an .xdata record entirely and significantly reducing the cost of providing unwind data. The canonical prologs and epilogs are designed to meet the common requirements of a simple function that does not require an exception handler, and which performs its setup and teardown operations in a standard order.
+For functions whose prologs and epilogs follow the canonical form described below, packed unwind data can be used. It eliminates the need for an .xdata record entirely, and significantly reduces the cost of providing unwind data. The canonical prologs and epilogs are designed to meet the common requirements of a simple function: One that doesn't require an exception handler, and which does its setup and teardown operations in a standard order.
The format of a .pdata record with packed unwind data looks like this:
@@ -335,11 +337,11 @@ The fields are as follows:
- **Function Start RVA** is the 32-bit RVA of the start of the function.
- **Flag** is a 2-bit field as described above, with the following meanings:
- 00 = packed unwind data not used; remaining bits point to an .xdata record
- - 01 = packed unwind data used as described below with single prolog and epilog at the beginning and end of the scope
- - 10 = packed unwind data used as described below for code without any prolog and epilog; this is useful for describing separated function segments.
- - 11 = reserved;
+ - 01 = packed unwind data used with a single prolog and epilog at the beginning and end of the scope
+ - 10 = packed unwind data used for code without any prolog and epilog. Useful for describing separated function segments
+ - 11 = reserved.
- **Function Length** is an 11-bit field providing the length of the entire function in bytes, divided by 4. If the function is larger than 8k, a full .xdata record must be used instead.
-- **Frame Size** is a 9-bit field indicating the number of bytes of stack that is allocated for this function, divided by 16. Functions that allocate greater than (8k-16) bytes of stack must use a full .xdata record. This includes local variable area, outgoing parameter area, callee-saved Int and FP area, and home parameter area, but excluding dynamic allocation area.
+- **Frame Size** is a 9-bit field indicating the number of bytes of stack that is allocated for this function, divided by 16. Functions that allocate greater than (8k-16) bytes of stack must use a full .xdata record. It includes the local variable area, outgoing parameter area, callee-saved Int and FP area, and home parameter area, but excludes the dynamic allocation area.
- **CR** is a 2-bit flag indicating whether the function includes extra instructions to set up a frame chain and return link:
- 00 = unchained function, \ pair is not saved in stack.
- 01 = unchained function, \ is saved in stack
@@ -347,11 +349,11 @@ The fields are as follows:
- 11 = chained function, a store/load pair instruction is used in prolog/epilog \
- **H** is a 1-bit flag indicating whether the function homes the integer parameter registers (x0-x7) by storing them at the very start of the function. (0=does not home registers, 1=homes registers).
- **RegI** is a 4-bit field indicating the number of non-volatile INT registers (x19-x28) saved in the canonical stack location.
-- **RegF** is a 3-bit field indicating the number of non-volatile FP registers (d8-d15) saved in the canonical stack location. (RegF=0: no FP register is saved; RegF>0: RegF+1 FP registers are saved). Packed unwind data cannot be used for function that save only one FP register.
+- **RegF** is a 3-bit field indicating the number of non-volatile FP registers (d8-d15) saved in the canonical stack location. (RegF=0: no FP register is saved; RegF>0: RegF+1 FP registers are saved). Packed unwind data can't be used for function that save only one FP register.
-Canonical prologs that fall into categories 1, 2 (without outgoing parameter area), 3 and 4 in section above can be represented by packed unwind format. The epilogs for canonical functions follow a very similar form, except **H** has no effect, the `set_fp` instruction is omitted, and the order of steps as well as instructions in each step are reversed in epilog. The algorithm for packed xdata follows these steps, detailed in the following table:
+Canonical prologs that fall into categories 1, 2 (without outgoing parameter area), 3 and 4 in section above can be represented by packed unwind format. The epilogs for canonical functions follow a similar form, except **H** has no effect, the `set_fp` instruction is omitted, and the order of steps and the instructions in each step are reversed in the epilog. The algorithm for packed .xdata follows these steps, detailed in the following table:
-Step 0: Perform the pre-computation of the size of each area.
+Step 0: Pre-compute of the size of each area.
Step 1: Save Int callee-saved registers.
@@ -380,13 +382,13 @@ Step #|Flag values|# of instructions|Opcode|Unwind Code
\*\* If **RegI** == **CR** == 0, and **RegF** != 0, the first stp for the floating-point does the predecrement.
-\*\*\* No instruction corresponding to `mov x29,sp` is present in the epilog. Packed unwind data cannot be used if a function requires restoration of sp from x29.
+\*\*\* No instruction corresponding to `mov x29,sp` is present in the epilog. Packed unwind data can't be used if a function requires restoration of sp from x29.
### Unwinding partial prologs and epilogs
The most common unwinding situation is one where the exception or call occurred in the body of the function, away from the prolog and all epilogs. In this situation, unwinding is straightforward: the unwinder simply begins executing the codes in the unwind array beginning at index 0 and continuing until an end opcode is detected.
-It is more difficult to correctly unwind in the case where an exception or interrupt occurs while executing a prolog or epilog. In these situations, the stack frame is only partially constructed, and the trick is to determine exactly what has been done in order to correctly undo it.
+It's more difficult to correctly unwind in the case where an exception or interrupt occurs while executing a prolog or epilog. In these situations, the stack frame is only partially constructed. The problem is to determine exactly what's been done, to correctly undo it.
For example, take this prolog and epilog sequence:
@@ -403,37 +405,37 @@ For example, take this prolog and epilog sequence:
0110: ret lr // end
```
-Next to each opcode is the appropriate unwind code describing this operation. The first thing to note is that the series of unwind codes for the prolog is an exact mirror image of the unwind codes for the epilog (not counting the final instruction of the epilog). This is a common situation, and for this reason the unwind codes for the prolog are always assumed to be stored in reverse order from the prolog's execution order.
+Next to each opcode is the appropriate unwind code describing this operation. You can see how the series of unwind codes for the prolog is an exact mirror image of the unwind codes for the epilog (not counting the final instruction of the epilog). It's a common situation, and it's why we always assume the unwind codes for the prolog are stored in reverse order from the prolog's execution order.
-Thus, for both the prolog and epilog, we are left with a common set of unwind codes:
+So, for both the prolog and epilog, we're left with a common set of unwind codes:
`set_fp`, `save_regp 0,240`, `save_fregp,0,224`, `save_fplr_x_256`, `end`
-Starting with the epilog case (more straightforward as it is in normal order), at offset 0 within the epilog (which starts at offset 0x100 in the function), we would expect to execute the full unwind sequence, as no cleanup has yet been done. If we find ourselves one instruction in (at offset 2 in the epilog), we can successfully unwind by skipping the first unwind code. Generalizing this situation, assuming a 1:1 mapping between opcodes and unwind codes, we can state that if we are unwinding from instruction n in the epilog, we should skip the first n unwind codes and begin executing from there.
+The epilog case is straightforward, since it's in normal order. Starting at offset 0 within the epilog (which starts at offset 0x100 in the function), we'd expect to execute the full unwind sequence, as no cleanup has yet been done. If we find ourselves one instruction in (at offset 2 in the epilog), we can successfully unwind by skipping the first unwind code. We can generalize this situation, and assume a 1:1 mapping between opcodes and unwind codes. Then, to start unwinding from instruction *n* in the epilog, we should skip the first *n* unwind codes, and begin executing from there.
-It turns out that a similar logic works for the prolog, except in reverse. If we are unwinding from offset 0 in the prolog, we would want to execute nothing. If we unwound from offset 2, which is one instruction in, then we would want to start executing the unwind sequence one unwind code from the end (remember, the codes are stored in reverse order). And here too we can generalize that if we are unwinding from instruction n in the prolog, we should start executing n unwind codes from the end of the list of codes.
+It turns out that a similar logic works for the prolog, except in reverse. If we start unwinding from offset 0 in the prolog, we want to execute nothing. If we unwind from offset 2, which is one instruction in, then we want to start executing the unwind sequence one unwind code from the end. (Remember, the codes are stored in reverse order.) And here too, we can generalize: if we start unwinding from instruction n in the prolog, we should start executing n unwind codes from the end of the list of codes.
-Now, it is not always the case that the prolog and epilog codes match exactly. For this reason, the unwind array may need to contain several sequences of codes. To determine the offset of where to begin processing codes, use the following logic:
+It's not always the case that the prolog and epilog codes match exactly. That's why the unwind array may need to contain several sequences of codes. To determine the offset of where to begin processing codes, use the following logic:
-1. If unwinding from within the body of the function, simply begin executing unwind codes at index 0 and continue until hitting an "end" opcode.
+1. If unwinding from within the body of the function, begin executing unwind codes at index 0 and continue until hitting an "end" opcode.
1. If unwinding from within an epilog, use the epilog-specific starting index provided with the epilog scope as a starting point. Compute how many bytes the PC in question is from the start of the epilog. Then advance forward through the unwind codes, skipping unwind codes until all of the already-executed instructions are accounted for. Then execute starting at that point.
1. If unwinding from within the prolog, use index 0 as your starting point. Compute the length of the prolog code from the sequence, and then compute how many bytes the PC in question is from the end of the prolog. Then advance forward through the unwind codes, skipping unwind codes until all of the not-yet-executed instructions are accounted for. Then execute starting at that point.
-As a result of these rules, the unwind codes for the prolog must always be the first in the array, and they are also the codes used to unwind in the general case of unwinding from within the body. Any epilog-specific code sequences should follow immediately after.
+These rules mean the unwind codes for the prolog must always be the first in the array. And, they're also the codes used to unwind in the general case of unwinding from within the body. Any epilog-specific code sequences should follow immediately after.
### Function fragments
-For code optimization purposes and other reasons, it may be preferable to split a function into separated fragments (also called regions). When this is done, each resulting function fragment requires its own separate .pdata (and possibly .xdata) record.
+For code optimization purposes and other reasons, it may be preferable to split a function into separated fragments (also called regions). When split, each resulting function fragment requires its own separate .pdata (and possibly .xdata) record.
-For separated secondary fragment that has its own prolog, it is expected that no stack adjustment is done in its prolog. All stack space required by the secondary regions must be pre-allocated by its parent region (or called host region). This keeps stack pointer manipulation strictly in the function's original prolog.
+For each separated secondary fragment that has its own prolog, it's expected that no stack adjustment is done in its prolog. All stack space required by a secondary region must be pre-allocated by its parent region (or called host region). This keeps stack pointer manipulation strictly in the function's original prolog.
A typical case of function fragments is "code separation" with that compiler may move a region of code out of its host function. There are three unusual cases that could be resulted by code separation.
-#### Example:
+#### Example
-- (region 1 : begin)
+- (region 1: begin)
```asm
stp x29,lr,[sp,#-256]! // save_fplr_x 256 (pre-indexed store)
@@ -442,45 +444,47 @@ A typical case of function fragments is "code separation" with that compiler may
...
```
-- (region 1 : end)
-- (region 3 : begin)
+- (region 1: end)
+
+- (region 3: begin)
```asm
...
```
-- (region 3 : end)
+- (region 3: end)
+
- (region 2: begin)
```asm
- ...
+ ...
mov sp,x29 // set_fp
ldp x19,x20,[sp,#240] // save_regp 0, 240
ldp x29,lr,[sp],#256 // save_fplr_x 256 (post-indexed load)
ret lr // end
```
-- (region 2 : end)
+- (region 2: end)
1. Prolog only (region 1: all epilogs are in separated regions):
- Only the prolog needs to be described. This cannot be represented by compact .pdata format. In the full .xdata case, this can be represented by setting Epilog Count = 0. See region 1 in the example above.
+ Only the prolog must be described. This can't be represented in the compact .pdata format. In the full .xdata case, it can be represented by setting Epilog Count = 0. See region 1 in the example above.
Unwind codes: `set_fp`, `save_regp 0,240`, `save_fplr_x_256`, `end`.
1. Epilogs only (region 2: prolog is in host region)
- It's assumed that by the time control jumping into this region, all prolog codes have been executed. Partial unwind can happen in epilogs the same way as in a normal function. This type of region cannot be represented by compact .pdata. In full xdata record, it can be encoded with a "phantom" prolog, bracketed by an `end_c` and `end` unwind code pair. The leading `end_c` indicates the size of prolog is zero. Epilog start index of the single epilog points to `set_fp`.
+ It's assumed that by the time control jumping into this region, all prolog codes have been executed. Partial unwind can happen in epilogs the same way as in a normal function. This type of region can't be represented by compact .pdata. In full .xdata record, it can be encoded with a "phantom" prolog, bracketed by an `end_c` and `end` unwind code pair. The leading `end_c` indicates the size of prolog is zero. Epilog start index of the single epilog points to `set_fp`.
Unwind code for region 2: `end_c`, `set_fp`, `save_regp 0,240`, `save_fplr_x_256`, `end`.
1. No prologs or epilogs (region 3: prologs and all epilogs are in other fragments):
- Compact .pdata format can be applied via setting Flag = 10. With full .xdata record, Epilog Count = 1. Unwind code is the same as those for region 2 above, but Epilog Start Index also points to `end_c`. Partial unwind will never happen in this region of code.
+ Compact .pdata format can be applied via setting Flag = 10. With full .xdata record, Epilog Count = 1. Unwind code is the same as the code for region 2 above, but Epilog Start Index also points to `end_c`. Partial unwind will never happen in this region of code.
-Another more complicated case of function fragments is "shrink wrapping" with that compiler may choose to delay saving some callee-saved registers until outside of the function entry prolog.
+Another more complicated case of function fragments is "shrink wrapping." The compiler may choose to delay saving some callee-saved registers until outside of the function entry prolog.
-- (region 1 : begin)
+- (region 1: begin)
```asm
stp x29,lr,[sp,#-256]! // save_fplr_x 256 (pre-indexed store)
@@ -489,7 +493,7 @@ Another more complicated case of function fragments is "shrink wrapping" with th
...
```
-- (region 2 : begin)
+- (region 2: begin)
```asm
stp x21,x22,[sp,#224] // save_regp 2, 224
@@ -497,7 +501,7 @@ Another more complicated case of function fragments is "shrink wrapping" with th
ldp x21,x22,[sp,#224] // save_regp 2, 224
```
-- (region 2 : end)
+- (region 2: end)
```asm
...
@@ -507,9 +511,9 @@ Another more complicated case of function fragments is "shrink wrapping" with th
ret lr // end
```
-- (region 1 : end)
+- (region 1: end)
-In the prolog of region 1, stack space is pre-allocated. Note that region 2 will have the same unwind code even it's moved out of its host function.
+In the prolog of region 1, stack space is pre-allocated. You can see that region 2 will have the same unwind code even it's moved out of its host function.
Region 1: `set_fp`, `save_regp 0,240`, `save_fplr_x_256`, `end` with Epilog Start Index points to `set_fp` as usual.
@@ -517,7 +521,7 @@ Region 2: `save_regp 2, 224`, `end_c`, `set_fp`, `save_regp 0,240`, `save_fplr_x
### Large functions
-Fragments can be leveraged to describe functions larger than the 1M limit imposed by the bit fields in the .xdata header. To describe a very large function like this, it simply needs to be broken into fragments smaller than 1M. Each fragment should be adjusted so that it does not split an epilog into multiple pieces.
+Fragments can be used to describe functions larger than the 1M limit imposed by the bit fields in the .xdata header. To describe a very large function like this, it needs to be broken into fragments smaller than 1M. Each fragment should be adjusted so that it doesn't split an epilog into multiple pieces.
Only the first fragment of the function will contain a prolog; all other fragments are marked as having no prolog. Depending on the number of epilogs present, each fragment may contain zero or more epilogs. Keep in mind that each epilog scope in a fragment specifies its starting offset relative to the start of the fragment, not the start of the function.
@@ -575,7 +579,7 @@ If a fragment has no prolog and no epilog, it still requires its own .pdata (and
;end
```
-Note that EpilogStart Index [0] points to the same sequence of Prolog unwind code.
+Epilog Start Index [0] points to the same sequence of Prolog unwind code.
### Example 3: Variadic unchained Function
@@ -616,7 +620,7 @@ Note that EpilogStart Index [0] points to the same sequence of Prolog unwind cod
;end
```
-Note: EpilogStart Index [4] points to the middle of Prolog unwind code (partially reuse unwind array).
+Epilog Start Index [4] points to the middle of Prolog unwind code (partially reuse unwind array).
## See also
diff --git a/docs/build/arm64-windows-abi-conventions.md b/docs/build/arm64-windows-abi-conventions.md
index 7a61c965cc..e94a4bdb12 100644
--- a/docs/build/arm64-windows-abi-conventions.md
+++ b/docs/build/arm64-windows-abi-conventions.md
@@ -4,7 +4,7 @@ ms.date: "03/27/2019"
---
# Overview of ARM64 ABI conventions
-The basic application binary interface (ABI) for Windows when compiled and run on ARM processors in 64-bit mode (ARMv8 or later architectures), for the most part, follows ARM’s standard AArch64 EABI. This article highlights some of the key assumptions and changes from what is documented in the EABI. For information about the 32-bit ABI, see [Overview of ARM ABI conventions](overview-of-arm-abi-conventions.md). For more information about the standard ARM EABI, see [Application Binary Interface (ABI) for the ARM Architecture](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html) (external link).
+The basic application binary interface (ABI) for Windows when compiled and run on ARM processors in 64-bit mode (ARMv8 or later architectures), for the most part, follows ARM's standard AArch64 EABI. This article highlights some of the key assumptions and changes from what is documented in the EABI. For information about the 32-bit ABI, see [Overview of ARM ABI conventions](overview-of-arm-abi-conventions.md). For more information about the standard ARM EABI, see [Application Binary Interface (ABI) for the ARM Architecture](http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.subset.swdev.abi/index.html) (external link).
## Definitions
@@ -12,8 +12,8 @@ With the introduction of 64-bit support, ARM has defined several terms:
- **AArch32** – the legacy 32-bit instruction set architecture (ISA) defined by ARM, including Thumb mode execution.
- **AArch64** – the new 64-bit instruction set architecture (ISA) defined by ARM.
-- **ARMv7** – the specification of the “7th generation” ARM hardware, which only includes support for AArch32. This version of the ARM hardware is the first version Windows for ARM supported.
-- **ARMv8** – the specification of the “8th generation” ARM hardware, which includes support for both AArch32 and AArch64.
+- **ARMv7** – the specification of the "7th generation" ARM hardware, which only includes support for AArch32. This version of the ARM hardware is the first version Windows for ARM supported.
+- **ARMv8** – the specification of the "8th generation" ARM hardware, which includes support for both AArch32 and AArch64.
Windows also uses these terms:
@@ -31,8 +31,6 @@ Finally, when referring to data types, the following definitions from ARM are re
The ARM64 version of Windows presupposes that it's running on an ARMv8 or later architecture at all times. Both floating-point and NEON support are presumed to be present in hardware.
-The ARMv8 specification allows for full support of AArch32 applications. However, support for existing ARM32 applications on the ARM64 version of Windows isn't planned. (That is, there are no plans for WOW64). This support is subject to re-evaluation in the future, but it's the current working assumption.
-
The ARMv8 specification describes new optional crypto and CRC helper opcodes for both AArch32 and AArch64. Support for them is currently optional, but recommended. To take advantage of these opcodes, apps should first make runtime checks for their existence.
## Endianness
@@ -111,7 +109,7 @@ The floating-point control register (FPCR) has certain requirements on the vario
## System registers
-Like AArch32, the AArch64 specification provides three system-controlled “thread ID” registers:
+Like AArch32, the AArch64 specification provides three system-controlled "thread ID" registers:
| Register | Role |
| - | - |
@@ -159,7 +157,7 @@ For each argument in the list, the following rules are applied in turn until the
1. If the argument is an HFA or an HVA, then the NSRN is set to 8, and the size of the argument is rounded up to the nearest multiple of 8 bytes.
-1. If the argument is an HFA, an HVA, a Quad-precision Floating-point or Short Vector Type, then the NSAA is rounded up to the larger of 8 or the Natural Alignment of the argument’s type.
+1. If the argument is an HFA, an HVA, a Quad-precision Floating-point or Short Vector Type, then the NSAA is rounded up to the larger of 8 or the Natural Alignment of the argument's type.
1. If the argument is a Half- or Single-precision Floating Point type, then the size of the argument is set to 8 bytes. The effect is as if the argument had been copied to the least significant bits of a 64-bit register, and the remaining bits filled with unspecified values.
@@ -175,7 +173,7 @@ For each argument in the list, the following rules are applied in turn until the
1. The NGRN is set to 8.
-1. The NSAA is rounded up to the larger of 8 or the Natural Alignment of the argument’s type.
+1. The NSAA is rounded up to the larger of 8 or the Natural Alignment of the argument's type.
1. If the argument is a composite type, then the argument is copied to memory at the adjusted NSAA. The NSAA is incremented by the size of the argument. The argument has now been allocated.
@@ -221,7 +219,7 @@ All other types use this convention:
Following the ABI put forth by ARM, the stack must remain 16-byte aligned at all times. AArch64 contains a hardware feature that generates stack alignment faults whenever the SP isn't 16-byte aligned and an SP-relative load or store is done. Windows runs with this feature enabled at all times.
-Functions that allocate 4k or more worth of stack must ensure that each page prior to the final page is touched in order. This action ensures no code can “leap over” the guard pages that Windows uses to expand the stack. Typically the touching is done by the `__chkstk` helper, which has a custom calling convention that passes the total stack allocation divided by 16 in x15.
+Functions that allocate 4k or more worth of stack must ensure that each page prior to the final page is touched in order. This action ensures no code can "leap over" the guard pages that Windows uses to expand the stack. Typically the touching is done by the `__chkstk` helper, which has a custom calling convention that passes the total stack allocation divided by 16 in x15.
## Red zone
@@ -237,7 +235,7 @@ Code within Windows is compiled with frame pointers enabled ([/Oy-](reference/oy
## Exception unwinding
-Unwinding during exception handling is assisted through the use of unwind codes. The unwind codes are a sequence of bytes stored in the .xdata section of the executable. They describe the operation of the prologue and epilogue in an abstract manner, such that the effects of a function’s prologue can be undone in preparation for backing up to the caller’s stack frame. For more information on the unwind codes, see [ARM64 exception handling](arm64-exception-handling.md).
+Unwinding during exception handling is assisted through the use of unwind codes. The unwind codes are a sequence of bytes stored in the .xdata section of the executable. They describe the operation of the prologue and epilogue in an abstract manner, such that the effects of a function's prologue can be undone in preparation for backing up to the caller's stack frame. For more information on the unwind codes, see [ARM64 exception handling](arm64-exception-handling.md).
The ARM EABI also specifies an exception unwinding model that uses unwind codes. However, the specification as presented is insufficient for unwinding in Windows, which must handle cases where the PC is in the middle of a function prologue or epilogue.
diff --git a/docs/build/building-on-the-command-line.md b/docs/build/building-on-the-command-line.md
index 1ea916cccf..434269cc99 100644
--- a/docs/build/building-on-the-command-line.md
+++ b/docs/build/building-on-the-command-line.md
@@ -2,13 +2,17 @@
title: "Use the Microsoft C++ toolset from the command line"
description: "Use the Microsoft C++ compiler toolchain (MSVC) from the command line outside of the Visual Studio IDE."
ms.custom: "conceptual"
-ms.date: "06/06/2019"
+ms.date: "11/12/2019"
helpviewer_keywords: ["command-line builds [C++]", "compiling source code [C++], command line", "builds [C++], command-line", "command line [C++], building from", "command line [C++], compilers"]
ms.assetid: 7ca9daed-a003-4162-842d-908f79058365
---
# Use the Microsoft C++ toolset from the command line
-You can build C and C++ applications on the command line by using tools that are included in Visual Studio. The Microsoft C++ (MSVC) compiler toolset is also downloadable as a standalone package from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page. It's part of the **Build Tools for Visual Studio** package. You can choose to download only the tools you need for C++ development.
+You can build C and C++ applications on the command line by using tools that are included in Visual Studio. The Microsoft C++ (MSVC) compiler toolset is also downloadable as a standalone package that doesn't include the Visual Studio IDE.
+
+## Download and install the tools
+
+If you've installed Visual Studio and a C++ workload, you have all the command-line tools. For information on how to install C++ and Visual Studio, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md). If you only want the command-line toolset, download the [Build Tools for Visual Studio](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019). When you run the downloaded executable, it updates and runs the Visual Studio Installer. To install only the tools you need for C++ development, select the **C++ build tools** workload. You can select optional libraries and toolsets to include under **Installation details**. To build code by using the Visual Studio 2015 or 2017 toolsets, select the optional MSVC v140 or MSVC v141 build tools. When you're satisfied with your selections, choose **Install**.
## How to use the command-line tools
@@ -46,7 +50,7 @@ The Start menu folder and shortcut names vary depending on the installed version
::: moniker-end
-## To open a developer command prompt window
+### To open a developer command prompt window
1. On the desktop, open the Windows **Start** menu, and then scroll to find and open the folder for your version of Visual Studio, for example, **Visual Studio 2019**.
@@ -154,8 +158,7 @@ Use **-vcvars_ver=14.1x.yyyyy** to specify a specific version of the Visual Stud
Use **-vcvars_ver=14.0** to specify the Visual Studio 2015 compiler toolset.
-
-#### To set up the build environment in an existing command prompt window
+#### To set up the build environment in an existing command prompt window
1. At the command prompt, use the CD command to change to the Visual Studio installation directory. Then, use CD again to change to the subdirectory that contains the configuration-specific command files. For Visual Studio 2019 and Visual Studio 2017, use the *VC\\Auxiliary\\Build* subdirectory. For Visual Studio 2015, use the *VC* subdirectory.
@@ -183,7 +186,7 @@ Open the Properties dialog for a developer command prompt shortcut to see the co
Open the Properties dialog for a developer command prompt shortcut to see the command target used. For example, the target for the **VS2015 x64 Native Tools Command Prompt** shortcut is something similar to:
-`%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" amd64`
+`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64`
::: moniker-end
@@ -191,17 +194,17 @@ The architecture-specific batch files set the *architecture* parameter and call
::: moniker range=">= vs-2019"
-`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat amd64_arm uwp -vcvars_ver=14.16"`
+`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.16`
::: moniker-end
::: moniker range="= vs-2017"
-`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat amd64_arm uwp -vcvars_ver=14.0"`
+`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Auxiliary\Build\vcvarsall.bat" amd64_arm uwp -vcvars_ver=14.0`
::: moniker-end
::: moniker range="< vs-2017"
-`%comspec% /k ""C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"" amd64 -vcvars_ver=12.0`
+`%comspec% /k "C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" amd64 -vcvars_ver=12.0`
::: moniker-end
@@ -228,43 +231,43 @@ Use NMAKE (nmake.exe) on Windows to build C++ projects based on a traditional ma
When you build on the command line, the F1 command isn't available for instant help. Instead, you can use a search engine to get information about warnings, errors, and messages, or you can use the offline help files. To use the search in [docs.microsoft.com](https://docs.microsoft.com/cpp/), use the search box at the top of the page.
-## In This Section
+## In this section
These articles show how to build apps on the command line, and describe how to customize the command-line build environment. Some show how to use 64-bit toolsets, and target x86, x64, ARM, and ARM64 platforms. They also describe use of the command-line build tools MSBuild and NMAKE.
-[Walkthrough: Compiling a Native C++ Program on the Command Line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)
+[Walkthrough: Compiling a native C++ program on the command line](walkthrough-compiling-a-native-cpp-program-on-the-command-line.md)
Gives an example that shows how to create and compile a C++ program on the command line.
-[Walkthrough: Compile a C Program on the Command Line](walkthrough-compile-a-c-program-on-the-command-line.md)
+[Walkthrough: Compile a C program on the command line](walkthrough-compile-a-c-program-on-the-command-line.md)
Describes how to compile a program written in the C programming language.
-[Walkthrough: Compiling a C++/CLI Program on the Command Line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md)
+[Walkthrough: Compiling a C++/CLI program on the command line](walkthrough-compiling-a-cpp-cli-program-on-the-command-line.md)
Describes how to create and compile a C++/CLI program that uses the .NET Framework.
-[Walkthrough: Compiling a C++/CX Program on the Command Line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md)
+[Walkthrough: Compiling a C++/CX program on the command line](walkthrough-compiling-a-cpp-cx-program-on-the-command-line.md)
Describes how to create and compile a C++/CX program that uses the Windows Runtime.
-[Set the Path and Environment Variables for Command-Line Builds](setting-the-path-and-environment-variables-for-command-line-builds.md)
+[Set the path and environment variables for command-line builds](setting-the-path-and-environment-variables-for-command-line-builds.md)
How to set environment variables to use a 32-bit or 64-bit toolset to target x86, x64, ARM, and ARM64 platforms.
-[NMAKE Reference](reference/nmake-reference.md)
+[NMAKE reference](reference/nmake-reference.md)
Provides links to articles that describe the Microsoft Program Maintenance Utility (NMAKE.EXE).
[MSBuild on the command line - C++](msbuild-visual-cpp.md)
Provides links to articles that discuss how to use msbuild.exe from the command line.
-## Related Sections
+## Related sections
-[/MD, /MT, /LD (Use Run-Time Library)](reference/md-mt-ld-use-run-time-library.md)
+[/MD, /MT, /LD (Use run-time library)](reference/md-mt-ld-use-run-time-library.md)
Describes how to use these compiler options to use a Debug or Release run-time library.
-[C/C++ Compiler Options](reference/compiler-options.md)
+[C/C++ compiler options](reference/compiler-options.md)
Provides links to articles that discuss the C and C++ compiler options and CL.exe.
-[MSVC Linker Options](reference/linker-options.md)
+[MSVC linker options](reference/linker-options.md)
Provides links to articles that discuss the linker options and LINK.exe.
-[Additional MSVC Build Tools](reference/c-cpp-build-tools.md)
+[Additional MSVC build tools](reference/c-cpp-build-tools.md)
Provides links to the C/C++ build tools that are included in Visual Studio.
## See also
diff --git a/docs/build/clang-support-cmake.md b/docs/build/clang-support-cmake.md
index 7cd7623ffd..c2d768dff7 100644
--- a/docs/build/clang-support-cmake.md
+++ b/docs/build/clang-support-cmake.md
@@ -17,7 +17,7 @@ Clang support is available in Visual Studio 2019.
You can use Visual Studio with Clang to edit and debug C++ CMake projects that target Windows or Linux.
-**Windows**: Visual Studio 2019 version 16.1 includes support for editing, building, and debugging with Clang/LLVM in CMake projects targeting Windows.
+**Windows**: Visual Studio 2019 version 16.1 includes support for editing, building, and debugging with Clang/LLVM in CMake projects targeting Windows.
**Linux**: For Linux CMake projects, no special Visual Studio support is required. You can install Clang using your distro's package manager, and add the appropriate commands in the CMakeLists.txt file.
diff --git a/docs/build/clang-support-msbuild.md b/docs/build/clang-support-msbuild.md
index e43194d7bb..be9787c68a 100644
--- a/docs/build/clang-support-msbuild.md
+++ b/docs/build/clang-support-msbuild.md
@@ -25,7 +25,7 @@ For best IDE support in Visual Studio, we recommend using the latest Clang compi
## Configure a Windows project to use Clang tools
-To configure a Visual Studio project to use clang, right-click on the project node in **Solution Explorer** and choose **Properties**. Typically, you should first choose **All configurations** at the top of the dialog. Then, under **General** > **Platform Toolset**, choose **LLVM (clang-cl)** and then **OK**.
+To configure a Visual Studio project to use Clang, right-click on the project node in **Solution Explorer** and choose **Properties**. Typically, you should first choose **All configurations** at the top of the dialog. Then, under **General** > **Platform Toolset**, choose **LLVM (clang-cl)** and then **OK**.
![Clang component installation](media/clang-msbuild-prop-page.png)
diff --git a/docs/build/cmake-predefined-configuration-reference.md b/docs/build/cmake-predefined-configuration-reference.md
index 2e31b6165b..2ca72a54c2 100644
--- a/docs/build/cmake-predefined-configuration-reference.md
+++ b/docs/build/cmake-predefined-configuration-reference.md
@@ -13,7 +13,7 @@ CMake projects are supported in Visual Studio 2017 and later.
::: moniker-end
-::: moniker range="vs-2017"
+::: moniker range=">=vs-2017"
In a CMake project, build configurations are stored in a CMakeSettings.json file. When you choose **Manage Configurations** from the build configuration dropdown in the main toolbar, a dialog appears that shows the default CMake configurations available in Visual Studio:
- x86 Debug
@@ -27,7 +27,7 @@ In a CMake project, build configurations are stored in a CMakeSettings.json file
- MinGW Debug
- MinGW Release
-When you choose a configuration, it is added to the CMakeSettings.json file in the project's root folder. You can then use it to build your project.
+When you choose a configuration, it is added to the *CMakeSettings.json* file in the project's root folder. You can then use it to build your project. For information about the configuration properties, see [CMakeSettings reference](cmakesettings-reference.md).
## Linux predefined build configurations:
diff --git a/docs/build/cmake-projects-in-visual-studio.md b/docs/build/cmake-projects-in-visual-studio.md
index 6c937c13a8..cb26fc00fc 100644
--- a/docs/build/cmake-projects-in-visual-studio.md
+++ b/docs/build/cmake-projects-in-visual-studio.md
@@ -1,23 +1,24 @@
---
title: "CMake projects in Visual Studio"
-ms.date: "06/12/2019"
+description: "How to create and build C++ projects using CMake in Visual Studio."
+ms.date: "01/08/2020"
helpviewer_keywords: ["CMake in Visual C++"]
ms.assetid: 444d50df-215e-4d31-933a-b41841f186f8
---
# CMake projects in Visual Studio
-CMake is a cross-platform, open-source tool for defining build processes that run on multiple platforms. This article assumes you are familiar with CMake. You can learn more about it at [Build, Test and Package Your Software With CMake](https://cmake.org/).
+CMake is a cross-platform, open-source tool for defining build processes that run on multiple platforms. This article assumes you're familiar with CMake. You can learn more about it at [Build, Test and Package Your Software With CMake](https://cmake.org/).
> [!NOTE]
-> CMake has become more and more integrated with Visual Studio over the past few releases. To see the correct information for the version you are using, make sure the version selector in the upper left of this page is set correctly.
+> CMake has become more and more integrated with Visual Studio over the past few releases. To see the correct information for the version you are using, make sure the version selector in the upper left of this page is set correctly.
::: moniker range="vs-2019"
-Visual Studio 2019 introduces the **CMake Settings editor** and other improvements over Visual Studio 2017. The **C++ CMake tools for Windows** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as CMakeLists.txt) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, a temporary project file is generated and passed to msbuild.exe, but is never loaded for IntelliSense or browsing purposes. You can also import an existing CMake cache.
+The **C++ CMake tools for Windows** component uses the [Open Folder](open-folder-projects-cpp.md) feature to consume CMake project files (such as *CMakeLists.txt*) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to msbuild.exe. However, the project is never loaded for IntelliSense or browsing purposes. You can also import an existing CMake cache.
## Installation
-**C++ CMake tools for Windows** is installed by default as part of the **Desktop development with C++** workload and as part of the **Linux Development with C++** workload. See [Cross-platform CMake projects](../linux/cmake-linux-project.md) for more information.
+**C++ CMake tools for Windows** is installed as part of the **Desktop development with C++** and **Linux Development with C++** workloads. For more information, see [Cross-platform CMake projects](../linux/cmake-linux-project.md).
![CMake component in C++ Desktop workload](media/cmake-install-2019.png)
@@ -25,17 +26,17 @@ For more information, see [Install the C++ Linux workload in Visual Studio](../l
## IDE Integration
-When you choose **File | Open | Folder** to open a folder containing a CMakeLists.txt file, the following things happen:
+When you choose **File > Open > Folder** to open a folder containing a *CMakeLists.txt* file, the following things happen:
- Visual Studio adds **CMake** items to the **Project** menu, with commands for viewing and editing CMake scripts.
- **Solution Explorer** displays the folder structure and files.
-- Visual Studio runs CMake.exe and optionally generates the CMake cache for the default *configuration*, which is x86 Debug. The CMake command line is displayed in the **Output Window**, along with additional output from CMake.
+- Visual Studio runs cmake.exe and generates the CMake cache file (*CMakeCache.txt*) for the default (x64 Debug) configuration. The CMake command line is displayed in the **Output Window**, along with additional output from CMake.
- In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources.
-You can open folders containing any number of CMake projects. Visual Studio detects and configures all the "root" CMakeLists.txt files in your workspace. CMake operations (configure, build, debug) as well as C++ IntelliSense and browsing are available to all CMake projects in your workspace.
+You can open folders containing any number of CMake projects. Visual Studio detects and configures all the "root" *CMakeLists.txt* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace.
![CMake project with multiple roots](media/cmake-multiple-roots.png)
@@ -43,125 +44,100 @@ You can also view your projects organized logically by targets. Choose **Targets
![CMake targets view button](media/cmake-targets-view.png)
-Visual Studio uses a file called **CMakeSettings.json** to store environment variables or command-line options for Cmake.exe. **CMakeSettings.json** also enables you to define and store multiple CMake build configurations and conveniently switch between them in the IDE. In Visual Studio 2019, the **CMake Settings Editor** provides a convenient way to edit your settings. See [Customize CMake settings](customize-cmake-settings.md) for more information.
-
-Otherwise, use the **CMakeLists.txt** just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system related information.
-
-If you need to pass arguments to an executable at debug time, you can use another file called **launch.vs.json**. In some scenarios, Visual Studio will automatically generate these files; you can edit them manually. You can also create the file yourself.
-
-> [!NOTE]
-> For other kinds of Open Folder projects, two additional JSON files are used: **CppProperties.json** and **tasks.vs.json**. Neither of these are relevant for CMake projects.
-
-## Import an existing cache
-
-When you import an existing CMakeCache.txt file, Visual Studio automatically extracts customized variables and creates a pre-populated **CMakeSettings.json** file based on them. The original cache is not modified in any way and can still be used from the command line or with whatever tool or IDE was used to generate it. The new **CMakeSettings.json** file is placed alongside the project’s root CMakeLists.txt. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools | Options | CMake | General** dialog.
+Click the **Show All Files** button at the top of **Solution Explorer** to see all the CMake-generated output in the *out/build/\* folders.
-Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE.
+Visual Studio uses a configuration file called **CMakeSettings.json**. This file lets you define and store multiple build configurations, and conveniently switch between them in the IDE. A *configuration* is a Visual Studio construct that encapsulates settings that are specific to a given build type. The settings are used to configure the default command-line options that Visual Studio passes to cmake.exe. You can also specify additional CMake options here, and define any additional variables you like. All options are written to the CMake cache either as internal or external variables. In Visual Studio 2019, the **CMake Settings Editor** provides a convenient way to edit your settings. For more information, see [Customize CMake settings](customize-cmake-settings.md).
-### To import an existing cache
+One setting, `intelliSenseMode` isn't passed to CMake, but is used only by Visual Studio.
-1. From the main menu, choose **File | Open | CMake**:
+Use the **CMakeLists.txt** file in each project folder just as you would in any CMake project. You can specify source files, find libraries, set compiler and linker options, and specify other build system-related information.
- ![Open CMake](media/cmake-file-open.png "File, Open, CMake")
+To pass arguments to an executable at debug time, you can use another file called **launch.vs.json**. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself.
- This brings up the **Import CMake from Cache** wizard.
+> [!NOTE]
+> For other kinds of Open Folder projects, two additional JSON files are used: **CppProperties.json** and **tasks.vs.json**. Neither of these are relevant for CMake projects.
-2. Navigate to the CMakeCache.txt file that you want to import, and then click **OK**. The **Import CMake Project from Cache** wizard appears:
+## Open an existing cache
- ![Import a CMake cache](media/cmake-import-wizard.png "Open the CMake import cache wizard")
+When you open an existing CMake cache file (*CMakeCache.txt*), Visual Studio doesn't try to manage your cache and build tree for you. Your custom or preferred tools have complete control over how CMake configures your project. To open an existing cache in Visual Studio, choose **File > Open > CMake**. Then, navigate to an existing *CMakeCache.txt* file.
- When the wizard completes, you can see the new CMakeCache.txt file in **Solution Explorer** next to the root CMakeLists.txt file in your project.
+You can add an existing CMake cache to an open project. It's done the same way you'd add a new configuration. For more information, see our blog post on [opening an existing cache in Visual Studio](https://devblogs.microsoft.com/cppblog/open-existing-cmake-caches-in-visual-studio/).
## Building CMake projects
To build a CMake project, you have these choices:
-1. In the General toolbar, find the **Configurations** dropdown; it is probably showing "Linux-Debug" or "x64-Debug" by default. Select the desired configuration and press **F5**, or click the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.
+1. In the General toolbar, find the **Configurations** dropdown. It probably shows "x64-Debug" by default. Select the preferred configuration and press **F5**, or click the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.
-1. Right click on the CMakeLists.txt and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target.
+1. Right click on *CMakeLists.txt* and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target.
-1. From the main menu, select **Build | Build Solution** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar.
+1. From the main menu, select **Build > Build All** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar.
![CMake build menu command](media/cmake-build-menu.png "CMake build command menu")
-You can customize build configurations, environment variables, command line arguments, and other settings without modifying the CMakeLists.txt file by using the **CMake Settings Editor**. For more information, see [Customize CMake settings](customize-cmake-settings.md).
-
As you would expect, build results are shown in the **Output Window** and **Error List**.
![CMake build errors](media/cmake-build-errors.png "CMake build errors")
-In a folder with multiple build targets, you can choose the **Build** item on the **CMake** menu or the **CMakeLists.txt** context menu to specify which CMake target to build. Pressing **Ctrl+Shift+B** in a CMake project builds the current active document.
+In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *CMakeLists.txt* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document.
## Debugging CMake projects
-To debug a CMake project, choose the desired configuration and press **F5**, or press the **Run** button in the toolbar. If the **Run** button says "Select Startup Item", select the dropdown arrow and choose the target that you want to run. (In a CMake project, the "Current document" option is only valid for .cpp files.)
+To debug a CMake project, choose the preferred configuration and press **F5**, or press the **Run** button in the toolbar. If the **Run** button says "Select Startup Item", select the dropdown arrow. Choose the target that you want to run. (In a CMake project, the "Current document" option is only valid for .cpp files.)
![CMake run button](media/cmake-run-button.png "CMake run button")
-The **Run** or **F5** commands first build the project if changes have been made since the previous build.
+The **Run** or **F5** commands first build the project if changes have been made since the previous build. Changes to *CMakeSettings.json* cause the CMake cache to be regenerated.
You can customize a CMake debugging session by setting properties in the **launch.vs.json** file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md).
-## Vcpkg Integration
+## Just My Code for CMake projects
-If you have installed [vcpkg](vcpkg.md), CMake projects opened in Visual Studio will automatically integrate the vcpkg toolchain file. This means no additional configuration is required to use vcpkg with your CMake projects. This support works for both local vcpkg installations and vcpkg installations on remote machines that you are targeting. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration.
+When you build for Windows using the MSVC compiler, CMake projects have support for Just My Code debugging. To change the Just My Code setting, go to **Tools** > **Options** > **Debugging** > **General**.
-## Just My Code for CMake projects
+## Vcpkg integration
-When you build for Windows using the MSVC compiler, your CMake projects now support Just my Code debugging in the compiler and linker if the option is enabled in Visual Studio. To change the setting, go to **Tools** > **Options** > **Debugging** > **General**.
+If you have installed [vcpkg](vcpkg.md), CMake projects opened in Visual Studio automatically integrate the vcpkg toolchain file. That means no additional configuration is required to use vcpkg with your CMake projects. This support works for both local vcpkg installations and vcpkg installations on remote systems that you're targeting. This behavior is disabled automatically when you specify any other toolchain in your CMake Settings configuration.
## Customize configuration feedback
-By default, most configuration messages are suppressed unless there is an error. You can see all messages by enabling this feature in **Tools** > **Options** > **CMake**.
+By default, most configuration messages are suppressed unless there's an error. You can see all messages by enabling this feature in **Tools** > **Options** > **CMake**.
![Configuring CMake diagnostic options](media/vs2019-cmake-configure-options.png "CMake diagnostic options")
## Editing CMakeLists.txt files
-To edit a CMakeLists.txt file, right click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update, and gives you an opportunity to cancel the update operation. For information about CMakeLists.txt, see the [CMake documentation](https://cmake.org/documentation/).
+To edit a *CMakeLists.txt* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *CMakeLists.txt*, see the [CMake documentation](https://cmake.org/documentation/).
![CMakeLists.txt file editing](media/cmake-cmakelists.png "CMakeLists.txt file editing")
-As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in CMakeLists.txt.
+As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *CMakeLists.txt*.
![CMakeLists.txt file errors](media/cmake-cmakelists-error.png "CMakeLists.txt file errors")
-
## CMake configure step
-When significant changes are made to the **CMakeSettings.json** or to CMakeLists.txt files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that is collected is available in C++ IntelliSense and language services and also in build and debug operations.
-
-When multiple CMake projects use the same CMake configuration name (for example, x86-Debug), all of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration.
-
- ![CMake Build Only menu item](media/cmake-build-only.png "CMake Build Only menu item")
-
-To limit builds and debug sessions to a subset of the projects in the workspace, create a new configuration with a unique name in the **CMakeSettings.json** file and apply it to those projects only. When that configuration is selected, the IntelliSense and build and debug commands are enabled only for those specified projects.
+When you make significant changes to the *CMakeSettings.json* or to *CMakeLists.txt* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations.
## Troubleshooting CMake cache errors
-If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the **CMakeLists.txt** context menu in **Solution Explorer** to run one of these commands:
+If you need more information about the state of the CMake cache to diagnose a problem, open the **Project** main menu or the *CMakeLists.txt* context menu in **Solution Explorer** to run one of these commands:
-- **View Cache** opens the CMakeCache.txt file from the build root folder in the editor. (Any edits you make here to CMakeCache.txt are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md).)
+- **View Cache** opens the *CMakeCache.txt* file from the build root folder in the editor. (Any edits you make here to *CMakeCache.txt* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md).)
- **Open Cache Folder** opens an Explorer window to the build root folder.
- **Clean Cache** deletes the build root folder so that the next CMake configure step starts from a clean cache.
-- **Generate Cache** forces the generate step to run even if Visual Studio considers the environment up-to-date.
+- **Generate Cache** forces the generate step to run even if Visual Studio considers the environment up to date.
-Automatic cache generation can be disabled in the **Tools | Options | CMake | General** dialog.
-
-## Single File Compilation
-
-To build a single file in a CMake project, right-click on the file in **Solution Explorer** and choose **Compile**. You can also build the file that is currently open in the editor by using the main CMake menu:
-
-![CMake single file compilation](media/cmake-single-file-compile.png)
+Automatic cache generation can be disabled in the **Tools > Options > CMake > General** dialog.
## Run CMake from the command line
If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:
-1. Run the appropriate vsdevcmd.bat (x86/x64). See [Building on the Command Line](building-on-the-command-line.md) for more information.
+1. Run the appropriate vsdevcmd.bat (x86/x64). For more information, see [Building on the Command Line](building-on-the-command-line.md).
1. Switch to your output folder.
@@ -171,19 +147,19 @@ If you have installed CMake from the Visual Studio Installer, you can run it fro
::: moniker range="vs-2017"
-Visual Studio 2017 has rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as CMakeLists.txt) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, a temporary project file is generated and passed to msbuild.exe, but is never loaded for IntelliSense or browsing purposes. You also can import an existing CMake cache.
+Visual Studio 2017 has rich support for CMake, including [cross-platform CMake projects](../linux/cmake-linux-project.md). The **Visual C++ Tools for CMake** component uses the **Open Folder** feature to enable the IDE to consume CMake project files (such as *CMakeLists.txt*) directly for the purposes of IntelliSense and browsing. Both Ninja and Visual Studio generators are supported. If you use a Visual Studio generator, it generates a temporary project file and passes it to msbuild.exe. However, the project is never loaded for IntelliSense or browsing purposes. You also can import an existing CMake cache.
## Installation
-**Visual C++ Tools for CMake** is installed by default as part of the **Desktop development with C++** workload and as part of the **Linux Development with C++** workload.
+**Visual C++ Tools for CMake** is installed as part of the **Desktop development with C++** and **Linux Development with C++** workloads.
![CMake component in C++ Desktop workload](media/cmake-install.png)
For more information, see [Install the C++ Linux workload in Visual Studio](../linux/download-install-and-setup-the-linux-development-workload.md).
-## IDE Integration
+## IDE integration
-When you choose **File | Open | Folder** to open a folder containing a CMakeLists.txt file, the following things happen:
+When you choose **File > Open > Folder** to open a folder containing a *CMakeLists.txt* file, the following things happen:
- Visual Studio adds a **CMake** menu item to the main menu, with commands for viewing and editing CMake scripts.
@@ -193,7 +169,7 @@ When you choose **File | Open | Folder** to open a folder containing a CMakeList
- In the background, Visual Studio starts to index the source files to enable IntelliSense, browsing information, refactoring, and so on. As you work, Visual Studio monitors changes in the editor and also on disk to keep its index in sync with the sources.
-You can open folders containing any number of CMake projects. Visual Studio detects and configures all the "root" CMakeLists.txt files in your workspace. CMake operations (configure, build, debug) as well as C++ IntelliSense and browsing are available to all CMake projects in your workspace.
+You can open folders containing any number of CMake projects. Visual Studio detects and configures all the "root" *CMakeLists.txt* files in your workspace. CMake operations (configure, build, debug), C++ IntelliSense, and browsing are available to all CMake projects in your workspace.
![CMake project with multiple roots](media/cmake-multiple-roots.png)
@@ -201,58 +177,58 @@ You can also view your projects organized logically by targets. Choose **Targets
![CMake targets view button](media/cmake-targets-view.png)
-Visual Studio uses a file called **CMakeSettings.json** to store environment variables or command-line options for Cmake.exe. **CMakeSettings.json** also enables you to define and store multiple CMake build configurations and conveniently switch between them in the IDE.
+Visual Studio uses a file called *CMakeSettings.json* to store environment variables or command-line options for Cmake.exe. *CMakeSettings.json* also enables you to define and store multiple CMake build configurations. You can conveniently switch between them in the IDE.
-Otherwise, use the **CMakeLists.txt** just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system related information.
+Otherwise, use the *CMakeLists.txt* just as you would in any CMake project to specify source files, find libraries, set compiler and linker options, and specify other build system-related information.
-If you need to pass arguments to an executable at debug time, you can use another file called **launch.vs.json**. In some scenarios, Visual Studio will automatically generate these files; you can edit them manually. You can also create the file yourself.
+If you need to pass arguments to an executable at debug time, you can use another file called **launch.vs.json**. In some scenarios, Visual Studio automatically generates these files. You can edit them manually, or even create the file yourself.
> [!NOTE]
> For other kinds of Open Folder projects, two additional JSON files are used: **CppProperties.json** and **tasks.vs.json**. Neither of these are relevant for CMake projects.
## Import an existing cache
-When you import an existing CMakeCache.txt file, Visual Studio automatically extracts customized variables and creates a pre-populated **CMakeSettings.json** file based on them. The original cache is not modified in any way and can still be used from the command line or with whatever tool or IDE was used to generate it. The new **CMakeSettings.json** file is placed alongside the project’s root CMakeLists.txt. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools | Options | CMake | General** dialog.
+When you import an existing *CMakeCache.txt* file, Visual Studio automatically extracts customized variables and creates a pre-populated *CMakeSettings.json* file based on them. The original cache isn't modified in any way. It can still be used from the command line, or with whatever tool or IDE used to generate it. The new *CMakeSettings.json* file is placed alongside the project's root *CMakeLists.txt*. Visual Studio generates a new cache based the settings file. You can override automatic cache generation in the **Tools > Options > CMake > General** dialog.
Not everything in the cache is imported. Properties such as the generator and the location of the compilers are replaced with defaults that are known to work well with the IDE.
### To import an existing cache
-1. From the main menu, choose **File | Open | CMake**:
+1. From the main menu, choose **File > Open > CMake**:
![Open CMake](media/cmake-file-open.png "File, Open, CMake")
- This brings up the **Import CMake from Cache** wizard.
+ This command brings up the **Import CMake from Cache** wizard.
-2. Navigate to the CMakeCache.txt file that you want to import, and then click **OK**. The **Import CMake Project from Cache** wizard appears:
+2. Navigate to the *CMakeCache.txt* file that you want to import, and then click **OK**. The **Import CMake Project from Cache** wizard appears:
![Import a CMake cache](media/cmake-import-wizard.png "Open the CMake import cache wizard")
- When the wizard completes, you can see the new CMakeCache.txt file in **Solution Explorer** next to the root CMakeLists.txt file in your project.
+ When the wizard completes, you can see the new *CMakeCache.txt* file in **Solution Explorer** next to the root *CMakeLists.txt* file in your project.
## Building CMake projects
To build a CMake project, you have these choices:
-1. In the General toolbar, find the **Configurations** dropdown; it is probably showing "Linux-Debug" or "x64-Debug" by default. Select the desired configuration and press **F5**, or click the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.
+1. In the General toolbar, find the **Configurations** dropdown. It's probably showing "Linux-Debug" or "x64-Debug" by default. Select the preferred configuration and press **F5**, or click the **Run** (green triangle) button on the toolbar. The project automatically builds first, just like a Visual Studio solution.
-1. Right click on the CMakeLists.txt and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target.
+1. Right click on the *CMakeLists.txt* and select **Build** from the context menu. If you have multiple targets in your folder structure, you can choose to build all or only one specific target.
-1. From the main menu, select **Build | Build Solution** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar.
+1. From the main menu, select **Build > Build Solution** (**F7** or **Ctrl+Shift+B**). Make sure that a CMake target is already selected in the **Startup Item** dropdown in the **General** toolbar.
![CMake build menu command](media/cmake-build-menu.png "CMake build command menu")
-You can customize build configurations, environment variables, command line arguments, and other settings without modifying the CMakeLists.txt file by using the **CMakeSettings.json** file. For more information, see [Customize CMake settings](customize-cmake-settings.md).
+You can customize build configurations, environment variables, command-line arguments, and other settings in the *CMakeSettings.json* file. It lets you make changes without modifying the *CMakeLists.txt* file. For more information, see [Customize CMake settings](customize-cmake-settings.md).
As you would expect, build results are shown in the **Output Window** and **Error List**.
![CMake build errors](media/cmake-build-errors.png "CMake build errors")
-In a folder with multiple build targets, you can choose the **Build** item on the **CMake** menu or the **CMakeLists.txt** context menu to specify which CMake target to build. Pressing **Ctrl+Shift+B** in a CMake project builds the current active document.
+In a folder with multiple build targets, you can specify which CMake target to build: Choose the **Build** item on the **CMake** menu or the *CMakeLists.txt* context menu to specify the target. If you enter **Ctrl+Shift+B** in a CMake project, it builds the current active document.
## Debugging CMake projects
-To debug a CMake project, choose the desired configuration and press **F5**, or press the **Run** button in the toolbar. If the **Run** button says "Select Startup Item", select the dropdown arrow and choose the target that you want to run. (In a CMake project, the "Current document" option is only valid for .cpp files.)
+To debug a CMake project, choose the preferred configuration and press **F5**. Or, press the **Run** button in the toolbar. If the **Run** button says "Select Startup Item", select the dropdown arrow and choose the target that you want to run. (In a CMake project, the "Current document" option is only valid for .cpp files.)
![CMake run button](media/cmake-run-button.png "CMake run button")
@@ -260,45 +236,43 @@ The **Run** or **F5** commands first build the project if changes have been made
You can customize a CMake debugging session by setting properties in the **launch.vs.json** file. For more information, see [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md).
-
## Editing CMakeLists.txt files
-To edit a CMakeLists.txt file, right click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update, and gives you an opportunity to cancel the update operation. For information about CMakeLists.txt, see the [CMake documentation](https://cmake.org/documentation/).
+To edit a *CMakeLists.txt* file, right-click on the file in **Solution Explorer** and choose **Open**. If you make changes to the file, a yellow status bar appears and informs you that IntelliSense will update. It gives you a chance to cancel the update operation. For information about *CMakeLists.txt*, see the [CMake documentation](https://cmake.org/documentation/).
![CMakeLists.txt file editing](media/cmake-cmakelists.png "CMakeLists.txt file editing")
-As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in CMakeLists.txt.
+As soon as you save the file, the configuration step automatically runs again and displays information in the **Output** window. Errors and warnings are shown in the **Error List** or **Output** window. Double-click on an error in the **Error List** to navigate to the offending line in *CMakeLists.txt*.
![CMakeLists.txt file errors](media/cmake-cmakelists-error.png "CMakeLists.txt file errors")
-
## CMake configure step
-When significant changes are made to the **CMakeSettings.json** or to CMakeLists.txt files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that is collected is available in C++ IntelliSense and language services and also in build and debug operations.
+When significant changes are made to the *CMakeSettings.json* or to *CMakeLists.txt* files, Visual Studio automatically reruns the CMake configure step. If the configure step finishes without errors, the information that's collected is available in C++ IntelliSense and language services. It's also used in build and debug operations.
-When multiple CMake projects use the same CMake configuration name (for example, x86-Debug), all of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration.
+Multiple CMake projects may use the same CMake configuration name (for example, x86-Debug). All of them are configured and built (in their own build root folder) when that configuration is selected. You can debug the targets from all of the CMake projects that participate in that CMake configuration.
![CMake Build Only menu item](media/cmake-build-only.png "CMake Build Only menu item")
-To limit builds and debug sessions to a subset of the projects in the workspace, create a new configuration with a unique name in the **CMakeSettings.json** file and apply it to those projects only. When that configuration is selected, the IntelliSense and build and debug commands are enabled only for those specified projects.
+You can limit builds and debug sessions to a subset of the projects in the workspace. Create a new configuration with a unique name in the *CMakeSettings.json* file. Then, apply the configuration to those projects only. When that configuration is selected, IntelliSense and the build and debug commands only apply to those specified projects.
## Troubleshooting CMake cache errors
-If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the **CMakeLists.txt** context menu in **Solution Explorer** to run one of these commands:
+If you need more information about the state of the CMake cache to diagnose a problem, open the **CMake** main menu or the *CMakeLists.txt* context menu in **Solution Explorer** to run one of these commands:
-- **View Cache** opens the CMakeCache.txt file from the build root folder in the editor. (Any edits you make here to CMakeCache.txt are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md).)
+- **View Cache** opens the *CMakeCache.txt* file from the build root folder in the editor. (Any edits you make here to *CMakeCache.txt* are wiped out if you clean the cache. To make changes that persist after the cache is cleaned, see [Customize CMake settings](customize-cmake-settings.md).)
- **Open Cache Folder** opens an Explorer window to the build root folder.
- **Clean Cache** deletes the build root folder so that the next CMake configure step starts from a clean cache.
-- **Generate Cache** forces the generate step to run even if Visual Studio considers the environment up-to-date.
+- **Generate Cache** forces the generate step to run even if Visual Studio considers the environment up to date.
-Automatic cache generation can be disabled in the **Tools | Options | CMake | General** dialog.
+Automatic cache generation can be disabled in the **Tools > Options > CMake > General** dialog.
-## Single File Compilation
+## Single file compilation
-To build a single file in a CMake project, right-click on the file in **Solution Explorer** and choose **Compile**. You can also build the file that is currently open in the editor by using the main CMake menu:
+To build a single file in a CMake project, right-click on the file in **Solution Explorer**. Choose **Compile** from the pop-up menu. You can also build the currently open file in the editor by using the main **CMake** menu:
![CMake single file compilation](media/cmake-single-file-compile.png)
@@ -306,7 +280,7 @@ To build a single file in a CMake project, right-click on the file in **Solution
If you have installed CMake from the Visual Studio Installer, you can run it from the command line by following these steps:
-1. Run the appropriate vsdevcmd.bat (x86/x64). See [Building on the Command Line](building-on-the-command-line.md) for more information.
+1. Run the appropriate vsdevcmd.bat (x86/x64). For more information, see [Building on the command line](building-on-the-command-line.md) .
1. Switch to your output folder.
@@ -320,14 +294,13 @@ In Visual Studio 2015, Visual Studio users can use a [CMake generator](https://c
::: moniker-end
-
## See also
-[Tutorial: Create C++ cross-platform projects in Visual Studio](get-started-linux-cmake.md)
-[Configure a Linux CMake project](../linux/cmake-linux-project.md)
-[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)
-[Customize CMake build settings](customize-cmake-settings.md)
-[CMakeSettings.json reference](cmakesettings-reference.md)
-[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)
-[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)
-[CMake predefined configuration reference](cmake-predefined-configuration-reference.md)
+[Tutorial: Create C++ cross-platform projects in Visual Studio](get-started-linux-cmake.md)\
+[Configure a Linux CMake project](../linux/cmake-linux-project.md)\
+[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)\
+[Customize CMake build settings](customize-cmake-settings.md)\
+[CMakeSettings.json schema reference](cmakesettings-reference.md)\
+[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)\
+[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)\
+[CMake predefined configuration reference](cmake-predefined-configuration-reference.md)
diff --git a/docs/build/cmakesettings-reference.md b/docs/build/cmakesettings-reference.md
index 958fff958e..b56e7001fd 100644
--- a/docs/build/cmakesettings-reference.md
+++ b/docs/build/cmakesettings-reference.md
@@ -1,47 +1,50 @@
---
title: "CMakeSettings.json schema reference"
-ms.date: "05/16/2019"
+ms.date: "11/22/2019"
helpviewer_keywords: ["CMake in Visual C++"]
ms.assetid: 444d50df-215e-4d31-933a-b41841f186f8
---
# CMakeSettings.json schema reference
-The **cmakesettings.json** file contains information that specifies how Visual Studio should interact with CMake to build a project for a specified platform. The file stores information such as environment variables or arguments for the cmake.exe environment. You can edit directly or use the **CMake Settings editor** (Visual Studio 2019 and later). See [Customize CMake build settings in Visual Studio](customize-cmake-settings.md) for more information about the editor.
+::: moniker range="vs-2015"
-## Environments
+CMake projects are supported in Visual Studio 2017 and later.
-The `environments` array contains a list of `items` of type `object` which define a compiler toolset "environment." An environment may be used to apply a set of variables to a `configuration`. Each item in the `environments` array consists of:
+::: moniker-end
-- `namespace`: names the environment so that its variables can be referenced from a configuration in the form `namespace.variable`. The default environment object is called `env` and is populated with certain system environment variables including `%USERPROFILE%`.
-- `environment`: uniquely identifies this group of variables. Allows the group to be inherited later in an `inheritEnvironments` entry.
-- `groupPriority`: An integer that specifies the priority of these variables when evaluating them. Higher number items are evaluated first.
-- `inheritEnvironments`: An array of values that specify the set of environments that are inherited by this group. This feature enables you to inherit default environments and create custom environment variables that are passed to CMake.exe when it runs.
+::: moniker range=">=vs-2017"
- ```json
- "inheritEnvironments": [ "msvc_x64_x64" ]
- ```
+The **CMakeSettings.json** file contains information that Visual Studio uses for IntelliSense and to construct the command-line arguments that it passes to cmake.exe for a specified *configuration* and compiler *environment*. A configuration specifies properties that apply to a specific platform and build-type, for example, `x86-Debug` or `Linux-Release`. Each configuration specifies an environment, which encapsulates information about the compiler toolset, for example MSVC, GCC, or Clang. CMake uses the command-line arguments to regenerate the root *CMakeCache.txt* file and other project files for the project. The values can be overridden in the *CMakeLists.txt* files.
- The example above is the same as running the **Developer Command Prompt for VS 2017** or **Developer Command Prompt for VS 2019** with the **-arch=amd64 -host_arch=amd64** arguments. Any custom environment can be used, or these predefined environments:
-
- - linux_arm: Target ARM Linux remotely.
- - linux_x64: Target x64 Linux remotely.
- - linux_x86: Target x86 Linux remotely.
- - msvc_arm: Target ARM Windows with the MSVC compiler.
- - msvc_arm_x64: Target ARM Windows with the 64-bit MSVC compiler.
- - msvc_arm64: Target ARM64 Windows with the MSVC compiler.
- - msvc_arm64_x64: Target ARM64 Windows with the 64-bit MSVC compiler.
- - msvc_x64: Target x64 Windows with the MSVC compiler.
- - msvc_x64_x64: Target x64 Windows with the 64-bit MSVC compiler.
- - msvc_x86: Target x86 Windows with the MSVC compiler.
- - msvc_x86_x64: Target x86 Windows with the 64-bit MSVC compiler.
+You can add or remove configurations in the IDE and then edit them directly in the JSON file or use the **CMake Settings editor** (Visual Studio 2019 and later). You can switch between the configurations easily in the IDE to generate the various project files. See [Customize CMake build settings in Visual Studio](customize-cmake-settings.md) for more information.
## Configurations
-The `configurations` array consists of objects that represent CMake configurations that apply to the CMakeLists.txt file in the same folder. You can use these objects to define multiple build configurations and conveniently switch between them in the IDE.
+The `configurations` array contains all the configurations for a CMake project. See [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) for more information about the pre-defined configurations. You can add any number of pre-defined or custom configurations to the file.
A `configuration` has these properties:
-- `name`: names the configuration.
+
+- `addressSDanitizerEnabled`: if `true` compiles the program with Address Sanitizer (Experimental on Windows). On Linux, compile with -fno-omit-frame-pointer and compiler optimization level -Os or -Oo for best results.
+- `addressSanitizerRuntimeFlags`: runtime flags passed to AddressSanitizer via the ASAN_OPTIONS environment variable. Format: flag1=value:flag2=value2.
+- `buildCommandArgs`: specifies native build switches passed to CMake after --build --. For example, passing -v when using the Ninja generator forces Ninja to output command lines. See [Ninja command line arguments](#ninja) for more information on Ninja commands.
+- `buildRoot`: specifies the directory in which CMake generates build scripts for the chosen generator. Maps to **-DCMAKE_BINARY_DIR** switch and specifies where *CMakeCache.txt* will be created. If the folder does not exist, it is created. Supported macros include `${workspaceRoot}`, `${workspaceHash}`, `${projectFile}`, `${projectDir}`, `${thisFile}`, `${thisFileDir}`, `${name}`, `${generator}`, `${env.VARIABLE}`.
+- `cacheGenerationCommand`: specifies a command line tool and arguments, for example *gencache.bat debug* to generate the cache. The command is run from the shell in the specified environment for the configuration when the user explicitly requests regeneration, or a CMakeLists.txt or CMakeSettings.json file is modified.
+- `cacheRoot`: specifies the path to a CMake cache. This directory should contain an existing *CMakeCache.txt* file.
+- `clangTidyChecks`: comma-separated list of warnings that will be passed to clang-tidy; wildcards are allowed and '-' prefix will remove checks.
+- `cmakeCommandArgs`: specifies additional command-line options passed to CMake when invoked to generate the project files.
+- `cmakeToolchain`: specifies the toolchain file. This is passed to CMake using -DCMAKE_TOOLCHAIN_FILE."
+- `codeAnalysisRuleset`: specifies the ruleset to use when running code analysis. This can be a full path or the file name of a ruleset file installed by Visual Studio.
+- `configurationType`: specifies the build type configuration for the selected generator. May be one of:
+
+ - Debug
+ - Release
+ - MinSizeRel
+ - RelWithDebInfo
+
+- `ctestCommandArgs`: specifies additional command-line options passed to CTest when running the tests."
- `description`: description of this configuration that will appear in menus.
+- `enableClangTidyCodeAnalysis`: use Clang-Tidy for code analysis.
+- `enableMicrosoftCodeAnalysis`: use Microsoft code analysis tools for code analysis.
- `generator`: specifies CMake generator to use for this configuration. May be one of:
**Visual Studio 2019 only:**
@@ -59,35 +62,22 @@ A `configuration` has these properties:
- Unix Makefiles
- Ninja
-Because Ninja is designed for fast build speeds instead of flexibility and function, it is set as the default. However, some CMake projects may be unable to correctly build using Ninja. If this occurs, you can instruct CMake to generate a Visual Studio project instead.
+Because Ninja is designed for fast build speeds instead of flexibility and function, it is set as the default. However, some CMake projects may be unable to correctly build using Ninja. If this occurs, you can instruct CMake to generate Visual Studio projects instead.
-To specify a Visual Studio generator in Visual Studio 2017, open the `CMakeSettings.json` from the main menu by choosing **CMake | Change CMake Settings**. Delete “Ninja” and type “V”. This activates IntelliSense, which enables you to choose the generator you want.
+To specify a Visual Studio generator in Visual Studio 2017, open the from the main menu by choosing **CMake | Change CMake Settings**. Delete "Ninja" and type "V". This activates IntelliSense, which enables you to choose the generator you want.
-To specify a Visual Studio generator in Visual Studio 2019, right-click on the CMakeLists.txt file in **Solution Explorer** and choose **CMake Settings for project** > **Show Advanced Settings** > **CMake Generator**.
+To specify a Visual Studio generator in Visual Studio 2019, right-click on the *CMakeLists.txt* file in **Solution Explorer** and choose **CMake Settings for project** > **Show Advanced Settings** > **CMake Generator**.
-When the active configuration specifies a Visual Studio generator, by default MSBuild.exe is invoked with `-m -v:minimal` arguments. To customize the build, inside the `CMakeSettings.json` file, you can specify additional [MSBuild command line arguments](../build/reference/msbuild-visual-cpp-overview.md) to be passed to the build system via the `buildCommandArgs` property:
+When the active configuration specifies a Visual Studio generator, by default MSBuild.exe is invoked with `-m -v:minimal` arguments. To customize the build, inside the *CMakeSettings.json* file, you can specify additional [MSBuild command line arguments](../build/reference/msbuild-visual-cpp-overview.md) to be passed to the build system via the `buildCommandArgs` property:
```json
"buildCommandArgs": "-m:8 -v:minimal -p:PreferredToolArchitecture=x64"
```
-- `configurationType`: specifies the build type configuration for the selected generator. May be one of:
-
- - Debug
- - Release
- - MinSizeRel
- - RelWithDebInfo
-
-- `inheritEnvironments`: specifies one or more compiler environments that this configuration depends on. May be any custom environment or one of the predefined environments.
-- `buildRoot`: specifies the directory in which CMake generates build scripts for the chosen generator. Maps to **-DCMAKE_BINARY_DIR** switch and specifies where the CMake cache will be created. If the folder does not exist, it is created.Supported macros include `${workspaceRoot}`, `${workspaceHash}`, `${projectFile}`, `${projectDir}`, `${thisFile}`, `${thisFileDir}`, `${name}`, `${generator}`, `${env.VARIABLE}`.
- `installRoot`: specifies the directory in which CMake generates install targets for the chosen generator. Supported macros include `${workspaceRoot}`, `${workspaceHash}`, `${projectFile}`, `${projectDir}`, `${thisFile}`, `${thisFileDir}`, `${name}`, `${generator}`, `${env.VARIABLE}`.
-- `cmakeCommandArgs`: specifies additional command-line options passed to CMake when invoked to generate the cache.
-- `cmakeToolchain`: specifies the toolchain file. This is passed to CMake using -DCMAKE_TOOLCHAIN_FILE."
-- `buildCommandArgs`: specifies native build switches passed to CMake after --build --. For example, passing -v when using the Ninja generator forces Ninja to output command lines. See [Ninja command line arguments](#ninja) for more information on Ninja commands.
-- `ctestCommandArgs`: specifies additional command-line options passed to CTest when running the tests."
-- `codeAnalysisRuleset`: specifies the ruleset to use when running code analysis. This can be a full path or the file name of a ruleset file installed by Visual Studio.
+- `inheritEnvironments`: specifies one or more compiler environments that this configuration depends on. May be any custom environment or one of the predefined environments. For more information, see [Environments](#environments).
- `intelliSenseMode`: specifies the mode used for computing intellisense information". May be one of:
-
+
- windows-msvc-x86
- windows-msvc-x64
- windows-msvc-arm
@@ -108,9 +98,10 @@ When the active configuration specifies a Visual Studio generator, by default MS
- linux-gcc-x64
- linux-gcc-arm"
-- `cacheRoot`: specifies the path to a CMake cache. This directory should contain an existing CMakeCache.txt file.
+- `name`: names the configuration. See [CMake predefined configuration reference](cmake-predefined-configuration-reference.md) for more information about the pre-defined configurations.
+- `wslPath`: the path to the launcher of an instance of Windows Subsystem for Linux.
-### Additional settings for CMake Linux projects.
+### Additional settings for CMake Linux projects
- `remoteMachineName`: specifies the name of the remote Linux machine that hosts CMake, builds, and the debugger. Use the Connection Manager for adding new Linux machines. Supported macros include `${defaultRemoteMachineName}`.
- `remoteCopySourcesOutputVerbosity`: specifies the verbosity level of the source copying operation to the remote machine. May be one of ""Normal", "Verbose", or "Diagnostic".
@@ -121,13 +112,16 @@ When the active configuration specifies a Visual Studio generator, by default MS
- `remoteInstallRoot`: specifies the directory on the remote machine in which CMake generates install targets for the chosen generator. Supported macros include `${workspaceRoot}`, `${workspaceHash}`, `${projectFile}`, `${projectDir}`, `${thisFile}`, `${thisFileDir}`, `${name}`, `${generator}`, and `${env.VARIABLE}` where `VARIABLE` is an environment variable that has been defined at the system, user, or session level.
- `remoteCopySources`: A `boolean` that specifies whether Visual Studio should copy source files to the remote machine. The default is true. Set to false if you manage file synchronization yourself.
- `remoteCopyBuildOutput`: A `boolean` that specifies whether to copy the build outputs from the remote system.
+- `remoteCopyAdditionalIncludeDirectories`: Additional include directories to be copied from the remote machine to support IntelliSense. Format as "/path1;/path2...".
+- `remoteCopyExcludeDirectories`: Include directories NOT to copy from the remote machine. Format as "/path1;/path2...".
+- `remoteCopyUseCompilerDefaults`: Specifies whether to use the compiler's default defines and include paths for IntelliSense. Should only be false if the compilers in use to not support gcc-style arguments.
- `rsyncCommandArgs`: specifies a set of additional command-line options passed to rsync.
- `remoteCopySourcesExclusionList`: A `array` that specifies a list of paths to be excluded when copying source files`: a path can be the name of a file/directory, or a path relative to root of the copy. Wildcards \\\"*\\\" and \\\"?\\\" can be used for glob pattern matching.
- `cmakeExecutable`: specifies the full path to the CMake program executable, including the file name and extension.
-- `remotePreGenerateCommand`: specifies the command to run before running CMake to parse the CMakeLists.txt file.
+- `remotePreGenerateCommand`: specifies the command to run before running CMake to parse the *CMakeLists.txt* file.
- `remotePrebuildCommand`: specifies the command to run on the remote machine before building.
- `remotePostbuildCommand`: specifies the command to run on the remote machine after building.
-- `variables`: contains a name-value pair of CMake variables that will get passed as **-D** *_name_=_value_* to CMake. If your CMake project build instructions specify the addition of any variables directly to the CMake cache file, it is recommended that you add them here instead. The following example shows how to specify the name-value pairs for the 14.14.26428 MSVC toolset:
+- `variables`: contains a name-value pair of CMake variables that will get passed as **-D** *_name_=_value_* to CMake. If your CMake project build instructions specify the addition of any variables directly to the *CMakeCache.txt* file, it is recommended that you add them here instead. The following example shows how to specify the name-value pairs for the 14.14.26428 MSVC toolset:
```json
"variables": [
@@ -144,26 +138,41 @@ When the active configuration specifies a Visual Studio generator, by default MS
]
```
-Note that if you do not define the `"type"`, the "STRING" type will be assumed by default.
+Note that if you do not define the `"type"`, the `"STRING"` type will be assumed by default.
+- `remoteCopyOptimizations`: **Visual Studio 2019 version 16.5 or later** properties for controlling source copy to the remote target. Optimizations are enabled by default. Includes `remoteCopyUseOptimizations`, `rsyncSingleDirectoryCommandArgs`, and `remoteCopySourcesMaxSmallChange`.
-## Environment variables
+## Environments
-`CMakeSettings.json` also supports consuming environment variables in any of its properties mentioned above. The syntax to use is `${env.FOO}` to expand the environment variable %FOO%.
+An *environment* encapsulates the environment variables that are set in the process that Visual Studio uses to invoke cmake.exe. For MSVC projects, the variables are those that are set in a [developer command prompt](building-on-the-command-line.md) for a specific platform. For example, the `msvc_x64_x64` environment is the same as running the **Developer Command Prompt for VS 2017** or **Developer Command Prompt for VS 2019** with the **-arch=amd64 -host_arch=amd64** arguments. You can use the `env.{}` syntax in *CMakeSettings.json* to reference the individual environment variables, for example to construct paths to folders. The following predefined environments are provided:
-You also have access to built-in macros inside this file:
+- linux_arm: Target ARM Linux remotely.
+- linux_x64: Target x64 Linux remotely.
+- linux_x86: Target x86 Linux remotely.
+- msvc_arm: Target ARM Windows with the MSVC compiler.
+- msvc_arm_x64: Target ARM Windows with the 64-bit MSVC compiler.
+- msvc_arm64: Target ARM64 Windows with the MSVC compiler.
+- msvc_arm64_x64: Target ARM64 Windows with the 64-bit MSVC compiler.
+- msvc_x64: Target x64 Windows with the MSVC compiler.
+- msvc_x64_x64: Target x64 Windows with the 64-bit MSVC compiler.
+- msvc_x86: Target x86 Windows with the MSVC compiler.
+- msvc_x86_x64: Target x86 Windows with the 64-bit MSVC compiler.
-- `${workspaceRoot}` – provides the full path of the workspace folder
-- `${workspaceHash}` – hash of workspace location; useful for creating a unique identifier for the current workspace (for example, to use in folder paths)
-- `${projectFile}` – the full path of the root CMakeLists.txt file
-- `${projectDir}` – the full path of the folder of the root CMakeLists.txt file
-- `${thisFile}` – the full path of the `CMakeSettings.json` file
-- `${name}` – the name of the configuration
-- `${generator}` – the name of the CMake generator used in this configuration
+### Accessing environment variables from CMakeLists.txt
+From a CMakeLists.txt file, all environment variables are referenced by the syntax `$ENV{variable_name}`. To see the available variables for an environment, open the corresponding command prompt and type `SET`. Some of the information in environment variables is also available through CMake system introspection variables, but you may find it more convenient to use the environment variable. For example, the MSVC compiler version or Windows SDK version are easily retrieved through the environment variables.
### Custom environment variables
-In `CMakeSettings.json`, you can define custom environment variables globally or per-configuration in the **environments** property. The following example defines one global variable, **BuildDir**, which is inherited in both the x86-Debug and x64-Debug configurations. Each configuration uses the variable to specify the value for the **buildRoot** property for that configuration. Note also how each configuration uses the **inheritEnvironments** property to specify a variable that applies only to that configuration.
+In `CMakeSettings.json`, you can define custom environment variables globally or per-configuration in the `environments` array. A custom environment is a convenient way to group a set of properties that you can use in place of a predefined environment, or to extend or modify a predefined environment. Each item in the `environments` array consists of:
+
+- `namespace`: names the environment so that its variables can be referenced from a configuration in the form `namespace.variable`. The default environment object is called `env` and is populated with certain system environment variables including `%USERPROFILE%`.
+- `environment`: uniquely identifies this group of variables. Allows the group to be inherited later in an `inheritEnvironments` entry.
+- `groupPriority`: An integer that specifies the priority of these variables when evaluating them. Higher number items are evaluated first.
+- `inheritEnvironments`: An array of values that specify the set of environments that are inherited by this group. This feature enables you to inherit default environments and create custom environment variables that are passed to CMake.exe when it runs.
+
+**Visual Studio 2019 version 16.4 and later:** Debug targets are automatically launched with the environment you specify in *CMakeSettings.json*. You can override or add environment variables on a per-target or per-task basis in [launch.vs.json](launch-vs-schema-reference-cpp.md) and [tasks.vs.json](tasks-vs-json-schema-reference-cpp.md).
+
+The following example defines one global variable, **BuildDir**, which is inherited in both the x86-Debug and x64-Debug configurations. Each configuration uses the variable to specify the value for the **buildRoot** property for that configuration. Note also how each configuration uses the **inheritEnvironments** property to specify a variable that applies only to that configuration.
```json
{
@@ -231,7 +240,7 @@ In the next example, the x86-Debug configuration defines its own value for the *
"generator": "Ninja",
"configurationType": "Debug",
"inheritEnvironments": [ "msvc_x64" ],
- // Since this configuration doesn’t modify BuildDir, it inherits
+ // Since this configuration doesn't modify BuildDir, it inherits
// from the one defined globally.
"buildRoot": "${env.BuildDir}\\${name}"
}
@@ -239,6 +248,20 @@ In the next example, the x86-Debug configuration defines its own value for the *
}
```
+## Macros
+
+The following macros can be used in *CMakeSettings.json*:
+
+- `${workspaceRoot}` – the full path of the workspace folder
+- `${workspaceHash}` – hash of workspace location; useful for creating a unique identifier for the current workspace (for example, to use in folder paths)
+- `${projectFile}` – the full path of the root CMakeLists.txt file
+- `${projectDir}` – the full path of the folder of the root CMakeLists.txt file
+- `${thisFile}` – the full path of the `CMakeSettings.json` file
+- `${name}` – the name of the configuration
+- `${generator}` – the name of the CMake generator used in this configuration
+
+All references to macros and environment variables in *CMakeSettings.json* are expanded before being passed to the cmake.exe command line.
+
## Ninja command line arguments
If targets are unspecified, builds the 'default' target.
@@ -263,6 +286,4 @@ usage: ninja [options] [targets...]
| -t TOOL | run a subtool (use -t list to list subtools). terminates top-level options; further flags are passed to the tool|
| -w FLAG | adjust warnings (use -w list to list warnings)|
-
-
-
+::: moniker-end
diff --git a/docs/build/common-visual-cpp-arm-migration-issues.md b/docs/build/common-visual-cpp-arm-migration-issues.md
index 7205db4a6c..eef65953c1 100644
--- a/docs/build/common-visual-cpp-arm-migration-issues.md
+++ b/docs/build/common-visual-cpp-arm-migration-issues.md
@@ -52,7 +52,7 @@ On the ARM architecture, parameters from the variable arguments list that are pa
```C
// notice that a 64-bit integer is passed to the function, but '%d' is used to read it.
-// on x86 and x64 this may work for small values because %d will “parse” the low-32 bits of the argument.
+// on x86 and x64 this may work for small values because %d will "parse" the low-32 bits of the argument.
// on ARM the calling convention will align the 64-bit value and the code will print a random value
printf("%d\n", 1LL);
```
@@ -88,7 +88,7 @@ And if there's a dependency between `operator->(memory_handle)` and `operator*(p
The MSVC compiler supports two different interpretations of the `volatile` storage qualifier that you can specify by using compiler switches. The [/volatile:ms](reference/volatile-volatile-keyword-interpretation.md) switch selects the Microsoft extended volatile semantics that guarantee strong ordering, as has been the traditional case for x86 and x64 because of the strong memory model on those architectures. The [/volatile:iso](reference/volatile-volatile-keyword-interpretation.md) switch selects the strict C++ standard volatile semantics that don't guarantee strong ordering.
-On the ARM architecture, the default is **/volatile:iso** because ARM processors have a weakly ordered memory model, and because ARM software doesn’t have a legacy of relying on the extended semantics of **/volatile:ms** and doesn't usually have to interface with software that does. However, it's still sometimes convenient or even required to compile an ARM program to use the extended semantics. For example, it may be too costly to port a program to use the ISO C++ semantics, or driver software might have to adhere to the traditional semantics to function correctly. In these cases, you can use the **/volatile:ms** switch; however, to recreate the traditional volatile semantics on ARM targets, the compiler must insert memory barriers around each read or write of a `volatile` variable to enforce strong ordering, which can have a negative impact on performance.
+On the ARM architecture, the default is **/volatile:iso** because ARM processors have a weakly ordered memory model, and because ARM software doesn't have a legacy of relying on the extended semantics of **/volatile:ms** and doesn't usually have to interface with software that does. However, it's still sometimes convenient or even required to compile an ARM program to use the extended semantics. For example, it may be too costly to port a program to use the ISO C++ semantics, or driver software might have to adhere to the traditional semantics to function correctly. In these cases, you can use the **/volatile:ms** switch; however, to recreate the traditional volatile semantics on ARM targets, the compiler must insert memory barriers around each read or write of a `volatile` variable to enforce strong ordering, which can have a negative impact on performance.
On the x86 and x64 architectures, the default is **/volatile:ms** because much of the software that has already been created for these architectures by using MSVC relies on them. When you compile x86 and x64 programs, you can specify the **/volatile:iso** switch to help avoid unnecessary reliance on the traditional volatile semantics, and to promote portability.
diff --git a/docs/build/configure-cmake-debugging-sessions.md b/docs/build/configure-cmake-debugging-sessions.md
index 22e001dcab..0f5d061c87 100644
--- a/docs/build/configure-cmake-debugging-sessions.md
+++ b/docs/build/configure-cmake-debugging-sessions.md
@@ -1,19 +1,40 @@
---
title: "Configure CMake debugging sessions in Visual Studio"
-ms.date: "03/21/2019"
+description: "Describes how to use Visual Studio to configure CMake debugger settings"
+ms.date: "01/13/2020"
helpviewer_keywords: ["CMake debugging"]
---
# Configure CMake debugging sessions
+::: moniker range="vs-2015"
+
+Native CMake support is available in Visual Studio 2017 and later.
+
+::: moniker-end
+
+::: moniker range=">=vs-2017"
+
All executable CMake targets are shown in the **Startup Item** dropdown in the **General** toolbar. To start a debugging session, just select one and launch the debugger.
![CMake startup item dropdown](media/cmake-startup-item-dropdown.png "CMake startup item dropdown")
-You can also start a debug session from the CMake menus.
+You can also start a debug session from Solution Explorer. First, switch to **CMake Targets View** in the **Solution Explorer** window.
+
+![CMake targets view button](media/cmake-targets-view.png "CMake Targets View menu item")
+
+Then, right-click on any executable and select **Debug** or **Debug and Launch Settings**. **Debug** automatically starts debugging the selected target, based on your active configuration. **Debug and Launch Settings** opens the *launch.vs.json* file and adds a new debug configuration for the selected target.
## Customize debugger settings
-To customize the debugger settings for any executable CMake target in your project, right-click on the specific CMakeLists.txt file and select **Debug and Launch Settings**. (Or select a target in **Targets View** in **Solution Explorer**.) When you select a CMake target in the submenu, a file called **launch.vs.json** is created. This file is pre-populated with information about the CMake target you have selected and allows you to specify additional parameters such as program arguments or debugger type. To reference any key in a **CMakeSettings.json** file, preface it with `cmake.` in **launch.vs.json**. The following example shows a simple **launch.vs.json** file that pulls in the value of the `remoteCopySources` key in the **CMakeSettings.json** file for the currently selected configuration:
+You can customize the debugger settings for any executable CMake target in your project in a file called *launch.vs.json*. There are three entry points to this file:
+
+- Select **Debug > Debug and Launch Settings for ${activeDebugTarget}** from the main menu to edit the debug configuration specific to your active debug target. If you don't have an active target selected, this option will be grayed out.
+
+- Navigate to **Targets View** in Solution Explorer. Then, right-click on a debug target and select **Debug and Launch Settings** to edit the debug configuration specific to your selected target.
+
+- Right-click on a root CMakeLists.txt and select **Debug and Launch Settings** to open the **Select a Debugger** dialog box. The dialog allows you to add any debug configuration, but you must manually specify the CMake target to invoke via the `projectTarget` property.
+
+To reference any key in a *CMakeSettings.json* file, preface it with `cmake.` in *launch.vs.json*. The following example shows a simple *launch.vs.json* file that pulls in the value of the `remoteCopySources` key in the *CMakeSettings.json* file for the currently selected configuration:
```json
{
@@ -31,40 +52,141 @@ To customize the debugger settings for any executable CMake target in your proje
}
```
-As soon as you save the **launch.vs.json** file, an entry is created in the **Startup Item** dropdown with the new name. By editing the **launch.vs.json** file, you can create as many debug configurations as you like for any number of CMake targets.
+When you save the *launch.vs.json* file, Visual Studio creates an entry for the new name in the **Startup Item** dropdown. You can edit the *launch.vs.json* file to create multiple debug configurations, for any number of CMake targets.
+
+## Launch.vs.json reference
+
+There are many *launch.vs.json* properties to support all your debugging scenarios. The following properties are common to all debug configurations, both remote and local:
+
+- `projectTarget`: Specifies the CMake target to invoke when building the project. Visual Studio autopopulates this property if you enter *launch.vs.json* from **Debug > Debug and Launch Settings for ${activeDebugTarget}** or **Targets View**.
+
+- `program`: Full path to the program executable on the remote system. You can use the macro `${debugInfo.fullTargetPath}` here.
-## Support for CMakeSettings variables
+- `args`: Command-line arguments passed to the program to debug.
- **Launch.vs.json** supports variables that are declared in **CMakeSettings.json** (see below) and that are applicable to the currently-selected configuration. It also has a key named `currentDir`, which sets the current directory of the launching app for a local project:
+## Launch.vs.json reference for remote Linux projects
+
+The following properties are specific to **remote debug configurations**. You can also [execute custom gdb commands](https://github.com/microsoft/MIEngine/wiki/Executing-custom-gdb-lldb-commands) to send commands directly to the underlying debugger, and [enable MIEngine logging](https://github.com/microsoft/MIEngine/wiki/Logging) to see what commands get sent to gdb, what output gdb returns, and how long each command takes.
+
+- `cwd`: Current working directory for finding dependencies and other files on the remote machine. The macro `${debugInfo.defaultWorkingDirectory}` can be used. The default value is the remote workspace root unless overridden in *CMakeLists.txt*. This property is only used for remote configurations; `currentDir` is used to set the current directory of the launching app for a local project.
+
+- `environment`: Additional environment variables to add to the environment for the program with this syntax:
```json
-{
- "type": "default",
- "project": "CMakeLists.txt",
- "projectTarget": "CMakeHelloWorld1.exe (C:\\Users\\satyan\\CMakeBuilds\\Test\\Debug\\CMakeHelloWorld1.exe)",
- "name": "CMakeHelloWorld1.exe (C:\\Users\\satyan\\CMakeBuilds\\Test\\Debug\\CMakeHelloWorld1.exe)",
- "currentDir": "${env.USERPROFILE}\\CMakeBuilds\\${workspaceHash}"
-}
+ "environment": [
+ {
+ "name": "ENV1",
+ "value": "envvalue1"
+ },
+ {
+ "name": "ENV2",
+ "value": "envvalue2"
+ }
+ ]
```
-When you run the app, the value of `currentDir` is something similar to
+- `pipeArgs`: Command-line arguments passed to the pipe program to configure the connection. The pipe program is used to relay standard input/output between Visual Studio and gdb. The command `${debuggerCommand}` launches gdb on the remote system, and can be modified to:
-```cmd
-C:\Users\satyan\7f14809a-2626-873e-952e-cdf038211175\
-```
+ - Export the value of the environment variable DISPLAY on your Linux system. In the following example, this value is `:1`.
-The key 'cwd' sets the current directory of the launching app for a remote project. The default value is '${debugInfo.defaultWorkingDirectory}' which evaluates to
+ ```json
+ "pipeArgs": [
+ "/s",
+ "${debugInfo.remoteMachineId}",
+ "/p",
+ "${debugInfo.parentProcessId}",
+ "/c",
+ "export DISPLAY=:1;${debuggerCommand}",
+ "--tty=${debugInfo.tty}"
+ ],
+ ```
-```cmd
-/var/tmp/src/bfc6f7f4-4f0f-8b35-80d7-9198fa973fb9/Linux-Debug
-```
+ - Run a script before the execution of gdb. Ensure execute permissions are set on your script.
+
+ ```json
+ "pipeArgs": [
+ "/s",
+ "${debugInfo.remoteMachineId}",
+ "/p",
+ "${debugInfo.parentProcessId}",
+ "/c",
+ "/path/to/script.sh;${debuggerCommand}",
+ "--tty=${debugInfo.tty}"
+ ],
+ ```
+
+- `stopOnEntry`: A boolean that specifies whether to break as soon as the process is launched. The default is false.
+
+- `visualizerFile`: A [.natvis file](/visualstudio/debugger/create-custom-views-of-native-objects) to use when debugging this process. This option is incompatible with gdb pretty printing. Also set `showDisplayString` when you set this property.
+
+- `showDisplayString`: A boolean that enables the display string when a `visualizerFile` is specified. Setting this option to `true` can cause slower performance during debugging.
+
+- `setupCommands`: One or more gdb command(s) to execute, to set up the underlying debugger.
+
+- `externalConsole`: A boolean that specifies whether a console is launched for the debuggee.
+
+- `miDebuggerPath`: The full path to gdb. When unspecified, Visual Studio searches PATH first for the debugger.
+
+::: moniker-end
+
+::: moniker range="vs-2017"
+
+- `remoteMachineName`: The remote Linux system that hosts gdb and the program to debug.
+
+::: moniker-end
+
+::: moniker range="vs-2019"
+
+The following properties can be used to separate your **remote build system** from your **remote debug system**. For more information, see [Specify different machines for building and debugging](../linux/deploy-run-and-debug-your-linux-project.md#cmake-projects).
+
+- `remoteMachineName`: The remote Linux system that hosts gdb and the program to debug. This entry doesn't need to match the remote Linux system used for build specified in *CMakeSettings.json*. Press **Ctrl+Space** to view a list of all remote connections stored in the [Connection Manager](../linux/connect-to-your-remote-linux-computer.md).
+
+- `disableDeploy`: Indicates whether build/debug separation is disabled. When enabled, this feature allows build and debug to occur on two separate machines.
+
+- `deployDirectory`: The directory on the remote debug machine (specified by `remoteMachineName`) that the executable will be copied to.
+
+- `deploy`: An array of advanced deployment settings. You only need to configure these settings when you want more granular control over the deployment process. By default, only the files necessary for the process to debug will be deployed to the remote debug machine.
+
+ - `sourceMachine`: The machine from which the file or directory will be copied. Press **Ctrl+Space** to view a list of all the remote connections stored in the Connection Manager.
+
+ - `targetMachine`: The machine to which the file or directory will be copied. Press **Ctrl+Space** to view a list of all the remote connections stored in the Connection Manager.
+
+ - `sourcePath`: The file or directory location on `sourceMachine`.
+
+ - `targetPath`: The file or directory location on `targetMachine`.
+
+ - `deploymentType`: A description of the deployment type. `LocalRemote` and `RemoteRemote` are supported. `LocalRemote` means copying from the local file system to the remote system specified by `remoteMachineName` in *launch.vs.json*. `RemoteRemote` means copying from the remote build system specified in *CMakeSettings.json* to the different remote system specified in *launch.vs.json*.
+
+ - `executable`: Indicates whether the deployed file is an executable.
+
+::: moniker-end
+
+::: moniker range=">=vs-2017"
+
+## Attach to a remote process
+
+You can attach to a process running on your Linux system by setting `processId` to the Process ID to attach the debugger to. For more information, see [Troubleshoot attaching to processes using GDB](https://github.com/Microsoft/MIEngine/wiki/Troubleshoot-attaching-to-processes-using-GDB).
+
+::: moniker-end
+
+::: moniker range="vs-2019"
+
+## Debug on Linux using gdbserver
+
+Visual Studio 2019 version 16.5 Preview 1 or later supports the remote debugging of CMake projects with gdbserver. For more information, see [debugging Linux CMake projects with gdbserver](https://devblogs.microsoft.com/cppblog/debugging-linux-cmake-projects-with-gdbserver/).
+
+::: moniker-end
+
+::: moniker range=">=vs-2017"
## See also
-[CMake Projects in Visual Studio](cmake-projects-in-visual-studio.md)
-[Configure a Linux CMake project](../linux/cmake-linux-project.md)
-[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)
-[Customize CMake build settings](customize-cmake-settings.md)
-[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)
-[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)
-[CMake predefined configuration reference](cmake-predefined-configuration-reference.md)
+[CMake projects in Visual Studio](cmake-projects-in-visual-studio.md)\
+[Configure a Linux CMake project](../linux/cmake-linux-project.md)\
+[Connect to your remote Linux computer](../linux/connect-to-your-remote-linux-computer.md)\
+[Customize CMake build settings](customize-cmake-settings.md)\
+[Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)\
+[Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)\
+[CMake predefined configuration reference](cmake-predefined-configuration-reference.md)
+
+::: moniker-end
diff --git a/docs/build/configuring-programs-for-arm-processors-visual-cpp.md b/docs/build/configuring-programs-for-arm-processors-visual-cpp.md
index b91fdeb364..037276498c 100644
--- a/docs/build/configuring-programs-for-arm-processors-visual-cpp.md
+++ b/docs/build/configuring-programs-for-arm-processors-visual-cpp.md
@@ -9,22 +9,25 @@ This section of the documentation contains information about how to use the MSVC
## In This Section
-[Overview of ARM ABI Conventions](overview-of-arm-abi-conventions.md)
+[Overview of ARM ABI conventions](overview-of-arm-abi-conventions.md)\
Describes the application binary interface used by Windows on ARM for register usage, calling conventions and exception handling.
-[Overview of ARM64 ABI Conventions](arm64-windows-abi-conventions.md)
+[Overview of ARM64 ABI conventions](arm64-windows-abi-conventions.md)\
Describes the application binary interface used by Windows on ARM64 for register usage, calling conventions and exception handling.
-[Common MSVC ARM Migration Issues](common-visual-cpp-arm-migration-issues.md)
+[Common MSVC ARM migration issues](common-visual-cpp-arm-migration-issues.md)\
Describes C++ code elements that are commonly assumed to be portable across architectures, but which produce different results for ARM than for x86 and x64.
-[ARM Exception Handling](arm-exception-handling.md)
+[ARM exception handling](arm-exception-handling.md)\
Describes the encoding scheme for stack unwinding during structured exception handling in Windows on ARM.
-[ARM64 Exception Handling](arm64-exception-handling.md)
+[ARM64 exception handling](arm64-exception-handling.md)\
Describes the encoding scheme for stack unwinding during structured exception handling in Windows on ARM64.
## Related Sections
-[ARM Intrinsics](../intrinsics/arm-intrinsics.md)
+[ARM intrinsics](../intrinsics/arm-intrinsics.md)\
Describes compiler intrinsics for processors that use the ARM architecture.
+
+[ARM64 intrinsics](../intrinsics/arm-intrinsics.md)\
+Describes compiler intrinsics for processors that use the ARM64 architecture.
diff --git a/docs/build/cppproperties-schema-reference.md b/docs/build/cppproperties-schema-reference.md
index 167823b9af..95714fd00f 100644
--- a/docs/build/cppproperties-schema-reference.md
+++ b/docs/build/cppproperties-schema-reference.md
@@ -1,12 +1,12 @@
---
-title: "CppProperties.json schema reference"
+title: "CppProperties.json reference"
ms.date: "08/09/2019"
helpviewer_keywords: ["CppProperties.json file [C++]"]
---
-# CppProperties.json schema reference
+# CppProperties.json reference
-Open Folder projects that don't use CMake can store project configuration settings for IntelliSense in a *CppProperties.json* file. (CMake projects use a [CMakeSettings.json](customize-cmake-settings.md) file.) A configuration consists of name/value pairs and defines #include paths, compiler switches, and other parameters. See [Open Folder projects for C++](open-folder-projects-cpp.md) for more information about how to add configurations in an Open Folder project.
+Open Folder projects that don't use CMake can store project configuration settings for IntelliSense in a *CppProperties.json* file. (CMake projects use a [CMakeSettings.json](customize-cmake-settings.md) file.) A configuration consists of name/value pairs and defines #include paths, compiler switches, and other parameters. See [Open Folder projects for C++](open-folder-projects-cpp.md) for more information about how to add configurations in an Open Folder project. The following sections summarize the various settings. For a complete description of the schema, navigate to *CppProperties_schema.json*, whose full path is given at the top of the code editor when *CppProperties.json* is open.
## Configuration properties
@@ -81,7 +81,9 @@ When the Linux workload is installed, the following environments are available f
You can optionally use the `environments` property to define sets of variables in *CppProperties.json* either globally or per-configuration. These variables behave like environment variables in the context of an Open Folder project and can be accessed with the ${env.\} syntax from *tasks.vs.json* and *launch.vs.json* after they are defined here. However, they are not necessarily set as actual environment variables in any command prompt that Visual Studio uses internally.
-When you consume an environment, then you have to specify it in the `inheritsEnvironments` property even if the environment is defined as part of the same configuration; the `environment` property specifies the name of the environment. The following example shows a sample configuration for enabling IntelliSense for GCC in an MSYS2 installation. Note how the configuration both defines and inherits the `mingw_64` environment, and how the `includePath` property can access the `INCLUDE` variable.
+**Visual Studio 2019 version 16.4 and later:** Configuration-specific variables defined in *CppProperties.json* are automatically picked up by debug targets and tasks without the need to set `inheritEnvironments`. Debug targets are launched automatically with the environment you specify in *CppProperties.json*.
+
+**Visual Studio 2019 version 16.3 and earlier:** When you consume an environment, then you have to specify it in the `inheritsEnvironments` property even if the environment is defined as part of the same configuration; the `environment` property specifies the name of the environment. The following example shows a sample configuration for enabling IntelliSense for GCC in an MSYS2 installation. Note how the configuration both defines and inherits the `mingw_64` environment, and how the `includePath` property can access the `INCLUDE` variable.
```json
"configurations": [
diff --git a/docs/build/create-reusable-property-configurations.md b/docs/build/create-reusable-property-configurations.md
index 1b2ac2099f..18086bb676 100644
--- a/docs/build/create-reusable-property-configurations.md
+++ b/docs/build/create-reusable-property-configurations.md
@@ -29,12 +29,12 @@ Properties in a property sheet are overridden if the same property is set direct
You can import a property sheet as often as required. Multiple projects in a solution can inherit settings from the same property sheet, and a project can have multiple sheets. A property sheet itself can inherit settings from another property sheet.
-You can also create one property sheet for multiple configurations. To do this, create a property sheet for each configuration, open the shortcut menu for one of them, choose **Add Existing Property Sheet**, and then add the other sheets. However, if you use one common property sheet, be aware that when you set a property, it gets set for all configurations that the sheet applies to, and that the IDE doesn’t show which projects or other property sheets are inheriting from a given property sheet.
+You can also create one property sheet for multiple configurations. To do this, create a property sheet for each configuration, open the shortcut menu for one of them, choose **Add Existing Property Sheet**, and then add the other sheets. However, if you use one common property sheet, be aware that when you set a property, it gets set for all configurations that the sheet applies to, and that the IDE doesn't show which projects or other property sheets are inheriting from a given property sheet.
In large solutions that will have many projects, it can be useful to create a property sheet at the solution level. When you add a project to the solution, use **Property Manager** to add that property sheet to the project. If required at the project level, you can add a new property sheet to set project-specific values.
> [!IMPORTANT]
-> A .props file by default does not participate in source control because it isn’t created as a project item. You can manually add the file as a solution item if you want to include it in source control.
+> A .props file by default does not participate in source control because it isn't created as a project item. You can manually add the file as a solution item if you want to include it in source control.
#### To create a property sheet
diff --git a/docs/build/creating-a-resource-only-dll.md b/docs/build/creating-a-resource-only-dll.md
index 70bf9df13f..9d5f601d3b 100644
--- a/docs/build/creating-a-resource-only-dll.md
+++ b/docs/build/creating-a-resource-only-dll.md
@@ -1,26 +1,53 @@
---
-title: "Creating a Resource-Only DLL"
-ms.date: "11/04/2016"
+title: "Creating a resource-only DLL"
+description: "How to create a resource-only DLL in Visual Studio."
+ms.date: "01/27/2020"
helpviewer_keywords: ["resource-only DLLs [C++], creating", "DLLs [C++], creating"]
ms.assetid: e6b1d4da-7275-467f-a58c-a0a8a5835199
+no-loc: [noentry]
---
-# Creating a Resource-Only DLL
+# Creating a resource-only DLL
-A resource-only DLL is a DLL that contains nothing but resources, such as icons, bitmaps, strings, and dialog boxes. Using a resource-only DLL is a good way to share the same set of resources among multiple programs. It is also a good way to provide an application with resources localized for multiple languages (see [Localized Resources in MFC Applications: Satellite DLLs](localized-resources-in-mfc-applications-satellite-dlls.md)).
+A resource-only DLL is a DLL that contains nothing but resources, such as icons, bitmaps, strings, and dialog boxes. Using a resource-only DLL is a good way to share the same set of resources among multiple programs. It's also a good way to provide an application with resources localized for multiple languages. For more information, see [Localized resources in MFC applications: Satellite DLLs](localized-resources-in-mfc-applications-satellite-dlls.md).
-To create a resource-only DLL, you create a new Win32 DLL (non-MFC) project and add your resources to the project.
+## Create a resource-only DLL
-- Select Win32 Project in the **New Project** dialog box and specify a DLL project type in the Win32 Project Wizard.
+To create a resource-only DLL, you create a new Windows DLL (non-MFC) project, and add your resources to the project:
-- Create a new resource script that contains the resources (such as a string or a menu) for the DLL and save the .rc file.
+::: moniker range="vs-2015"
-- On the **Project** menu, click **Add Existing Item**, and then insert the new .rc file into the project.
+1. Select **Win32 Project** in the **New Project** dialog box. Enter the project and solution names, and choose **OK**.
-- Specify the [/NOENTRY](reference/noentry-no-entry-point.md) linker option. /NOENTRY prevents the linker from linking a reference to `_main` into the DLL; this option is required to create a resource-only DLL.
+1. In the **Win32 Application Wizard**, select **Application Settings**. Choose an **Application type** of **DLL**. Under **Additional options**, select **Empty project**. Choose **Finish** to create your project.
-- Build the DLL.
+1. Create a new resource script that contains the resources for the DLL (such as a string or a menu). Save the `.rc` file.
-The application that uses the resource-only DLL should call [LoadLibrary](loadlibrary-and-afxloadlibrary.md) to explicitly link to the DLL. To access the resources, call the generic functions `FindResource` and `LoadResource`, which work on any kind of resource, or call one of the following resource-specific functions:
+1. On the **Project** menu, select **Add Existing Item**, and then insert the new `.rc` file into the project.
+
+1. Specify the [/NOENTRY](reference/noentry-no-entry-point.md) linker option. `/NOENTRY` prevents the linker from linking a reference to `_main` into the DLL; this option is required to create a resource-only DLL.
+
+1. Build the DLL.
+
+::: moniker-end
+::: moniker range=">=vs-2017"
+
+1. Select **Windows Desktop Wizard** in the **New Project** dialog box and choose **Next**. In the **Configure your new project** page, enter the project and solution names, and choose **Create**.
+
+1. In the **Windows Desktop Project** dialog box, select an **Application type** of **Dynamic Link Library**. Under **Additional options**, select **Empty project**. Choose **OK** to create your project.
+
+1. Create a new resource script that contains the resources for the DLL (such as a string or a menu). Save the `.rc` file.
+
+1. On the **Project** menu, select **Add Existing Item**, and then insert the new `.rc` file into the project.
+
+1. Specify the [/NOENTRY](reference/noentry-no-entry-point.md) linker option. `/NOENTRY` prevents the linker from linking a reference to `_main` into the DLL; this option is required to create a resource-only DLL.
+
+1. Build the DLL.
+
+::: moniker-end
+
+## Use a resource-only DLL
+
+The application that uses the resource-only DLL should call [LoadLibraryEx](loadlibrary-and-afxloadlibrary.md) or a related function to explicitly link to the DLL. To access the resources, call the generic functions `FindResource` and `LoadResource`, which work on any kind of resource. Or, call one of the following resource-specific functions:
- `FormatMessage`
@@ -36,9 +63,9 @@ The application that uses the resource-only DLL should call [LoadLibrary](loadli
- `LoadString`
-The application should call `FreeLibrary` when it is finished using the resources.
+The application should call `FreeLibrary` when it's finished using the resources.
## See also
-[Working with Resource Files](../windows/working-with-resource-files.md)
+[Working with Resource Files](../windows/working-with-resource-files.md)\
[Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md)
diff --git a/docs/build/creating-and-managing-visual-cpp-projects.md b/docs/build/creating-and-managing-visual-cpp-projects.md
index 4d413c1a6a..6fd7b639c6 100644
--- a/docs/build/creating-and-managing-visual-cpp-projects.md
+++ b/docs/build/creating-and-managing-visual-cpp-projects.md
@@ -1,12 +1,12 @@
---
title: "Visual Studio Projects - C++"
-ms.date: "12/12/2018"
+ms.date: "10/25/2019"
helpviewer_keywords: ["ATL projects, creating", "Visual Studio C++ projects, creating", "projects [C++], creating", "Visual Studio C++ projects", "ATL projects"]
ms.assetid: 11003cd8-9046-4630-a189-a32bf3b88047
---
# Visual Studio projects - C++
-A *Visual Studio project* is a project based on the MSBuild build system. MSBuild is the native build system for Visual Studio and is generally the best build system to use for UWP apps as well as Desktop applications that use MFC or ATL libraries, COM components, and other Windows-specific programs. MSBuild is tightly integrated with Visual Studio, but you can also use it from the command line.
+A *Visual Studio project* is a project based on the MSBuild build system. MSBuild is the native build system for Visual Studio and is generally the best build system to use for Windows-specific programs. MSBuild is tightly integrated with Visual Studio, but you can also use it from the command line. For cross-platform projects, or projects that use open-source libraries, we recommend using [CMake projects in Visual Studio](cmake-projects-in-visual-studio.md) in Visual Studio 2017 and later. For information about upgrading MSBuild projects from older versions of Visual Studio, see the [Microsoft C++ Porting and Upgrading Guide](../porting/visual-cpp-porting-and-upgrading-guide.md).
## Create a project
@@ -76,3 +76,4 @@ How to create a new Visual Studio project from a loose collection of source file
## See also
[Projects and build systems](projects-and-build-systems-cpp.md)
+[Microsoft C++ Porting and Upgrading Guide](../porting/visual-cpp-porting-and-upgrading-guide.md)
diff --git a/docs/build/creating-precompiled-header-files.md b/docs/build/creating-precompiled-header-files.md
index 0bd1907b19..2cf5914f71 100644
--- a/docs/build/creating-precompiled-header-files.md
+++ b/docs/build/creating-precompiled-header-files.md
@@ -1,6 +1,6 @@
---
title: "Precompiled Header Files"
-ms.date: "08/19/2019"
+ms.date: "10/24/2019"
helpviewer_keywords: ["precompiled header files, creating", "PCH files, creating", "cl.exe compiler, precompiling code", ".pch files, creating"]
ms.assetid: e2cdb404-a517-4189-9771-c869c660cb1b
---
@@ -169,9 +169,9 @@ UNSTABLEHDRS = unstable.h
CLFLAGS = /c /W3
# List all linker options common to both debug and final
# versions of your code here:
-LINKFLAGS = /NOD /ONERROR:NOEXE
+LINKFLAGS = /nologo
!IF "$(DEBUG)" == "1"
-CLFLAGS = /D_DEBUG $(CLFLAGS) /Od /Zi /f
+CLFLAGS = /D_DEBUG $(CLFLAGS) /Od /Zi
LINKFLAGS = $(LINKFLAGS) /COD
LIBS = slibce
!ELSE
@@ -247,7 +247,7 @@ void savetime( void );
//
#ifndef __UNSTABLE_H
#define __UNSTABLE_H
-#include
+#include
void notstable( void );
#endif // __UNSTABLE_H
```
@@ -260,6 +260,7 @@ void notstable( void );
#include"another.h"
#include"stable.h"
#include"unstable.h"
+using namespace std;
// The following code represents code that is deemed stable and
// not likely to change. The associated interface code is
// precompiled. In this example, the header files STABLE.H and
diff --git a/docs/build/dlls-in-visual-cpp.md b/docs/build/dlls-in-visual-cpp.md
index 433358029b..99b9239f5e 100644
--- a/docs/build/dlls-in-visual-cpp.md
+++ b/docs/build/dlls-in-visual-cpp.md
@@ -1,26 +1,29 @@
---
title: "Create C/C++ DLLs in Visual Studio"
-ms.date: "07/18/2019"
+description: "An overview of why and how to create and use DLLs with C++ in Visual Studio."
+ms.date: "01/27/2020"
helpviewer_keywords: ["executable files [C++]", "dynamic linking [C++]", "linking [C++], dynamic vs. static", "DLLs [C++]", "DLLs [C++], about DLLs"]
ms.assetid: 5216bca4-51e2-466b-b221-0e3e776056f0
---
# Create C/C++ DLLs in Visual Studio
-In Windows, a dynamic-link library (DLL) is a kind of executable file that acts as a shared library of functions and resources. Dynamic linking is an operating system capability that enables an executable to call functions or use resources stored in a separate file. These functions and resources can be compiled and deployed separately from the executables that use them. A DLL is not a stand-alone executable; it runs in the context of an application that calls it. The operating system can load the DLL into an application's memory space when the application is loaded (*implicit linking*), or on demand at runtime (*explicit linking*). DLLs also make it easy to share functions and resources across executables. Multiple applications can access the contents of a single copy of a DLL in memory at the same time.
+In Windows, a dynamic-link library (DLL) is a kind of executable file that acts as a shared library of functions and resources. Dynamic linking is an operating system capability. It enables an executable to call functions or use resources stored in a separate file. These functions and resources can be compiled and deployed separately from the executables that use them.
+
+A DLL isn't a stand-alone executable. DLLs run in the context of the applications that call them. The operating system loads the DLL into an application's memory space. It's done either when the application is loaded (*implicit linking*), or on demand at runtime (*explicit linking*). DLLs also make it easy to share functions and resources across executables. Multiple applications can access the contents of a single copy of a DLL in memory at the same time.
## Differences between dynamic linking and static linking
-Static linking copies all the object code in a static library into the executables that use it when they are built. Dynamic linking includes only the information needed by Windows at run time to locate and load the DLL that contains a data item or function. When you create a DLL, you also create an import library that contains this information. When you build an executable that calls the DLL, the linker uses the exported symbols in the import library to store this information for the Windows loader. When the loader loads a DLL, the DLL is mapped into the memory space of your application. If present, a special function in the DLL, `DllMain`, is called to perform any initialization the DLL requires.
+Static linking copies all the object code in a static library into the executables that use it when they're built. Dynamic linking includes only the information needed by Windows at run time to locate and load the DLL that contains a data item or function. When you create a DLL, you also create an import library that contains this information. When you build an executable that calls the DLL, the linker uses the exported symbols in the import library to store this information for the Windows loader. When the loader loads a DLL, the DLL is mapped into the memory space of your application. If present, a special function in the DLL, `DllMain`, is called to do any initialization the DLL requires.
## Differences between applications and DLLs
-Even though DLLs and applications are both executable modules, they differ in several ways. To the end user, the most obvious difference is that DLLs are not applications that can be directly executed. From the system's point of view, there are two fundamental differences between applications and DLLs:
+Even though DLLs and applications are both executable modules, they differ in several ways. The most obvious difference is that you can't run a DLL. From the system's point of view, there are two fundamental differences between applications and DLLs:
-- An application can have multiple instances of itself running in the system simultaneously, whereas a DLL can have only one instance.
+- An application can have multiple instances of itself running in the system simultaneously. A DLL can have only one instance.
-- An application can be loaded as a process that can own things such as a stack, threads of execution, global memory, file handles, and a message queue, but a DLL cannot.
+- An application can be loaded as a process. It can own things such as a stack, threads of execution, global memory, file handles, and a message queue. A DLL can't own these things.
@@ -30,87 +33,87 @@ Dynamic linking to code and resources offers several advantages over static link
- Dynamic linking saves memory and reduces swapping. Many processes can use a DLL simultaneously, sharing a single copy of the read-only parts of a DLL in memory. In contrast, every application that is built by using a statically linked library has a complete copy of the library code that Windows must load into memory.
-- Dynamic linking saves disk space and bandwidth. Many applications can share a single copy of the DLL on disk. In contrast, each application built by using a static link library has the library code linked into its executable image, which uses more disk space and takes more bandwidth to transfer.
+- Dynamic linking saves disk space and bandwidth. Many applications can share a single copy of the DLL on disk. In contrast, each application built by using a static link library has the library code linked into its executable image. That uses more disk space, and takes more bandwidth to transfer.
-- Maintenance, security fixes and upgrades can be easier. When your applications use common functions in a DLL, then as long as the function arguments and return values do not change, you can implement bug fixes and deploy updates to the DLL. When DLLs are updated, the applications that use them do not need to be recompiled or relinked, and they make use of the new DLL as soon as it's deployed. In contrast, fixes you make in statically linked object code require you to relink and redeploy every application that uses it.
+- Maintenance, security fixes, and upgrades can be easier. When your applications use common functions in a DLL, you can implement bug fixes and deploy updates to the DLL. When DLLs are updated, the applications that use them don't need to be recompiled or relinked. They can make use of the new DLL as soon as it's deployed. In contrast, when you make fixes in statically linked object code, you must relink and redeploy every application that uses it.
-- You can use DLLs to provide after-market support. For example, a display driver DLL can be modified to support a display that was not available when the application was shipped.
+- You can use DLLs to provide after-market support. For example, a display driver DLL can be modified to support a display that wasn't available when the application was shipped.
-- You can use explicit linking to discover and load DLLS at runtime, such as application extensions that add new functionality to your app without rebuilding or redeploying it.
+- You can use explicit linking to discover and load DLLs at runtime. For example, application extensions that add new functionality to your app without rebuilding or redeploying it.
-- Dynamic linking makes it easier to support applications written in different programming languages. Programs written in different programming languages can call the same DLL function as long as the programs follow the function's calling convention. The programs and the DLL function must be compatible in the following ways: the order in which the function expects its arguments to be pushed onto the stack, whether the function or the application is responsible for cleaning up the stack, and whether any arguments are passed in registers.
+- Dynamic linking makes it easier to support applications written in different programming languages. Programs written in different programming languages can call the same DLL function as long as the programs follow the function's calling convention. The programs and the DLL function must be compatible in the following ways: The order in which the function expects its arguments to be pushed onto the stack. Whether the function or the application is responsible for cleaning up the stack. And, whether any arguments are passed in registers.
-- Dynamic linking provides a mechanism to extend the MFC library classes. You can derive classes from the existing MFC classes and place them in an MFC extension DLL for use by MFC applications.
+- Dynamic linking provides a mechanism to extend the Microsoft Foundation Class library (MFC) classes. You can derive classes from the existing MFC classes and place them in an MFC extension DLL for use by MFC applications.
-- Dynamic linking makes creation of international versions of your application easier. DLLs are a convenient way to supply locale-specific resources, which make it much easier to create international versions of an application. Instead of shipping many localized versions of your application, you can place the strings and images for each language in a separate resource DLL, and then your application can load the appropriate resources for that locale at runtime.
+- Dynamic linking makes creation of international versions of your application easier. DLLs are a convenient way to supply locale-specific resources, which make it much easier to create international versions of an application. Instead of shipping many localized versions of your application, you can place the strings and images for each language in a separate resource DLL. Then your application can load the appropriate resources for that locale at runtime.
-A potential disadvantage to using DLLs is that the application is not self-contained; it depends on the existence of a separate DLL module that you must deploy or verify yourself as part of your installation.
+A potential disadvantage to using DLLs is that the application isn't self-contained. It depends on the existence of a separate DLL module: one that you must deploy or verify yourself as part of your installation.
## More information on how to create and use DLLs
-The following topics provide detailed information about how to create C/C++ DLLs in Visual Studio.
+The following articles provide detailed information about how to create C/C++ DLLs in Visual Studio.
-[Walkthrough: Creating and Using a Dynamic Link Library (C++)](walkthrough-creating-and-using-a-dynamic-link-library-cpp.md)
+[Walkthrough: Creating and using a dynamic link library (C++)](walkthrough-creating-and-using-a-dynamic-link-library-cpp.md)\
Describes how to create and use a DLL using Visual Studio.
-[Kinds of DLLs](kinds-of-dlls.md)
+[Kinds of DLLs](kinds-of-dlls.md)\
Provides information about the different kinds of DLLs that can be built.
-[DLL Frequently Asked Questions](dll-frequently-asked-questions.md)
+[DLL frequently asked questions](dll-frequently-asked-questions.md)\
Provides answers to frequently asked questions about DLLs.
-[Link an executable to a DLL](linking-an-executable-to-a-dll.md)
+[Link an executable to a DLL](linking-an-executable-to-a-dll.md)\
Describes explicit and implicit linking to a DLL.
-[Initialize a DLL](run-time-library-behavior.md#initializing-a-dll)
+[Initialize a DLL](run-time-library-behavior.md#initializing-a-dll)\
Discusses DLL initialization code that must execute when your DLL loads.
-[DLLs and Visual C++ run-time library behavior](run-time-library-behavior.md)
-Describes how the run-time library performs the DLL startup sequence.
+[DLLs and Visual C++ run-time library behavior](run-time-library-behavior.md)\
+Describes the run-time library DLL startup sequence.
-[LoadLibrary and AfxLoadLibrary](loadlibrary-and-afxloadlibrary.md)
-Discusses using **LoadLibrary** and `AfxLoadLibrary` to explicitly link to a DLL at runtime.
+[LoadLibrary and AfxLoadLibrary](loadlibrary-and-afxloadlibrary.md)\
+Discusses using `LoadLibrary` and `AfxLoadLibrary` to explicitly link to a DLL at runtime.
-[GetProcAddress](getprocaddress.md)
-Discusses using **GetProcAddress** to obtain the address of an exported function in the DLL.
+[GetProcAddress](getprocaddress.md)\
+Discusses using `GetProcAddress` to obtain the address of an exported function in the DLL.
-[FreeLibrary and AfxFreeLibrary](freelibrary-and-afxfreelibrary.md)
-Discusses using **FreeLibrary** and `AfxFreeLibrary` when the DLL module is no longer needed.
+[FreeLibrary and AfxFreeLibrary](freelibrary-and-afxfreelibrary.md)\
+Discusses using `FreeLibrary` and `AfxFreeLibrary` when the DLL module is no longer needed.
-[Dynamic-Link Library Search Order](/windows/win32/Dlls/dynamic-link-library-search-order)
+[Dynamic-Link Library Search Order](/windows/win32/Dlls/dynamic-link-library-search-order)\
Describes the search path that the Windows operating system uses to locate a DLL on the system.
-[Module States of a Regular MFC DLL Dynamically Linked to MFC](module-states-of-a-regular-dll-dynamically-linked-to-mfc.md)
+[Module states of a regular MFC DLL dynamically linked to MFC](module-states-of-a-regular-dll-dynamically-linked-to-mfc.md)\
Describes the module states of a regular MFC DLL dynamically linked to MFC.
-[MFC extension DLLs](extension-dlls-overview.md)
-Explains DLLs that typically implements reusable classes derived from the existing Microsoft Foundation Class Library classes.
+[MFC extension DLLs](extension-dlls-overview.md)\
+Explains DLLs that typically implement reusable classes derived from the existing MFC classes.
-[Creating a Resource-Only DLL](creating-a-resource-only-dll.md)
+[Creating a resource-only DLL](creating-a-resource-only-dll.md)\
Discusses a resource-only DLL, which contains nothing but resources, such as icons, bitmaps, strings, and dialog boxes.
-[Localized Resources in MFC Applications: Satellite DLLs](localized-resources-in-mfc-applications-satellite-dlls.md)
+[Localized resources in MFC Applications: Satellite DLLs](localized-resources-in-mfc-applications-satellite-dlls.md)\
Provides enhanced support for satellite DLLs, a feature that helps in creating applications localized for multiple languages.
-[Importing and Exporting](importing-and-exporting.md)
+[Importing and exporting](importing-and-exporting.md)\
Describes importing public symbols into an application or exporting functions from a DLL
-[Active Technology and DLLs](active-technology-and-dlls.md)
+[Active technology and DLLs](active-technology-and-dlls.md)\
Allows object servers to be implemented inside a DLL.
-[Automation in a DLL](automation-in-a-dll.md)
+[Automation in a DLL](automation-in-a-dll.md)\
Describes what the Automation option in the MFC DLL Wizard supplies.
-[Naming Conventions for MFC DLLs](../mfc/mfc-library-versions.md#mfc-static-library-naming-conventions)
+[Naming conventions for MFC DLLs](../mfc/mfc-library-versions.md#mfc-static-library-naming-conventions)\
Discusses how the DLLs and libraries included in MFC follow a structured naming convention.
-[Calling DLL functions from Visual Basic Applications](calling-dll-functions-from-visual-basic-applications.md)
+[Calling DLL functions from Visual Basic applications](calling-dll-functions-from-visual-basic-applications.md)\
Describes how to call DLL functions from Visual Basic applications.
## Related Sections
-[Using MFC as Part of a DLL](../mfc/tn011-using-mfc-as-part-of-a-dll.md)
+[Using MFC as part of a DLL](../mfc/tn011-using-mfc-as-part-of-a-dll.md)\
Describes regular MFC DLLs, which let you use the MFC library as part of a Windows dynamic-link library.
-[DLL Version of MFC](../mfc/tn033-dll-version-of-mfc.md)
+[DLL version of MFC](../mfc/tn033-dll-version-of-mfc.md)\
Describes how you can use the MFCxx.dll and MFCxxD.dll (where x is the MFC version number) shared dynamic-link libraries with MFC applications and MFC extension DLLs.
diff --git a/docs/build/exception-handling-x64.md b/docs/build/exception-handling-x64.md
index f9e913bb25..d4ed52fa27 100644
--- a/docs/build/exception-handling-x64.md
+++ b/docs/build/exception-handling-x64.md
@@ -1,6 +1,6 @@
---
title: "x64 exception handling"
-ms.date: "12/17/2018"
+ms.date: "10/14/2019"
helpviewer_keywords: ["C++ exception handling, x64", "exception handling, x64"]
ms.assetid: 41fecd2d-3717-4643-b21c-65dcd2f18c93
---
@@ -22,11 +22,11 @@ Table-based exception handling requires a table entry for all functions that all
|ULONG|Function end address|
|ULONG|Unwind info address|
-The RUNTIME_FUNCTION structure must be DWORD aligned in memory. All addresses are image relative, that is, they are 32-bit offsets from the starting address of the image that contains the function table entry. These entries are sorted, and put in the .pdata section of a PE32+ image. For dynamically generated functions [JIT compilers], the runtime to support these functions must either use RtlInstallFunctionTableCallback or RtlAddFunctionTable to provide this information to the operating system. Failure to do so will result in unreliable exception handling and debugging of processes.
+The RUNTIME_FUNCTION structure must be DWORD aligned in memory. All addresses are image relative, that is, they're 32-bit offsets from the starting address of the image that contains the function table entry. These entries are sorted, and put in the .pdata section of a PE32+ image. For dynamically generated functions [JIT compilers], the runtime to support these functions must either use RtlInstallFunctionTableCallback or RtlAddFunctionTable to provide this information to the operating system. Failure to do so will result in unreliable exception handling and debugging of processes.
### struct UNWIND_INFO
-The unwind data info structure is used to record the effects a function has on the stack pointer and where the nonvolatile registers are saved on the stack:
+The unwind data info structure is used to record the effects a function has on the stack pointer, and where the nonvolatile registers are saved on the stack:
|||
|-|-|
@@ -68,7 +68,7 @@ The UNWIND_INFO structure must be DWORD aligned in memory. Here's what each fiel
|-|-|
|`UNW_FLAG_EHANDLER`| The function has an exception handler that should be called when looking for functions that need to examine exceptions.|
|`UNW_FLAG_UHANDLER`| The function has a termination handler that should be called when unwinding an exception.|
- |`UNW_FLAG_CHAININFO`| This unwind info structure is not the primary one for the procedure. Instead, the chained unwind info entry is the contents of a previous RUNTIME_FUNCTION entry. For informations, see [Chained unwind info structures](#chained-unwind-info-structures). If this flag is set, then the UNW_FLAG_EHANDLER and UNW_FLAG_UHANDLER flags must be cleared. Also, the frame register and fixed-stack allocation fields must have the same values as in the primary unwind info.|
+ |`UNW_FLAG_CHAININFO`| This unwind info structure is not the primary one for the procedure. Instead, the chained unwind info entry is the contents of a previous RUNTIME_FUNCTION entry. For information, see [Chained unwind info structures](#chained-unwind-info-structures). If this flag is set, then the UNW_FLAG_EHANDLER and UNW_FLAG_UHANDLER flags must be cleared. Also, the frame register and fixed-stack allocation fields must have the same values as in the primary unwind info.|
- **Size of prolog**
@@ -84,7 +84,7 @@ The UNWIND_INFO structure must be DWORD aligned in memory. Here's what each fiel
- **Frame register offset (scaled)**
- If the frame register field is nonzero, this field is the scaled offset from RSP that is applied to the FP register when it's established. The actual FP register is set to RSP + 16 \* this number, allowing offsets from 0 to 240. This offset permits pointing the FP register into the middle of the local stack allocation for dynamic stack frames, allowing better code density through shorter instructions (more instructions can use the 8-bit signed offset form).
+ If the frame register field is nonzero, this field is the scaled offset from RSP that is applied to the FP register when it's established. The actual FP register is set to RSP + 16 \* this number, allowing offsets from 0 to 240. This offset permits pointing the FP register into the middle of the local stack allocation for dynamic stack frames, allowing better code density through shorter instructions. (That is, more instructions can use the 8-bit signed offset form.)
- **Unwind codes array**
@@ -100,7 +100,7 @@ The UNWIND_INFO structure must be DWORD aligned in memory. Here's what each fiel
- **Chained Unwind Info**
- If flag UNW_FLAG_CHAININFO is set then the UNWIND_INFO structure ends with three UWORDs. These UWORDs represent the RUNTIME_FUNCTION information for the function of the chained unwind.
+ If flag UNW_FLAG_CHAININFO is set, then the UNWIND_INFO structure ends with three UWORDs. These UWORDs represent the RUNTIME_FUNCTION information for the function of the chained unwind.
### struct UNWIND_CODE
@@ -116,11 +116,11 @@ The array is sorted by descending order of offset in the prolog.
#### Offset in prolog
-Offset from the beginning of the prolog of the end of the instruction that performs this operation, plus 1 (that is, the offset of the start of the next instruction).
+Offset (from the beginning of the prolog) of the end of the instruction that performs this operation, plus 1 (that is, the offset of the start of the next instruction).
#### Unwind operation code
-Note: Certain operation codes require an unsigned offset to a value in the local stack frame. This offset is from the start, that is, the lowest address of the fixed stack allocation. If the Frame Register field in the UNWIND_INFO is zero, this offset is from RSP. If the Frame Register field is nonzero, this is the offset from where RSP was located when the FP register was established. This equals the FP register minus the FP register offset (16 \* the scaled frame register offset in the UNWIND_INFO). If an FP register is used, then any unwind code taking an offset must only be used after the FP register is established in the prolog.
+Note: Certain operation codes require an unsigned offset to a value in the local stack frame. This offset is from the start, that is, the lowest address of the fixed stack allocation. If the Frame Register field in the UNWIND_INFO is zero, this offset is from RSP. If the Frame Register field is nonzero, this offset is from where RSP was located when the FP register was established. It equals the FP register minus the FP register offset (16 \* the scaled frame register offset in the UNWIND_INFO). If an FP register is used, then any unwind code taking an offset must only be used after the FP register is established in the prolog.
For all opcodes except `UWOP_SAVE_XMM128` and `UWOP_SAVE_XMM128_FAR`, the offset is always a multiple of 8, because all stack values of interest are stored on 8-byte boundaries (the stack itself is always 16-byte aligned). For operation codes that take a short offset (less than 512K), the final USHORT in the nodes for this code holds the offset divided by 8. For operation codes that take a long offset (512K <= offset < 4GB), the final two USHORT nodes for this code hold the offset (in little-endian format).
@@ -150,7 +150,7 @@ The unwind operation code is one of these values:
- `UWOP_SET_FPREG` (3) 1 node
- Establish the frame pointer register by setting the register to some offset of the current RSP. The offset is equal to the Frame Register offset (scaled) field in the UNWIND_INFO \* 16, allowing offsets from 0 to 240. The use of an offset permits establishing a frame pointer that points to the middle of the fixed stack allocation, helping code density by allowing more accesses to use short instruction forms. The operation info field is reserved and should not be used.
+ Establish the frame pointer register by setting the register to some offset of the current RSP. The offset is equal to the Frame Register offset (scaled) field in the UNWIND_INFO \* 16, allowing offsets from 0 to 240. The use of an offset permits establishing a frame pointer that points to the middle of the fixed stack allocation, helping code density by allowing more accesses to use short instruction forms. The operation info field is reserved and shouldn't be used.
- `UWOP_SAVE_NONVOL` (4) 2 nodes
@@ -170,7 +170,7 @@ The unwind operation code is one of these values:
- `UWOP_PUSH_MACHFRAME` (10) 1 node
- Push a machine frame. This is used to record the effect of a hardware interrupt or exception. There are two forms. If the operation info equals 0, one of these frames has been pushed on the stack:
+ Push a machine frame. This unwind code is used to record the effect of a hardware interrupt or exception. There are two forms. If the operation info equals 0, one of these frames has been pushed on the stack:
|||
|-|-|
@@ -191,7 +191,7 @@ The unwind operation code is one of these values:
|RSP+8|RIP|
|RSP|Error code|
- This unwind code always appears in a dummy prolog, which is never actually executed but instead appears before the real entry point of an interrupt routine, and exists only to provide a place to simulate the push of a machine frame. `UWOP_PUSH_MACHFRAME` records that simulation, which indicates the machine has conceptually done this operation:
+ This unwind code always appears in a dummy prolog, which is never actually executed, but instead appears before the real entry point of an interrupt routine, and exists only to provide a place to simulate the push of a machine frame. `UWOP_PUSH_MACHFRAME` records that simulation, which indicates the machine has conceptually done this operation:
1. Pop RIP return address from top of stack into *Temp*
@@ -235,9 +235,9 @@ PRUNTIME_FUNCTION primaryUwindInfo = (PRUNTIME_FUNCTION)&(unwindInfo->UnwindCode
Chained info is useful in two situations. First, it can be used for noncontiguous code segments. By using chained info, you can reduce the size of the required unwind information, because you do not have to duplicate the unwind codes array from the primary unwind info.
-You can also use chained info to group volatile register saves. The compiler may delay saving some volatile registers until it is outside of the function entry prolog. You can record this by having primary unwind info for the portion of the function before the grouped code, and then setting up chained info with a non-zero size of prolog, where the unwind codes in the chained info reflect saves of the nonvolatile registers. In that case, the unwind codes are all instances of UWOP_SAVE_NONVOL. A grouping that saves nonvolatile registers by using a PUSH or modifies the RSP register by using an additional fixed stack allocation is not supported.
+You can also use chained info to group volatile register saves. The compiler may delay saving some volatile registers until it is outside of the function entry prolog. You can record them by having primary unwind info for the portion of the function before the grouped code, and then setting up chained info with a non-zero size of prolog, where the unwind codes in the chained info reflect saves of the nonvolatile registers. In that case, the unwind codes are all instances of UWOP_SAVE_NONVOL. A grouping that saves nonvolatile registers by using a PUSH or modifies the RSP register by using an additional fixed stack allocation is not supported.
-An UNWIND_INFO item that has UNW_FLAG_CHAININFO set can contain a RUNTIME_FUNCTION entry whose UNWIND_INFO item also has UNW_FLAG_CHAININFO set, sometimes called *multiple shrink-wrapping*. Eventually, the chained unwind info pointers arrive at an UNWIND_INFO item that has UNW_FLAG_CHAININFO cleared; this is the primary UNWIND_INFO item, which points to the actual procedure entry point.
+An UNWIND_INFO item that has UNW_FLAG_CHAININFO set can contain a RUNTIME_FUNCTION entry whose UNWIND_INFO item also has UNW_FLAG_CHAININFO set, sometimes called *multiple shrink-wrapping*. Eventually, the chained unwind info pointers arrive at an UNWIND_INFO item that has UNW_FLAG_CHAININFO cleared. This item is the primary UNWIND_INFO item, which points to the actual procedure entry point.
## Unwind procedure
@@ -249,19 +249,19 @@ The unwind code array is sorted into descending order. When an exception occurs,
1. If a function table entry is found, RIP can lie within three regions: a) in an epilog, b) in the prolog, or c) in code that may be covered by an exception handler.
- - Case a) If the RIP is within an epilog, then control is leaving the function, there can be no exception handler associated with this exception for this function, and the effects of the epilog must be continued to compute the context of the caller function. To determine if the RIP is within an epilog, the code stream from RIP on is examined. If that code stream can be matched to the trailing portion of a legitimate epilog, then it's in an epilog, and the remaining portion of the epilog is simulated, with the context record updated as each instruction is processed. After this, step 1 is repeated.
+ - Case a) If the RIP is within an epilog, then control is leaving the function, there can be no exception handler associated with this exception for this function, and the effects of the epilog must be continued to compute the context of the caller function. To determine if the RIP is within an epilog, the code stream from RIP onward is examined. If that code stream can be matched to the trailing portion of a legitimate epilog, then it's in an epilog, and the remaining portion of the epilog is simulated, with the context record updated as each instruction is processed. After this processing, step 1 is repeated.
- - Case b) If the RIP lies within the prologue, then control has not entered the function, there can be no exception handler associated with this exception for this function, and the effects of the prolog must be undone to compute the context of the caller function. The RIP is within the prolog if the distance from the function start to the RIP is less than or equal to the prolog size encoded in the unwind info. The effects of the prolog are unwound by scanning forward through the unwind codes array for the first entry with an offset less than or equal to the offset of the RIP from the function start, then undoing the effect of all remaining items in the unwind code array. Step 1 is then repeated.
+ - Case b) If the RIP lies within the prologue, then control hasn't entered the function, there can be no exception handler associated with this exception for this function, and the effects of the prolog must be undone to compute the context of the caller function. The RIP is within the prolog if the distance from the function start to the RIP is less than or equal to the prolog size encoded in the unwind info. The effects of the prolog are unwound by scanning forward through the unwind codes array for the first entry with an offset less than or equal to the offset of the RIP from the function start, then undoing the effect of all remaining items in the unwind code array. Step 1 is then repeated.
- - Case c) If the RIP is not within a prolog or epilog and the function has an exception handler (UNW_FLAG_EHANDLER is set), then the language-specific handler is called. The handler scans its data and calls filter functions as appropriate. The language-specific handler can return that the exception was handled or that the search is to be continued. It can also initiate an unwind directly.
+ - Case c) If the RIP isn't within a prolog or epilog, and the function has an exception handler (UNW_FLAG_EHANDLER is set), then the language-specific handler is called. The handler scans its data and calls filter functions as appropriate. The language-specific handler can return that the exception was handled or that the search is to be continued. It can also initiate an unwind directly.
1. If the language-specific handler returns a handled status, then execution is continued using the original context record.
-1. If there's no language-specific handler or the handler returns a "continue search" status, then the context record must be unwound to the state of the caller. This is accomplished by processing all of the unwind code array elements, undoing the effect of each. Step 1 is then repeated.
+1. If there's no language-specific handler or the handler returns a "continue search" status, then the context record must be unwound to the state of the caller. It's done by processing all of the unwind code array elements, undoing the effect of each. Step 1 is then repeated.
-When chained unwind info is involved, these basic steps are still followed. The only difference is that, while walking the unwind code array to unwind a prolog’s effects, once the end of the array is reached, it's then linked to the parent unwind info and the entire unwind code array found there is walked. This linking continues until arriving at an unwind info without the UNW_CHAINED_INFO flag, and then it finishes walking its unwind code array.
+When chained unwind info is involved, these basic steps are still followed. The only difference is that, while walking the unwind code array to unwind a prolog's effects, once the end of the array is reached, it's then linked to the parent unwind info and the entire unwind code array found there is walked. This linking continues until arriving at an unwind info without the UNW_CHAINED_INFO flag, and then it finishes walking its unwind code array.
-The smallest set of unwind data is 8 bytes. This would represent a function that only allocated 128 bytes of stack or less, and possibly saved one nonvolatile register. This is also the size of a chained unwind info structure for a zero-length prolog with no unwind codes.
+The smallest set of unwind data is 8 bytes. This would represent a function that only allocated 128 bytes of stack or less, and possibly saved one nonvolatile register. It's also the size of a chained unwind info structure for a zero-length prolog with no unwind codes.
## Language-specific handler
@@ -305,7 +305,7 @@ typedef struct _DISPATCHER_CONTEXT {
**EstablisherFrame** is the address of the base of the fixed stack allocation for this function.
-**TargetIp** Supplies an optional instruction address that specifies the continuation address of the unwind. This address is ignored if **EstablisherFrame** is not specified.
+**TargetIp** Supplies an optional instruction address that specifies the continuation address of the unwind. This address is ignored if **EstablisherFrame** isn't specified.
**ContextRecord** points to the exception context, for use by the system exception dispatch/unwind code.
@@ -315,18 +315,18 @@ typedef struct _DISPATCHER_CONTEXT {
## Unwind helpers for MASM
-In order to write proper assembly routines, there's a set of pseudo-operations that can be used in parallel with the actual assembly instructions to create the appropriate .pdata and .xdata. There's also a set of macros that provide simplified use of the pseudo-operations for their most common uses.
+In order to write proper assembly routines, there's a set of pseudo-operations that can be used in parallel with the actual assembly instructions to create the appropriate .pdata and .xdata. And, there's a set of macros that provide simplified use of the pseudo-operations for their most common uses.
### Raw pseudo-operations
|Pseudo operation|Description|
|-|-|
|PROC FRAME \[:*ehandler*]|Causes MASM to generate a function table entry in .pdata and unwind information in .xdata for a function's structured exception handling unwind behavior. If *ehandler* is present, this proc is entered in the .xdata as the language-specific handler.
When the FRAME attribute is used, it must be followed by an .ENDPROLOG directive. If the function is a leaf function (as defined in [Function types](../build/stack-usage.md#function-types)) the FRAME attribute is unnecessary, as are the remainder of these pseudo-operations.|
-|.PUSHREG *register*|Generates a UWOP_PUSH_NONVOL unwind code entry for the specified register number using the current offset in the prologue.
This should only be used with nonvolatile integer registers. For pushes of volatile registers, use an .ALLOCSTACK 8, instead|
+|.PUSHREG *register*|Generates a UWOP_PUSH_NONVOL unwind code entry for the specified register number using the current offset in the prologue.
Only use it with nonvolatile integer registers. For pushes of volatile registers, use an .ALLOCSTACK 8, instead|
|.SETFRAME *register*, *offset*|Fills in the frame register field and offset in the unwind information using the specified register and offset. The offset must be a multiple of 16 and less than or equal to 240. This directive also generates a UWOP_SET_FPREG unwind code entry for the specified register using the current prologue offset.|
|.ALLOCSTACK *size*|Generates a UWOP_ALLOC_SMALL or a UWOP_ALLOC_LARGE with the specified size for the current offset in the prologue.
The *size* operand must be a multiple of 8.|
-|.SAVEREG *register*, *offset*|Generates either a UWOP_SAVE_NONVOL or a UWOP_SAVE_NONVOL_FAR unwind code entry for the specified register and offset using the current prologue offset. MASM chooses the most efficient encoding.
*offset* must be positive, and a multiple of 8. *offset* is relative to the base of the procedure’s frame, which is generally in RSP, or, if using a frame pointer, the unscaled frame pointer.|
-|.SAVEXMM128 *register*, *offset*|Generates either a UWOP_SAVE_XMM128 or a UWOP_SAVE_XMM128_FAR unwind code entry for the specified XMM register and offset using the current prologue offset. MASM chooses the most efficient encoding.
*offset* must be positive, and a multiple of 16. *offset* is relative to the base of the procedure’s frame, which is generally in RSP, or, if using a frame pointer, the unscaled frame pointer.|
+|.SAVEREG *register*, *offset*|Generates either a UWOP_SAVE_NONVOL or a UWOP_SAVE_NONVOL_FAR unwind code entry for the specified register and offset using the current prologue offset. MASM chooses the most efficient encoding.
*offset* must be positive, and a multiple of 8. *offset* is relative to the base of the procedure's frame, which is generally in RSP, or, if using a frame pointer, the unscaled frame pointer.|
+|.SAVEXMM128 *register*, *offset*|Generates either a UWOP_SAVE_XMM128 or a UWOP_SAVE_XMM128_FAR unwind code entry for the specified XMM register and offset using the current prologue offset. MASM chooses the most efficient encoding.
*offset* must be positive, and a multiple of 16. *offset* is relative to the base of the procedure's frame, which is generally in RSP, or, if using a frame pointer, the unscaled frame pointer.|
|.PUSHFRAME \[*code*]|Generates a UWOP_PUSH_MACHFRAME unwind code entry. If the optional *code* is specified, the unwind code entry is given a modifier of 1. Otherwise the modifier is 0.|
|.ENDPROLOG|Signals the end of the prologue declarations. Must occur in the first 255 bytes of the function.|
@@ -353,8 +353,8 @@ sample PROC FRAME
; you can modify the stack pointer outside of the prologue (similar to alloca)
; because we have a frame pointer.
-; if we didn’t have a frame pointer, this would be illegal
-; if we didn’t make this modification,
+; if we didn't have a frame pointer, this would be illegal
+; if we didn't make this modification,
; there would be no need for a frame pointer
sub rsp, 060h
@@ -364,21 +364,23 @@ sample PROC FRAME
mov rax, 0
mov rax, [rax] ; AV!
-; restore the registers that weren’t saved with a push
-; this isn’t part of the official epilog, as described in section 2.5
+; restore the registers that weren't saved with a push
+; this isn't part of the official epilog, as described in section 2.5
movdqa xmm7, [rbp]
mov rsi, [rbp+018h]
mov rdi, [rbp-010h]
-; Here’s the official epilog
+; Here's the official epilog
- lea rsp, [rbp-020h]
+ lea rsp, [rbp+020h] ; deallocate both fixed and dynamic portions of the frame
pop rbp
ret
sample ENDP
```
+For more information about the epilog example, see [Epilog code](prolog-and-epilog.md#epilog-code) in [x64 prolog and epilog](prolog-and-epilog.md).
+
### MASM macros
In order to simplify the use of the [Raw pseudo-operations](#raw-pseudo-operations), there's a set of macros, defined in ksamd64.inc, which can be used to create typical procedure prologues and epilogues.
@@ -388,7 +390,7 @@ In order to simplify the use of the [Raw pseudo-operations](#raw-pseudo-operatio
|alloc_stack(n)|Allocates a stack frame of n bytes (using `sub rsp, n`), and emits the appropriate unwind information (.allocstack n)|
|save_reg *reg*, *loc*|Saves a nonvolatile register *reg* on the stack at RSP offset *loc*, and emits the appropriate unwind information. (.savereg reg, loc)|
|push_reg *reg*|Pushes a nonvolatile register *reg* on the stack, and emits the appropriate unwind information. (.pushreg reg)|
-|rex_push_reg *reg*|Save a nonvolatile register on the stack using a 2 byte push, and emits the appropriate unwind information (.pushreg reg) This should be used if the push is the first instruction in the function to ensure that the function is hot-patchable.|
+|rex_push_reg *reg*|Saves a nonvolatile register on the stack using a 2-byte push, and emits the appropriate unwind information (.pushreg reg). Use this macro if the push is the first instruction in the function, to ensure that the function is hot-patchable.|
|save_xmm128 *reg*, *loc*|Saves a nonvolatile XMM register *reg* on the stack at RSP offset *loc*, and emits the appropriate unwind information (.savexmm128 reg, loc)|
|set_frame *reg*, *offset*|Sets the frame register *reg* to be the RSP + *offset* (using a `mov`, or an `lea`), and emits the appropriate unwind information (.set_frame reg, offset)|
|push_eflags|Pushes the eflags with a `pushfq` instruction, and emits the appropriate unwind information (.alloc_stack 8)|
@@ -396,16 +398,10 @@ In order to simplify the use of the [Raw pseudo-operations](#raw-pseudo-operatio
Here's a sample function prolog with proper usage of the macros:
```MASM
-SkFrame struct
- Fill dq ?; fill to 8 mod 16
- SavedRdi dq ?; saved register RDI
- SavedRsi dq ?; saved register RSI
-SkFrame ends
-
sampleFrame struct
- Filldq?; fill to 8 mod 16
- SavedRdidq?; Saved Register RDI
- SavedRsi dq?; Saved Register RSI
+ Fill dq ?; fill to 8 mod 16
+ SavedRdi dq ?; Saved Register RDI
+ SavedRsi dq ?; Saved Register RSI
sampleFrame ends
sample2 PROC FRAME
@@ -419,7 +415,7 @@ sample2 PROC FRAME
mov rsi, sampleFrame.SavedRsi[rsp]
mov rdi, sampleFrame.SavedRdi[rsp]
-; Here’s the official epilog
+; Here's the official epilog
add rsp, (sizeof sampleFrame)
ret
diff --git a/docs/build/freelibrary-and-afxfreelibrary.md b/docs/build/freelibrary-and-afxfreelibrary.md
index 8e5e39568d..c205e2e991 100644
--- a/docs/build/freelibrary-and-afxfreelibrary.md
+++ b/docs/build/freelibrary-and-afxfreelibrary.md
@@ -7,7 +7,7 @@ ms.assetid: 4a48d290-3971-43e9-8e97-ba656cd0c8f8
---
# FreeLibrary and AfxFreeLibrary
-Processes that explicitly link to a DLL call the [FreeLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-freelibrary) function when the DLL module is no longer needed. This function decrements the module's reference count and, if the reference count is zero, unmaps it from the address space of the process.
+Processes that explicitly link to a DLL call the [FreeLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-freelibrary) function when the DLL module is no longer needed. This function decrements the module's reference count. And, if the reference count is zero, it's unmapped from the address space of the process.
In an MFC application, use [AfxFreeLibrary](../mfc/reference/application-information-and-management.md#afxfreelibrary) instead of `FreeLibrary` to unload an MFC extension DLL. The interface (function prototype) for `AfxFreeLibrary` is the same as `FreeLibrary`.
@@ -25,6 +25,6 @@ In an MFC application, use [AfxFreeLibrary](../mfc/reference/application-informa
## See also
-[Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md)
-[FreeLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-freelibrary)
+[Create C/C++ DLLs in Visual Studio](dlls-in-visual-cpp.md)\
+[FreeLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-freelibrary)\
[AfxFreeLibrary](../mfc/reference/application-information-and-management.md#afxfreelibrary)
diff --git a/docs/build/get-started-linux-cmake.md b/docs/build/get-started-linux-cmake.md
index ed74290c84..e7de3f57e6 100644
--- a/docs/build/get-started-linux-cmake.md
+++ b/docs/build/get-started-linux-cmake.md
@@ -1,181 +1,188 @@
---
title: Create C++ cross-platform projects in Visual Studio
-description: "This tutorial shows how to set up, compile, and debug a C++ open-source CMake project in Visual Studio that targets both Linux and Windows."
-author: mikeblome
+description: "How to set up, compile, and debug a C++ open-source CMake project in Visual Studio that targets both Linux and Windows."
ms.topic: tutorial
-ms.date: "03/05/2019"
+ms.date: "01/08/2020"
---
+# Tutorial: Create C++ cross-platform projects in Visual Studio
-# Tutorial: Create C++ cross-platform projects in Visual Studio
-
-Visual Studio C and C++ development isn't just for Windows anymore. This tutorial shows how to use Visual Studio for C++ cross platform development based on CMake without having to create or generate Visual Studio projects. When you open a folder that contains a CMakeLists.txt file, Visual Studio configures IntelliSense and build settings automatically. You can quickly be editing, building, and debugging your code locally on Windows, and then switch your configuration to do the same on Linux, all from within Visual Studio.
+Visual Studio C and C++ development isn't just for Windows anymore. This tutorial shows how to use Visual Studio for C++ cross platform development on Windows and Linux. It's based on CMake, so you don't have to create or generate Visual Studio projects. When you open a folder that contains a CMakeLists.txt file, Visual Studio configures the IntelliSense and build settings automatically. You can quickly start editing, building, and debugging your code locally on Windows. Then, switch your configuration to do the same on Linux, all from within Visual Studio.
In this tutorial, you learn how to:
> [!div class="checklist"]
> * clone an open-source CMake project from GitHub
-> * open the project in Visual Studio
+> * open the project in Visual Studio
> * build and debug an executable target on Windows
> * add a connection to a Linux machine
> * build and debug the same target on Linux
## Prerequisites
-- Set up Visual Studio for Cross Platform C++ Development
- - First you need to have [Visual Studio installed](https://visualstudio.microsoft.com/vs/). Next, confirm that you have the **Desktop development with C++** and **Linux development with C++ workloads** installed. This minimal install is only 3 GB, depending on your download speed installation shouldn't take more than 10 minutes.
-- Set up a Linux machine for Cross Platform C++ Development
- - Visual Studio doesn't require any specific distribution of Linux. The OS can be running on a physical machine, in a VM, the cloud, or the Windows Subsystem for Linux (WSL). However, for this tutorial a graphical environment is required; therefore WSL isn't recommended because it's intended primarily for command line operations.
- - The tools that Visual Studio requires on the Linux machine are: C++ compilers, GDB, ssh, and zip. On Debian based systems, you can install these dependencies as follows.
-
+* Set up Visual Studio for Cross Platform C++ Development
+ * First, [install Visual Studio](https://visualstudio.microsoft.com/vs/) and choose the **Desktop development with C++** and **Linux development with C++ workloads**. This minimal install is only 3 GB. Depending on your download speed, installation shouldn't take more than 10 minutes.
+
+* Set up a Linux machine for Cross Platform C++ Development
+ * Visual Studio doesn't require any specific distribution of Linux. The OS can be running on a physical machine, in a VM, or in the cloud. You could also use the Windows Subsystem for Linux (WSL). However, for this tutorial a graphical environment is required. WSL isn't recommended here, because it's intended primarily for command-line operations.
+ * Visual Studio requires these tools on the Linux machine: C++ compilers, gdb, ssh, rsync, and zip. On Debian-based systems, you can use this command to install these dependencies:
+
```cmd
- sudo apt install -y openssh-server build-essential gdb zip
+ sudo apt install -y openssh-server build-essential gdb rsync zip
```
- - Visual Studio requires that the Linux machine have a recent version of CMake that has server mode enabled (at least 3.8). Microsoft produces a universal build of CMake that you can install on any Linux distro. We recommend using this build to ensure that you have the latest features. You can get the CMake binaries from [the Microsoft fork of the CMake repo](https://github.com/Microsoft/CMake/releases) on GitHub. Go to that page and download the version that matches your system architecture on your Linux machine, then mark it as an executable:
-
+
+ * Visual Studio requires a recent version of CMake on the Linux machine that has server mode enabled (at least 3.8). Microsoft produces a universal build of CMake that you can install on any Linux distro. We recommend you use this build to ensure that you have the latest features. You can get the CMake binaries from [the Microsoft fork of the CMake repo](https://github.com/Microsoft/CMake/releases) on GitHub. Go to that page and download the version that matches the system architecture on your Linux machine, then mark it as an executable:
+
```cmd
- wget
- chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
+ wget
+ chmod +x cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh
```
- - You can see the options for running the script with `-–help`. We recommend that you use the `–prefix` option to specify installing in the **/usr/local** path because that is the default location where Visual Studio looks for CMake. The following example shows the Linux-x86_64 script. Change that as needed if you are using a different target platform.
-
+
+ * You can see the options for running the script with `-–help`. We recommend that you use the `–prefix` option to specify installing in the **/usr** path, because **/usr/bin** is the default location where Visual Studio looks for CMake. The following example shows the Linux-x86_64 script. Change it as needed if you're using a different target platform.
+
```cmd
- sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr/local
+ sudo ./cmake-3.11.18033000-MSVC_2-Linux-x86_64.sh --skip-license --prefix=/usr
```
-- Git for windows installed on your Windows machine.
-- A GitHub account.
+
+* Git for windows installed on your Windows machine.
+* A GitHub account.
## Clone an open-source CMake project from GitHub
-This tutorial uses the Bullet Physics SDK on GitHub, which provides collision detection and physics simulations for a variety of different applications. It includes sample executable programs that compile and run without having to write additional code. This tutorial doesn't modify any of source code or build scripts. To start, clone the bullet3 repository from GitHub on the machine where you have Visual Studio installed.
+This tutorial uses the Bullet Physics SDK on GitHub. It provides collision detection and physics simulations for many applications. The SDK includes sample executable programs that compile and run without having to write additional code. This tutorial doesn't modify any of the source code or build scripts. To start, clone the *bullet3* repository from GitHub on the machine where you have Visual Studio installed.
```cmd
-
git clone https://github.com/bulletphysics/bullet3.git
-
```
-1. From the Visual Studio main menu, choose **File > Open > CMake** and navigate to the CMakeLists.txt file in the root of the bullet3 repo that you just downloaded.
+1. On the Visual Studio main menu, choose **File > Open > CMake**. Navigate to the CMakeLists.txt file in the root of the bullet3 repo you just downloaded.
![Visual Studio menu for File > Open > CMake](media/cmake-open-cmake.png)
- As soon as you open the folder, your folder structure will be visible in the **Solution Explorer**.
+ As soon as you open the folder, your folder structure becomes visible in the **Solution Explorer**.
![Visual Studio Solution Explorer Folder View](media/cmake-bullet3-solution-explorer.png)
- This view shows you exactly what is on disk, not a logical or filtered view. By default, it doesn't show hidden files.
+ This view shows you exactly what is on disk, not a logical or filtered view. By default, it doesn't show hidden files.
-2. Press the **Show all files** button to see all the files in the folder.
+1. Choose the **Show all files** button to see all the files in the folder.
![Visual Studio Solution Explorer Show All Files button](media/cmake-bullet3-show-all-files.png)
## Switch to targets view
-When you open a folder that uses CMake, Visual Studio automatically generates the CMake cache. This operation might take a few moments, depending on the size of your project.
+When you open a folder that uses CMake, Visual Studio automatically generates the CMake cache. This operation might take a few moments, depending on the size of your project.
1. In the **Output Window**, select **Show output from** and then choose **CMake** to monitor the status of the cache generation process. When the operation is complete, it says "Target info extraction done".
- ![Visual Studio Output window showing output from CMake](media/cmake-bullet3-output-window.png)
+ ![Visual Studio Output window showing output from CMake](media/cmake-bullet3-output-window.png)
+
+ After this operation completes, IntelliSense is configured. You can build the project, and debug the application. Visual Studio now shows a logical view of the solution, based on the targets specified in the CMakeLists files.
+
+1. Use the **Solutions and Folders** button in the **Solution Explorer** to switch to CMake Targets View.
- After this operation completes, IntelliSense is configured, the project can build, and you can debug the application. Visual Studio can now provide a logical view of the solution based on the targets specified in the CMakeLists files.
+ ![Solutions and Folders button in the Solution Explorer to show CMake targets view](media/cmake-bullet3-show-targets.png)
-2. Use the **Solutions and Folders** button in the **Solution Explorer** to switch to CMake Targets View.
+ Here is what that view looks like for the Bullet SDK:
- ![Solutions and Folders button in the Solution Explorer to show CMake targets view](media/cmake-bullet3-show-targets.png)
+ ![Solution Explorer CMake targets view](media/cmake-bullet3-targets-view.png)
- Here is what that view looks like for the Bullet SDK:
+ Targets view provides a more intuitive view of what is in this source base. You can see some targets are libraries and others are executables.
- ![Solution Explorer CMake targets view](media/cmake-bullet3-targets-view.png)
+1. Expand a node in CMake Targets View to see its source code files, wherever those files might be located on disk.
- Targets view provides a more intuitive view of what is in this source base. You can see some targets are libraries and others are executables.
+## Add an explicit Windows x64-Debug configuration
+
+Visual Studio creates a default **x64-Debug** configuration for Windows. Configurations are how Visual Studio understands what platform target it's going to use for CMake. The default configuration isn't represented on disk. When you explicitly add a configuration, Visual Studio creates a file called *CMakeSettings.json*. It's populated with settings for all the configurations you specify.
+
+1. Add a new configuration. Open the **Configuration** drop-down in the toolbar and select **Manage Configurations**.
+
+ ![Manage Configuration drop-down](media/cmake-bullet3-manage-configurations.png)
+
+ The [CMake Settings Editor](customize-cmake-settings.md) opens. Select the green plus sign on the left-hand side of the editor to add a new configuration. The **Add Configuration to CMakeSettings** dialog appears.
+
+ ![Add Configuration to CMakeSettings dialog](media/cmake-bullet3-add-configuration-x64-debug.png)
-3. Expand a node in CMake Targets View to see its source code files, wherever those files might be located on disk.
+ This dialog shows all the configurations included with Visual Studio, plus any custom configurations that you create. If you want to continue to use a **x64-Debug** configuration, that should be the first one you add. Select **x64-Debug**, and then choose the **Select** button. Visual Studio creates the CMakeSettings.json file with a configuration for **x64-Debug**, and saves it to disk. You can use whatever names you like for your configurations by changing the name parameter directly in CMakeSettings.json.
-## Set a breakpoint, build, and run
+## Set a breakpoint, build, and run on Windows
In this step, we'll debug an example program that demonstrates the Bullet Physics library.
-1. In **Solution Explorer**, select AppBasicExampleGui and expand it.
-1. Open the file `BasicExample.cpp`.
-1. Set a breakpoint that will be hit when you click in the running application. The click event is handled in a method within a helper class. To quickly get there:
+1. In **Solution Explorer**, select AppBasicExampleGui and expand it.
- 1. Select `CommonRigidBodyBase` that the struct `BasicExample` is derived from around line 30.
- 1. Right-click and choose **Go to Definition**. Now you are in the header CommonRigidBodyBase.h.
- 1. In the browser view above, your source you should see that you are in the `CommonRigidBodyBase`. To the right, you can select members to examine. Click the drop-down and select `mouseButtonCallback` to go to the definition of that function in the header.
+1. Open the file `BasicExample.cpp`.
- ![Visual Studio member list toolbar](media/cmake-bullet3-member-list-toolbar.png)
+1. Set a breakpoint that gets hit when you click in the running application. The click event is handled in a method within a helper class. To quickly get there:
-1. Place a breakpoint on the first line within this function. This will be hit when you click a mouse button within the window of the application when launched under the Visual Studio debugger.
+ 1. Select `CommonRigidBodyBase` that the struct `BasicExample` is derived from. It's around line 30.
-1. To launch the application, select the launch drop-down with the play icon that says "Select Startup Item" in the toolbar. In the drop-down select AppBasicExampleGui.exe. The executable name now displays on the launch button:
+ 1. Right-click and choose **Go to Definition**. Now you're in the header CommonRigidBodyBase.h.
- ![Visual Studio toolbar launch drop-down for Select Startup Item](media/cmake-bullet3-launch-button.png)
+ 1. In the browser view above your source, you should see that you're in the `CommonRigidBodyBase`. To the right, you can select members to examine. Open the drop-down and select `mouseButtonCallback` to go to the definition of that function in the header.
-5. Press the launch button to build the application and necessary dependencies, then launch it with the Visual Studio debugger attached. After a few moments, the running application appears:
+ ![Visual Studio member list toolbar](media/cmake-bullet3-member-list-toolbar.png)
- ![Visual Studio debugging a Windows application](media/cmake-bullet3-launched.png)
+1. Place a breakpoint on the first line within this function. It gets hit when you click a mouse button within the window of the application, when run under the Visual Studio debugger.
-6. Move your mouse into the application window, then click a button to trigger the breakpoint. This brings Visual Studio back to the foreground with the editor showing the line where execution is paused. You will be able to inspect the application variables, objects, threads, and memory. You can step through your code interactively. You can click **Continue** to let the application resume and exit it normally or cease execution within Visual Studio using the stop button.
+1. To launch the application, select the launch drop-down in the toolbar. It's the one with the green play icon that says "Select Startup Item". In the drop-down, select AppBasicExampleGui.exe. The executable name now displays on the launch button:
-## Add an explicit Windows x64-Debug configuration
+ ![Visual Studio toolbar launch drop-down for Select Startup Item](media/cmake-bullet3-launch-button.png)
-So far, you have been using the default **x64-Debug** configuration for Windows. Configurations are how Visual Studio understands what platform target it's going to use for CMake. The default configuration isn't represented on disk. When you explicitly add a configuration, Visual Studio creates a file called CMakeSettings.json that is populated with settings for all the configurations you specify.
+1. Choose the launch button to build the application and necessary dependencies, then launch it with the Visual Studio debugger attached. After a few moments, the running application appears:
-1. Add a new configuration by clicking the the Configuration drop-down in the toolbar and selecting **Manage Configurations…**
+ ![Visual Studio debugging a Windows application](media/cmake-bullet3-launched.png)
- ![Manage Configuration drop-down](media/cmake-bullet3-manage-configurations.png)
+1. Move your mouse into the application window, then click a button to trigger the breakpoint. The breakpoint brings Visual Studio back to the foreground, and the editor shows the line where execution is paused. You can inspect the application variables, objects, threads, and memory, or step through your code interactively. Choose **Continue** to let the application resume, and then exit it normally. Or, halt execution within Visual Studio by using the stop button.
- The **Add Configuration to CMakeSettings** dialog will appear.
+## Add a Linux configuration and connect to the remote machine
- ![Add Configuration to CMakeSettings dialog](media/cmake-bullet3-add-configuration-x64-debug.png)
+1. Add a Linux configuration. Right-click the CMakeSettings.json file in the **Solution Explorer** view and select **Add Configuration**. You see the same Add Configuration to CMakeSettings dialog as before. Select **Linux-Debug** this time, then save the CMakeSettings.json file (ctrl + s).
- This dialog shows all the configurations that are included with Visual Studio, as well as any custom configurations that you might create. If you want to continue to use the default **x64-Debug** configuration, that should be the first one you add. By adding that configuration, you will be able to switch back and forth between Windows and Linux configurations. Select **x64-Debug** and click **Select**. This creates the CMakeSettings.json file with a configuration for **x64-Debug** and switches Visual Studio to use that configuration instead of the default. You will see the configuration drop-down no longer says "(default)" as part of the name. You can use whatever names you like for your configurations by changing the name parameter directly in CMakeSettings.json.
+1. Select **Linux-Debug** in the configuration drop-down.
-## Add a Linux configuration and connect to the remote machine
+ ![Launch configuration drop-down with X64-Debug and Linux-Debug options](media/cmake-bullet3-linux-configuration-item.png)
-1. Now add a Linux configuration. Right-click the CMakeSettings.json file in the **Solution Explorer** view and select **Add Configuration**. You see the same Add Configuration to CMakeSettings dialog as before. Select **Linux-Debug** this time, then save the CMakeSettings.json file.
-2. Now select **Linux-Debug** in the configuration drop-down.
+ If it's the first time you're connecting to a Linux system, the **Connect to Remote System** dialog appears.
- ![Launch configuration drop-down with X64-Debug and Linux-Debug options](media/cmake-bullet3-linux-configuration-item.png)
+ ![Visual Studio Connect to Remote System dialog](media/cmake-bullet3-connection-manager.png)
- If this is the first time you are connecting to a Linux system, the **Connect to Remote System** dialog will appear.
+ If you've already added a remote connection, you can open this window by navigating to **Tools > Options > Cross Platform > Connection Manager**.
- ![Visual Studio Connect to Remote System dialog](media/cmake-bullet3-connection-manager.png)
+1. Provide the [connection information to your Linux machine](/cpp/linux/connect-to-your-remote-linux-computer) and choose **Connect**. Visual Studio adds that machine as to CMakeSettings.json as your default connection for **Linux-Debug**. It also pulls down the headers from your remote machine, so you get [IntelliSense specific to that remote connection](/cpp/linux/configure-a-linux-project?view=vs-2019#remote_intellisense). Next, Visual Studio sends your files to the remote machine and generates the CMake cache on the remote system. These steps may take some time, depending on the speed of your network and power of your remote machine. You'll know it's complete when the message "Target info extraction done" appears in the CMake output window.
- If you have already added a remote connection you can open this window by navigating to **Tools > Options > Cross Platform > Connection Manager**.
-
-3. Provide the connection information to your Linux machine and click **Connect**. Visual Studio adds that machine as to CMakeSettings.json as your default for **Linux-Debug**. It will also pull down the headers from your remote machine so that you get IntelliSense specific to that machine when you use it. Now Visual Studio will send your files to the remote machine, then generate the CMake cache there, and when that is done Visual Studio will be configured for using the same source base with that remote Linux machine. These steps may take some time depending on the speed of your network and power of your remote machine. You will know this is complete when the message "Target info extraction done" appears in the CMake output window.
+## Set a breakpoint, build, and run on Linux
-## Set a breakpoint, build and run on Linux
+Because it's a desktop application, you need to provide some additional configuration information to the debug configuration.
-Because this is a desktop application, you need to provide some additional configuration information to the debug configuration.
+1. In the CMake Targets view, right-click AppBasicExampleGui and choose **Debug and Launch Settings** to open the launch.vs.json file that's in the hidden **.vs** subfolder. This file is local to your development environment. You can move it into the root of your project if you wish to check it in and save it with your team. In this file, a configuration has been added for AppBasicExampleGui. These default settings work in most cases, but not here. Because it's a desktop application, you need to provide some additional information to launch the program so you can see it on your Linux machine.
-1. In the CMake Targets view, right-click AppBasicExampleGui and choose **Debug and Launch Settings** to open the launch.vs.json file that is in the hidden **.vs** subfolder. This file is local to your development environment. You can move it into the root of your project if you wish to check it in and save it with your team. In this file a configuration has been added for AppBasicExampleGui. These default settings work in most cases, but because this is a desktop application you need to provide some additional information to launch the program in a way you can see it on our Linux machine.
-2. You need to know the value of the environment variable `DISPLAY` on your Linux machine, run this command to get it.
+1. To find the value of the environment variable `DISPLAY` on your Linux machine, run this command:
- ```cmd
- echo $DISPLAY
- ```
+ ```cmd
+ echo $DISPLAY
+ ```
- In the configuration for AppBasicExampleGui there is a parameter array "pipeArgs". Within there is a line "${debuggerCommand}". This is the command that launches gdb on the remote machine. Visual Studio needs to export the display into this context before that command runs. For example, if the value of your display :1, modify that line as follows:
+ In the configuration for AppBasicExampleGui, there's a parameter array, "pipeArgs". It contains a line: "${debuggerCommand}". It's the command that launches gdb on the remote machine. Visual Studio must export the display into this context before that command runs. For example, if the value of your display is `:1`, modify that line as follows:
- ```cmd
- "export DISPLAY=:1;${debuggerCommand}",
- ```
-3. Now in order to launch and debug our application, choose the **Select Startup Item** drop-down in the toolbar and choose AppBasicExampleGui. Now press that button or hit **F5**. This will build the application and its dependencies on the remote Linux machine then launch it with the Visual Studio debugger attached. On your remote Linux machine, you should see an application window appear.
+ ```cmd
+ "export DISPLAY=:1;${debuggerCommand}",
+ ```
+
+1. Launch and debug your application. Open the **Select Startup Item** drop-down in the toolbar and choose **AppBasicExampleGui**. Next, either choose the green play icon in the toolbar, or press **F5**. The application and its dependencies are built on the remote Linux machine, then launched with the Visual Studio debugger attached. On your remote Linux machine, you should see an application window appear.
-4. Move your mouse into the application window, click a button, and the breakpoint will be hit. Program execution pauses, Visual Studio comes back to the foreground, and you will be at your breakpoint. You should also see a Linux Console Window appear in Visual Studio. This window provides output from the remote Linux machine, and it can also accept input for `stdin`. Like any Visual Studio window, it can be docked where you prefer to see it and its position will be persisted in future sessions.
+1. Move your mouse into the application window, and click a button. The breakpoint is hit. Program execution pauses, Visual Studio comes back to the foreground, and you see your breakpoint. You should also see a Linux Console Window appear in Visual Studio. The window provides output from the remote Linux machine, and it can also accept input for `stdin`. Like any Visual Studio window, you can dock it where you prefer to see it. Its position is persisted in future sessions.
- ![Visual Studio Linux Console Window](media/cmake-bullet3-linux-console.png)
+ ![Visual Studio Linux Console Window](media/cmake-bullet3-linux-console.png)
-5. You can inspect the application variables, objects, threads, memory, and step through your code interactively using Visual Studio. But this time you are doing all this on a remote Linux machine instead of your local Windows environment. You can click **Continue** to let the application resume and exit normally, or you can press the stop button, just as with local execution.
+1. You can inspect the application variables, objects, threads, memory, and step through your code interactively using Visual Studio. But this time, you're doing it all on a remote Linux machine instead of your local Windows environment. You can choose **Continue** to let the application resume and exit normally, or you can choose the stop button, just as with local execution.
-6. Look at the Call Stack window and view the Calls to `x11OpenGLWindow` since Visual Studio launched the application on Linux.
+1. Look at the Call Stack window and view the Calls to `x11OpenGLWindow` since Visual Studio launched the application on Linux.
- ![Call Stack window showing Linux call stack](media/cmake-bullet3-linux-callstack.png)
+ ![Call Stack window showing Linux call stack](media/cmake-bullet3-linux-callstack.png)
-## What you learned
+## What you learned
-In this tutorial, you have seen a code base cloned directly from GitHub, and built, run, and debugged on Windows with no modifications. This came code base, with minor configuration changes, was built, run and debugged on a remote Linux machine.
+In this tutorial, you cloned a code base directly from GitHub. You built, ran, and debugged it on Windows without modifications. Then you used the same code base, with minor configuration changes, to build, run, and debug on a remote Linux machine.
## Next steps
@@ -189,4 +196,4 @@ Learn more about configuring and debugging CMake projects in Visual Studio:
> [Configure CMake debugging sessions](configure-cmake-debugging-sessions.md)
> [Deploy, run, and debug your Linux project](../linux/deploy-run-and-debug-your-linux-project.md)
> [CMake predefined configuration reference](cmake-predefined-configuration-reference.md)
->
+>
diff --git a/docs/build/how-to-add-a-custom-build-step-to-msbuild-projects.md b/docs/build/how-to-add-a-custom-build-step-to-msbuild-projects.md
index 45eee630db..96f281575a 100644
--- a/docs/build/how-to-add-a-custom-build-step-to-msbuild-projects.md
+++ b/docs/build/how-to-add-a-custom-build-step-to-msbuild-projects.md
@@ -1,6 +1,6 @@
---
title: "How to: Add a Custom Build Step to MSBuild Projects"
-ms.date: "11/04/2016"
+ms.date: "10/16/2019"
helpviewer_keywords: ["msbuild (c++), howto: add a custom build step"]
ms.assetid: a20a0c47-4df4-4754-a1f0-a94a99958916
---
@@ -25,7 +25,7 @@ Custom build steps and custom build tools share the information specified in the
makecab.exe $(ProjectDir)main.cpp $(TargetName).cab
$(TargetName).cab
- $(TargetFileName)
+ $(ProjectDir)main.cpp
```
diff --git a/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md b/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md
index 4d7f468aa5..d2ec9815a0 100644
--- a/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md
+++ b/docs/build/how-to-modify-the-target-framework-and-platform-toolset.md
@@ -23,9 +23,9 @@ Visual Studio also supports multitargeting for C++ projects. You can use the Vis
## Target framework (C++/CLI project only)
-When you change the target Framework, also change the platform toolset to a version that supports that Framework. For example, to target the .NET Framework 4.5, you must use a compatible platform toolset such as Visual Studio 2015 (v140), Visual Studio 2013 (v120) or Visual Studio 2012 (v110). You can use the [Windows 7.1 SDK](https://www.microsoft.com/en-us/download/details.aspx?id=8279) platform toolset to target the .NET Framework 2.0, 3.0, 3.5, and 4, and the x86/x64 platforms.
+When you change the target Framework, also change the platform toolset to a version that supports that Framework. For example, to target the .NET Framework 4.5, you must use a compatible platform toolset such as Visual Studio 2015 (v140), Visual Studio 2013 (v120) or Visual Studio 2012 (v110). You can use the [Windows 7.1 SDK](https://www.microsoft.com/download/details.aspx?id=8279) platform toolset to target the .NET Framework 2.0, 3.0, 3.5, and 4, and the x86/x64 platforms.
-You can extend the target platform further by creating a custom platform toolset. For more information, see [C++ Native Multi-Targeting](https://blogs.msdn.microsoft.com/vcblog/2009/12/08/c-native-multi-targeting/) on the Visual C++ blog.
+You can extend the target platform further by creating a custom platform toolset. For more information, see [C++ Native Multi-Targeting](https://devblogs.microsoft.com/cppblog/c-native-multi-targeting/) on the Visual C++ blog.
### To change the target Framework
diff --git a/docs/build/launch-vs-schema-reference-cpp.md b/docs/build/launch-vs-schema-reference-cpp.md
index f7c498e89a..97561bfa9d 100644
--- a/docs/build/launch-vs-schema-reference-cpp.md
+++ b/docs/build/launch-vs-schema-reference-cpp.md
@@ -6,7 +6,7 @@ helpviewer_keywords: ["launch.vs.json file [C++]"]
# launch.vs.json schema reference (C++)
-Use the *launch.vs.json* file to configure debugging parameters. To create the file. right-click on an executable file in **Solution Explorer** and choose **Debug and Launch Settings**. Choose the option that most closely matches your project and then use the following properties to modify the configuration as needed:
+Use the *launch.vs.json* file to configure debugging parameters. To create the file. right-click on an executable file in **Solution Explorer** and choose **Debug and Launch Settings**. Choose the option that most closely matches your project and then use the following properties to modify the configuration as needed. For more information on debugging CMake projects, see [Configure CMake debugging sessions](/cpp/build/configure-cmake-debugging-sessions).
## Default properties
@@ -18,7 +18,7 @@ Use the *launch.vs.json* file to configure debugging parameters. To create the f
|`project`|string|Specifies the relative path to the project file.|
|`projectTarget`|string|Specifies the optional target invoked when building `project`. This `projectTarget` must exist already and match the name in the **Debug Target** dropdown.|
|`debugType`|string|Specifies the debugging mode according to the type of code (native, managed, or mixed). This will automatically be detected unless this parameter is set. Allowed values: "native", "managed", "mixed".|
-|`inheritEnvironments`|array|Specifies a set of environment variables inherited from multiple sources. You can define some variables in files like CMakeSettings.json or CppProperties.json and make them available to debug context|
+|`inheritEnvironments`|array|Specifies a set of environment variables inherited from multiple sources. You can define some variables in files like *CMakeSettings.json* or *CppProperties.json* and make them available to debug context. **Visual Studio 16.4:**: Specify environment variables on a per-target basis using the `env.VARIABLE_NAME` syntax. To unset a variable, set it to "null".|
|`args`|array|Specifies the command-line arguments passed to the launched program.|
|`currentDir`|string|Specifies the full directory path to the Build Target. This will automatically be detected unless this parameter is set.|
|`noDebug`|boolean|Specifies whether to debug the launched program. The default value for this parameter is `false` if not specified.|
diff --git a/docs/build/linking-an-executable-to-a-dll.md b/docs/build/linking-an-executable-to-a-dll.md
index 17e7769359..187e1224a7 100644
--- a/docs/build/linking-an-executable-to-a-dll.md
+++ b/docs/build/linking-an-executable-to-a-dll.md
@@ -78,7 +78,7 @@ The operating system must be able to locate the DLL file when it loads the calli
To use a DLL by explicit linking, applications must make a function call to explicitly load the DLL at run time. To explicitly link to a DLL, an application must:
-- Call [LoadLibrary](loadlibrary-and-afxloadlibrary.md), `LoadLibraryEx`, or a similar function to load the DLL and obtain a module handle.
+- Call [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw) or a similar function to load the DLL and obtain a module handle.
- Call [GetProcAddress](getprocaddress.md) to obtain a function pointer to each exported function that the application calls. Because applications call the DLL functions through a pointer, the compiler doesn't generate external references, so there's no need to link with an import library. However, you must have a `typedef` or `using` statement that defines the call signature of the exported functions that you call.
diff --git a/docs/build/loadlibrary-and-afxloadlibrary.md b/docs/build/loadlibrary-and-afxloadlibrary.md
index 198b1e5477..80c6ea31c7 100644
--- a/docs/build/loadlibrary-and-afxloadlibrary.md
+++ b/docs/build/loadlibrary-and-afxloadlibrary.md
@@ -1,24 +1,25 @@
---
title: "LoadLibrary and AfxLoadLibrary"
-ms.date: "05/24/2018"
+description: "Using LoadLibrary and AfxLoadLibrary for explicit loading of DLLs in MSVC."
+ms.date: "01/28/2020"
f1_keywords: ["LoadLibrary"]
helpviewer_keywords: ["DLLs [C++], AfxLoadLibrary", "DLLs [C++], LoadLibrary", "AfxLoadLibrary method", "LoadLibrary method", "explicit linking [C++]"]
ms.assetid: b4535d19-6243-4146-a31a-a5cca4c7c9e3
---
# LoadLibrary and AfxLoadLibrary
-Processes call [LoadLibraryExA](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa) or [LoadLibraryExW](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw) (or [AfxLoadLibrary](../mfc/reference/application-information-and-management.md#afxloadlibrary)) to explicitly link to a DLL. If the function succeeds, it maps the specified DLL into the address space of the calling process and returns a handle to the DLL that can be used with other functions in explicit linking—for example, `GetProcAddress` and `FreeLibrary`.
+Processes call [LoadLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryw) or [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw) to explicitly link to a DLL. (MFC apps use [AfxLoadLibrary](../mfc/reference/application-information-and-management.md#afxloadlibrary) or [AfxLoadLibraryEx](../mfc/reference/application-information-and-management.md#afxloadlibraryex).) If the function succeeds, it maps the specified DLL into the address space of the calling process, and returns a handle to the DLL. The handle is required in other functions used for explicit linking—for example, `GetProcAddress` and `FreeLibrary`. For more information, see [Explicit linking](linking-an-executable-to-a-dll.md#linking-explicitly).
-`LoadLibrary` attempts to locate the DLL by using the same search sequence that is used for implicit linking. If the system cannot find the DLL or if the entry-point function returns FALSE, `LoadLibrary` returns NULL. If the call to `LoadLibrary` specifies a DLL module that is already mapped into the address space of the calling process, the function returns a handle of the DLL and increments the reference count of the module.
+`LoadLibrary` attempts to locate the DLL by using the same search sequence that is used for implicit linking. `LoadLibraryEx` gives you more control over the search path order. For more information, see [Dynamic Link Library Search Order](/windows/win32/dlls/dynamic-link-library-search-order). If the system can't find the DLL or if the entry-point function returns FALSE, `LoadLibrary` returns NULL. If the call to `LoadLibrary` specifies a DLL module that is already mapped into the address space of the calling process, the function returns a handle of the DLL and increments the reference count of the module.
-If the DLL has an entry-point function, the operating system calls the function in the context of the thread that called `LoadLibrary`. The entry-point function is not called if the DLL is already attached to the process because of a previous call to `LoadLibrary` that has no corresponding call to the `FreeLibrary` function.
+If the DLL has an entry-point function, the operating system calls the function in the context of the thread that called `LoadLibrary` or `LoadLibraryEx`. The entry-point function isn't called if the DLL is already attached to the process. That happens when a previous call to `LoadLibrary` or `LoadLibraryEx` for the DLL hasn't had a corresponding call to the `FreeLibrary` function.
-For MFC applications that load MFC extension DLLs, we recommend that you use `AfxLoadLibrary` instead of `LoadLibrary`. `AfxLoadLibrary` handles thread synchronization before you call `LoadLibrary`. The interface (function prototype) to `AfxLoadLibrary` is the same as `LoadLibrary`.
+For MFC applications that load MFC extension DLLs, we recommend that you use `AfxLoadLibrary` or `AfxLoadLibraryEx` instead of `LoadLibrary` or `LoadLibraryEx`. The MFC functions handle thread synchronization before loading the DLL explicitly. The interfaces (function prototypes) to `AfxLoadLibrary` and `AfxLoadLibraryEx` are the same as `LoadLibrary` and `LoadLibraryEx`.
-If Windows cannot load the DLL, the process can attempt to recover from the error. For example, the process could notify the user of the error and ask the user to specify another path to the DLL.
+If Windows can't load the DLL, your process can attempt to recover from the error. For example, it could notify the user of the error, then ask for another path to the DLL.
> [!IMPORTANT]
-> Make sure to specify the full path of any DLLs. The current directory is searched first when files are loaded. If you do not qualify the path of the file, a file that is not the intended one might be loaded. Another way to prevent this is by using the [/DEPENDENTLOADFLAG](reference/dependentloadflag.md) linker option.
+> Make sure to specify the full path of any DLLs. The current directory may be searched first when files are loaded by `LoadLibrary`. If you don't fully qualify the path of the file, a file other than the intended one might be loaded. When you create a DLL, use the [/DEPENDENTLOADFLAG](reference/dependentloadflag.md) linker option to specify a search order for statically linked DLL dependencies. Within your DLLs, use both complete paths to explicitly loaded dependencies, and `LoadLibraryEx` or `AfxLoadLibraryEx` call parameters to specify module search order. For more information, see [Dynamic-Link Library Security](/windows/win32/dlls/dynamic-link-library-security) and [Dynamic Link Library Search Order](/windows/win32/dlls/dynamic-link-library-search-order).
## What do you want to do?
diff --git a/docs/build/media/default-configurations.png b/docs/build/media/default-configurations.png
index 4ce89d90cc..8858dd6a2d 100644
Binary files a/docs/build/media/default-configurations.png and b/docs/build/media/default-configurations.png differ
diff --git a/docs/build/media/manage-configurations-dropdown.png b/docs/build/media/manage-configurations-dropdown.png
index 4c23547f78..b04780a627 100644
Binary files a/docs/build/media/manage-configurations-dropdown.png and b/docs/build/media/manage-configurations-dropdown.png differ
diff --git a/docs/build/open-folder-projects-cpp.md b/docs/build/open-folder-projects-cpp.md
index 9feb4ee85b..3bd1b09f04 100644
--- a/docs/build/open-folder-projects-cpp.md
+++ b/docs/build/open-folder-projects-cpp.md
@@ -1,6 +1,6 @@
---
title: "Open Folder support for C++ build systems in Visual Studio"
-ms.date: "08/20/2019"
+ms.date: "12/02/2019"
helpviewer_keywords: ["Open Folder Projects in Visual Studio"]
ms.assetid: abd1985e-3717-4338-9e80-869db5435175
---
@@ -36,11 +36,11 @@ For IntelliSense and browsing behavior such as **Go to Definition** to work corr
![Manage configurations dropdown](media/manage-configurations-dropdown.png)
-Currently, Visual Studio offers four default configurations, all for the Microsoft C++ compiler:
+Visual Studio offers the following default configurations:
![Default configurations](media/default-configurations.png)
-If, for example, you choose **x64-Debug**, Visual Studio creates a file called *CppProperties.json* in your root project folder and populates it like so:
+If, for example, you choose **x64-Debug**, Visual Studio creates a file called *CppProperties.json* in your root project folder:
```json
{
@@ -66,16 +66,18 @@ If, for example, you choose **x64-Debug**, Visual Studio creates a file called *
}
```
-This configuration "inherits" the environment variables of the Visual Studio [x64 Developer Command Prompt](building-on-the-command-line.md). One of those variables is `INCLUDE` and you can refer to it here by using the `${env.INCLUDE}` macro. The `includePath` property tells Visual Studio where to look for all the sources that it needs for IntelliSense. In this case, it says "look in the all the directories specified by the INCLUDE environment variable, and also all the directories in the current working folder tree." The `name` property is the name that will appear in the dropdown, and can be anything you like. The `defines` property provides hints to IntelliSense when it encounters conditional compilation blocks. The `intelliSenseMode` property provides some additional hints based on the compiler type. Several options are available for MSVC, GCC, and Clang.
+This configuration inherits the environment variables of the Visual Studio [x64 Developer Command Prompt](building-on-the-command-line.md). One of those variables is `INCLUDE` and you can refer to it here by using the `${env.INCLUDE}` macro. The `includePath` property tells Visual Studio where to look for all the sources that it needs for IntelliSense. In this case, it says "look in the all the directories specified by the INCLUDE environment variable, and also all the directories in the current working folder tree." The `name` property is the name that will appear in the dropdown, and can be anything you like. The `defines` property provides hints to IntelliSense when it encounters conditional compilation blocks. The `intelliSenseMode` property provides some additional hints based on the compiler type. Several options are available for MSVC, GCC, and Clang.
-## Example configuration for GCC
+> [!NOTE]
+> If Visual Studio seems to be ignoring settings in *CppProperties.json*, try adding an exception to your *.gitignore* file like this: `!/CppProperties.json`.
-If you are using a compiler other than Microsoft C++, you have to create a custom configuration and environment in *CppProperties.json*. The following example shows a complete *CppProperties.json* file with a single custom configuration for using GCC in an MSYS2 installation:
+## Default configuration for MinGW-w64
+
+If you add the MinGW-W64 configuration, the JSON looks this this:
```json
{
- "configurations": [
- {
+ {
"inheritEnvironments": [
"mingw_64"
],
@@ -90,21 +92,18 @@ If you are using a compiler other than Microsoft C++, you have to create a custo
"MINGW64_ROOT": "C:\\msys64\\mingw64",
"BIN_ROOT": "${env.MINGW64_ROOT}\\bin",
"FLAVOR": "x86_64-w64-mingw32",
- "TOOLSET_VERSION": "8.3.0",
- "PATH": "${env.MINGW64_ROOT}\\bin;${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
+ "TOOLSET_VERSION": "9.1.0",
+ "PATH": "${env.BIN_ROOT};${env.MINGW64_ROOT}\\..\\usr\\local\\bin;${env.MINGW64_ROOT}\\..\\usr\\bin;${env.MINGW64_ROOT}\\..\\bin;${env.PATH}",
"INCLUDE": "${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION};${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\tr1;${env.MINGW64_ROOT}\\include\\c++\\${env.TOOLSET_VERSION}\\${env.FLAVOR}",
"environment": "mingw_64"
}
]
- }
+ }
}
```
Note the `environments` block. It defines properties that behave like environment variables and are available not only in the *CppProperties.json* file, but also in the other configuration files *task.vs.json* and *launch.vs.json*. The `Mingw64` configuration inherits the `mingw_w64` environment, and uses its `INCLUDE` property to specify the value for `includePath`. You can add other paths to this array property as needed.`
-> [!WARNING]
-> There is currently a known issue in which the `INCLUDE` value specified in `environments` is not correctly passed to the `includePath` property. You can work around the issue by adding the complete literal include paths to the `includePath` array.
-
The `intelliSenseMode` property is set to a value appropriate for GCC. For more information on all these properties, see [CppProperties schema reference](cppproperties-schema-reference.md).
When everything is working correctly, you will see IntelliSense from the GCC headers when you hover over a type:
@@ -148,7 +147,7 @@ This creates (or opens) the *tasks.vs.json* file in the .vs folder which Visual
```
-The JSON file is placed in the *.vs* subfolder which you can see if you click on the **Show All Files** button at the top of **Solution Explorer**. You can run this task by right-clicking on the root node in **Solution Explorer** and choosing **build hello**. When the task completes you should see a new file, *hello.exe* in **Solution Explorer**.
+The JSON file is placed in the *.vs* subfolder. To see that folder, click on the **Show All Files** button at the top of **Solution Explorer**. You can run this task by right-clicking on the root node in **Solution Explorer** and choosing **build hello**. When the task completes you should see a new file, *hello.exe* in **Solution Explorer**.
You can define many kinds of tasks. The following example shows a *tasks.vs.json file* that defines a single task. `taskLabel` defines the name that appears in the context menu. `appliesTo` defines which files the command can be performed on. The `command` property refers to the COMSPEC environment variable, which identifies the path for the console (*cmd.exe* on Windows). You can also reference environment variables that are declared in CppProperties.json or CMakeSettings.json. The `args` property specifies the command line to be invoked. The `${file}` macro retrieves the selected file in **Solution Explorer**. The following example will display the filename of the currently selected .cpp file.
@@ -173,7 +172,7 @@ For more information, see [Tasks.vs.json schema reference](tasks-vs-json-schema-
### Configure debugging parameters with launch.vs.json
-To customize your program’s command line arguments and debugging instructions, right-click on the executable in **Solution Explorer** and select **Debug and Launch Settings**. This will open an existing *launch.vs.json* file, or if none exists, it will create a new file with a set of minimal launch settings. First you are given a choice of what kind of debug session you want to configure. For debugging a MinGw-w64 project, we choose **C/C++ Launch for MinGGW/Cygwin (gdb)**. This creates a launch configuration for using *gdb.exe* with some educated guesses about default values. One of those default values is `MINGW_PREFIX`. You can substitute the literal path (as shown below) or you can define a `MINGW_PREFIX` property in *CppProperties.json*:
+To customize your program’s command line arguments and debugging instructions, right-click on the executable in **Solution Explorer** and select **Debug and Launch Settings**. This will open an existing *launch.vs.json* file, or if none exists, it will create a new file with a set of minimal launch settings. First you are given a choice of what kind of debug session you want to configure. For debugging a MinGw-w64 project, we choose **C/C++ Launch for MinGW/Cygwin (gdb)**. This creates a launch configuration for using *gdb.exe* with some educated guesses about default values. One of those default values is `MINGW_PREFIX`. You can substitute the literal path (as shown below) or you can define a `MINGW_PREFIX` property in *CppProperties.json*:
```json
{
diff --git a/docs/build/overview-of-arm-abi-conventions.md b/docs/build/overview-of-arm-abi-conventions.md
index 16eb1f3f04..32eb7672af 100644
--- a/docs/build/overview-of-arm-abi-conventions.md
+++ b/docs/build/overview-of-arm-abi-conventions.md
@@ -181,7 +181,7 @@ The stack must remain 4-byte aligned at all times, and must be 8-byte aligned at
Functions that have to use a frame pointer—for example, functions that call `alloca` or that change the stack pointer dynamically—must set up the frame pointer in r11 in the function prologue and leave it unchanged until the epilogue. Functions that do not require a frame pointer must perform all stack updates in the prologue and leave the stack pointer unchanged until the epilogue.
-Functions that allocate 4 KB or more on the stack must ensure that each page prior to the final page is touched in order. This ensures that no code can “leap over” the guard pages that Windows uses to expand the stack. Typically, this is done by the `__chkstk` helper, which is passed the total stack allocation in bytes divided by 4 in r4, and which returns the final stack allocation amount in bytes back in r4.
+Functions that allocate 4 KB or more on the stack must ensure that each page prior to the final page is touched in order. This ensures that no code can "leap over" the guard pages that Windows uses to expand the stack. Typically, this is done by the `__chkstk` helper, which is passed the total stack allocation in bytes divided by 4 in r4, and which returns the final stack allocation amount in bytes back in r4.
### Red zone
diff --git a/docs/build/projects-and-build-systems-cpp.md b/docs/build/projects-and-build-systems-cpp.md
index 24fe0f95b9..6645ca1bcc 100644
--- a/docs/build/projects-and-build-systems-cpp.md
+++ b/docs/build/projects-and-build-systems-cpp.md
@@ -4,7 +4,7 @@ ms.description: "Use Visual Studio to compile and build C++ projects for Windows
ms.date: "07/17/2019"
helpviewer_keywords: ["builds [C++]", "C++ projects, building", "projects [C++], building", "builds [C++], options", "C++, build options"]
ms.assetid: fa6ed4ff-334a-4d99-b5e2-a1f83d2b3008
-ms.topic: "landing-page"
+ms.topic: "overview"
---
# C/C++ projects and build systems in Visual Studio
diff --git a/docs/build/reference/analyze-code-analysis.md b/docs/build/reference/analyze-code-analysis.md
index 515bd5ad57..6a9baf8405 100644
--- a/docs/build/reference/analyze-code-analysis.md
+++ b/docs/build/reference/analyze-code-analysis.md
@@ -1,47 +1,45 @@
---
-title: "/analyze (Code Analysis)"
-ms.date: "04/26/2018"
+title: "/analyze (Code analysis)"
+ms.date: "10/15/2019"
f1_keywords: ["VC.Project.VCCLCompilerTool.EnablePREfast", "/analyze", "VC.Project.VCCLCompilerTool.PREfastAdditionalOptions", "VC.Project.VCCLCompilerTool.PREfastAdditionalPlugins"]
helpviewer_keywords: ["/analyze compiler option [C++]", "-analyze compiler option [C++]", "analyze compiler option [C++]"]
ms.assetid: 81da536a-e030-4bd4-be18-383927597d08
---
-# /analyze (Code Analysis)
+# /analyze (Code analysis)
Enables code analysis and control options.
## Syntax
-```cmd
-/analyze[-][:WX-][:log filename][:quiet][:stacksize number][:max_paths number][:only][:ruleset]
-```
+> **/analyze**[-][**:WX-**][**:log** *filename*][**:quiet**][**:stacksize** *number*][**:max_paths** *number*][**:only**][**:ruleset** *ruleset*][**:plugin** *plugin-dll*]
## Arguments
-/analyze
+**/analyze**\
Turns on analysis in the default mode. Analysis output goes to the **Output** window like other error messages. Use **/analyze-** to explicitly turn off analysis.
-/analyze:WX-
-Specifying **/analyze:WX-** means that code analysis warnings are not treated as errors when you compile by using **/WX**. For more information, see [/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)](compiler-option-warning-level.md).
+**/analyze:WX-**\
+Code analysis warnings aren't treated as errors when you compile by using **/WX**. For more information, see [/WX (Warning level)](compiler-option-warning-level.md).
-/analyze:log `filename`
-Detailed analyzer results are written as XML to the file that is specified by `filename`.
+**/analyze:log** *filename*\
+Detailed analyzer results are written as XML to the file that is specified by *filename*.
-/analyze:quiet
+**/analyze:quiet**\
Turns off analyzer output to the **Output** window.
-/analyze:stacksize `number`
-The `number` parameter that is used with this option specifies the size, in bytes, of the stack frame for which warning [C6262](/visualstudio/code-quality/c6262) is generated. If this parameter is not specified, the stack frame size is 16KB by default.
+**/analyze:stacksize** *number*\
+The *number* parameter that is used with this option specifies the size, in bytes, of the stack frame for which warning [C6262](/visualstudio/code-quality/c6262) is generated. The space before *number* is optional. If this parameter isn't specified, the stack frame size is 16KB by default.
-/analyze:max_paths `number`
-The `number` parameter that is used with this option specifies the maximum number of code paths to be analyzed. If this parameter is not specified, the number is 256 by default. Larger values perform more thorough checking, but the analysis might take longer.
+**/analyze:max_paths** *number*\
+The *number* parameter that is used with this option specifies the maximum number of code paths to be analyzed. If this parameter isn't specified, the number is 256 by default. Larger values cause more thorough checking, but the analysis might take longer.
-/analyze:only
-Typically, the compiler generates code and does more syntax checking after it runs the analyzer. The **/analyze:only** option turns off this code generation pass; this makes analysis faster but compile errors and warnings that might have been discovered by the code generation pass of the compiler are not emitted. If the program is not free of code-generation errors, analysis results might be unreliable; therefore, we recommend that you use this option only if the code already passes code-generation syntax checking without errors.
+**/analyze:only**\
+Typically, the compiler generates code and does more syntax checking after it runs the analyzer. The **/analyze:only** option turns off this code generation pass. It makes analysis faster, but compile errors and warnings that the code generation pass of the compiler might find aren't emitted. If the program isn't free of code-generation errors, analysis results might be unreliable. We recommend you use this option only if the code already passes code-generation syntax checking without errors.
-/analyze:ruleset `.ruleset`
-Enables you to specify which rule sets to analyze, including custom rule sets that you can create yourself. When this switch is set, the rules engine is more efficient because it excludes non-members of the specified rule set before running. When the switch is not set, the engine checks all rules.
+**/analyze:ruleset** *file_path.ruleset*\
+Lets you specify which rule sets to analyze, including custom rule sets that you can create yourself. When this switch is set, the rules engine is more efficient, because it excludes non-members of the specified rule set before running. Otherwise, the engine checks all rules.
-The rulesets that ship with Visual Studio are found in **%VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.**
+The rulesets that ship with Visual Studio are found in *%VSINSTALLDIR%\Team Tools\Static Analysis Tools\Rule Sets.*
The following sample custom rule set tells the rules engine to check for C6001 and C26494. You can place this file anywhere as long as it has a `.ruleset` extension and you provide the full path in the argument.
@@ -55,12 +53,30 @@ The following sample custom rule set tells the rules engine to check for C6001 a
```
-/analyze:plugin
+**/analyze:plugin** *plugin-dll*\
Enables the specified PREfast plugin as part of code analysis runs.
+
+::: moniker range="<=vs-2017"
+
LocalEspC.dll is the plugin that implements concurrency-related code analysis checks in the range of C261XX warnings. For example, [C26100](/visualstudio/code-quality/c26100), [C26101](/visualstudio/code-quality/c26101), ..., [C26167](/visualstudio/code-quality/c26167).
To run LocalEspC.dll, use this compiler option: **/analyze:plugin LocalEspC.dll**
+::: moniker-end
+::: moniker range=">=vs-2019"
+
+ConcurrencyCheck.dll implements concurrency-related code analysis checks in the range of C261XX warnings. For example, [C26100](/visualstudio/code-quality/c26100), [C26101](/visualstudio/code-quality/c26101), ..., [C26167](/visualstudio/code-quality/c26167).
+
+To run ConcurrencyCheck.dll, first run this command from a developer command prompt:
+
+```cmd
+set Esp.Extensions=ConcurrencyCheck.dll
+```
+
+Then use this compiler option: **/analyze:plugin EspXEngine.dll**.
+
+::: moniker-end
+
To run CppCoreCheck.dll, first run this command from a developer command prompt:
```cmd
@@ -71,17 +87,13 @@ Then use this compiler option: **/analyze:plugin EspXEngine.dll**.
## Remarks
-For more information, see [Code Analysis for C/C++ Overview](/visualstudio/code-quality/code-analysis-for-c-cpp-overview) and [Code Analysis for C/C++ Warnings](/visualstudio/code-quality/code-analysis-for-c-cpp-warnings).
+For more information, see [Code analysis for C/C++ overview](/visualstudio/code-quality/code-analysis-for-c-cpp-overview) and [Code analysis for C/C++ warnings](/visualstudio/code-quality/code-analysis-for-c-cpp-warnings).
### 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. Expand the **Configuration Properties** node.
-
-1. Expand the **Code Analysis** node.
-
-1. Select the **General** property page.
+1. Select the **Configuration Properties** > **Code Analysis** > **General** property page.
1. Modify one or more of the **Code Analysis** properties.
@@ -91,5 +103,5 @@ For more information, see [Code Analysis for C/C++ Overview](/visualstudio/code-
## See also
-- [MSVC Compiler Options](compiler-options.md)
-- [MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
+[MSVC Compiler Options](compiler-options.md)\
+[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/arch-x64.md b/docs/build/reference/arch-x64.md
index 6507c1b06a..d4c8aedd81 100644
--- a/docs/build/reference/arch-x64.md
+++ b/docs/build/reference/arch-x64.md
@@ -1,6 +1,6 @@
---
title: "/arch (x64)"
-ms.date: "11/04/2016"
+ms.date: "10/01/2019"
ms.assetid: ecda22bf-5bed-43f4-99fb-88aedd83d9d8
---
# /arch (x64)
@@ -10,7 +10,7 @@ Specifies the architecture for code generation on x64. Also see [/arch (x86)](ar
## Syntax
```
-/arch:[AVX|AVX2]
+/arch:[AVX|AVX2|AVX512]
```
## Arguments
@@ -21,13 +21,30 @@ Enables the use of Intel Advanced Vector Extensions instructions.
**/arch:AVX2**
Enables the use of Intel Advanced Vector Extensions 2 instructions.
+**/arch:AVX512**
+Enables the use of Intel Advanced Vector Extensions 512 instructions.
+
## Remarks
+The **/arch** option enables the use of certain instruction set extensions, particularly for vector calculation, available in processors from Intel and AMD. In general, more recently introduced processors may support additional extensions over those supported by older processors, although you should consult the documentation for a particular processor or test for instruction set extension support using [__cpuid](../../intrinsics/cpuid-cpuidex.md) before executing code using an instruction set extension.
+
**/arch** only affects code generation for native functions. When you use [/clr](clr-common-language-runtime-compilation.md) to compile, **/arch** has no effect on code generation for managed functions.
-The `__AVX__` preprocessor symbol is defined when the **/arch:AVX** compiler option is specified. The `__AVX2__` preprocessor symbol is defined when the **/arch:AVX2** compiler option is specified. For more information, see [Predefined Macros](../../preprocessor/predefined-macros.md). The **/arch:AVX2** option was introduced in Visual Studio 2013 Update 2, version 12.0.34567.1.
+The processor extensions have the following characteristics:
+
+- The default mode uses SSE2 instructions for scalar floating-point and vector calculations. These instructions allow calculation with 128-bit vectors of single-precision, double-precision and 1, 2, 4 or 8 byte integer values, as well as single-precision and double-precision scalar floating-point values.
+
+- **AVX** introduced an alternative instruction encoding for vector and floating-point scalar instructions that allows vectors of either 128 bits or 256 bits, and zero-extends all vector results to the full vector size. (For legacy compatibility, SSE-style vector instructions preserve all bits beyond bit 127.) Most floating-point operations are extended to 256 bits.
+
+- **AVX2** extends most integer operations to 256-bit vectors and enables use of Fused Multiply-Add (FMA) instructions.
+
+- **AVX-512** introduced another instruction encoding form that allows 512-bit vectors, plus certain other optional features. Instructions for additional operations were also added.
+
+Each **/arch** option may also enable the use of other non-vector instructions that are associated with that option. An example is the use of certain BMI instructions when **/arch:AVX2** is specified.
+
+The `__AVX__` preprocessor symbol is defined when the **/arch:AVX**, **/arch:AVX2** or **/arch:AVX512** compiler option is specified. The `__AVX2__` preprocessor symbol is defined when the **/arch:AVX2** or **/arch:AVX512** compiler option is specified. The `__AVX512F__`, `__AVX512CD__`, `__AVX512BW__`, `__AVX512DQ__` and `__AVX512VL__` preprocessor symbols are defined when the **/arch:AVX512** compiler option is specified. For more information, see [Predefined Macros](../../preprocessor/predefined-macros.md). The **/arch:AVX2** option was introduced in Visual Studio 2013 Update 2, version 12.0.34567.1. Limited support for **/arch:AVX512** was added in Visual Studio 2017, and expanded in Visual Studio 2019.
-### To set the /arch:AVX or /arch:AVX2 compiler option in Visual Studio
+### To set the /arch:AVX, /arch:AVX2 or /arch:AVX512 compiler option in Visual Studio
1. Open the **Property Pages** dialog box for the project. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
@@ -35,7 +52,7 @@ The `__AVX__` preprocessor symbol is defined when the **/arch:AVX** compiler opt
1. Select the **Code Generation** property page.
-1. In the **Enable Enhanced Instruction Set** drop-down box, choose **Advanced Vector Extensions (/arch:AVX)** or **Advanced Vector Extensions 2 (/arch:AVX2)**.
+1. In the **Enable Enhanced Instruction Set** drop-down box, choose **Advanced Vector Extensions (/arch:AVX)**, **Advanced Vector Extensions 2 (/arch:AVX2)** or **Advanced Vector Extensions 512 (/arch:AVX512)**.
### To set this compiler option programmatically
diff --git a/docs/build/reference/arch-x86.md b/docs/build/reference/arch-x86.md
index 9ea215d6c5..bb27f7d588 100644
--- a/docs/build/reference/arch-x86.md
+++ b/docs/build/reference/arch-x86.md
@@ -1,6 +1,6 @@
---
title: "/arch (x86)"
-ms.date: "11/04/2016"
+ms.date: "10/01/2019"
ms.assetid: 9dd5a75d-06e4-4674-aade-33228486078d
---
# /arch (x86)
@@ -10,7 +10,7 @@ Specifies the architecture for code generation on x86. Also see [/arch (x64)](ar
## Syntax
```
-/arch:[IA32|SSE|SSE2|AVX|AVX2]
+/arch:[IA32|SSE|SSE2|AVX|AVX2|AVX512]
```
## Arguments
@@ -30,27 +30,40 @@ Enables the use of Intel Advanced Vector Extensions instructions.
**/arch:AVX2**
Enables the use of Intel Advanced Vector Extensions 2 instructions.
+**/arch:AVX512**
+Enables the use of Intel Advanced Vector Extensions 512 instructions.
+
## Remarks
-The SSE and SSE2 instructions exist on various Intel and AMD processors. The AVX instructions exist on Intel Sandy Bridge processors and AMD Bulldozer processors. AVX2 instructions are supported by Intel Haswell and Broadwell processors and AMD Excavator-based processors.
+The **/arch** option enables or disables the use of certain instruction set extensions, particularly for vector calculation, available in processors from Intel and AMD. In general, more recently introduced processors may support additional extensions over those supported by older processors, although you should consult the documentation for a particular processor or test for instruction set extension support using [__cpuid](../../intrinsics/cpuid-cpuidex.md) before executing code using an instruction set extension.
+
+**/arch** only affects code generation for native functions. When you use [/clr](clr-common-language-runtime-compilation.md) to compile, **/arch** has no effect on code generation for managed functions.
-The `_M_IX86_FP`, `__AVX__` and `__AVX2__` macros indicate which, if any, **/arch** compiler option was used. For more information, see [Predefined Macros](../../preprocessor/predefined-macros.md). The **/arch:AVX2** option and `__AVX2__` macro were introduced in Visual Studio 2013 Update 2, version 12.0.34567.1.
+The **/arch** options refer to instruction set extensions with the following characteristics:
-The optimizer chooses when and how to use the SSE and SSE2 instructions when **/arch** is specified. It uses SSE and SSE2 instructions for some scalar floating-point computations when it determines that it is faster to use the SSE/SSE2 instructions and registers instead of the x87 floating-point register stack. As a result, your code may actually use a mixture of both x87 and SSE/SSE2 for floating-point computations. Also, with **/arch:SSE2**, SSE2 instructions can be used for some 64-bit integer operations.
+- **IA32** is the legacy 32-bit x86 instruction set without any vector operations and using x87 for floating-point calculations.
-In addition to using the SSE and SSE2 instructions, the compiler also uses other instructions that are present on the processor revisions that support SSE and SSE2. An example is the CMOV instruction that first appeared on the Pentium Pro revision of the Intel processors.
+- **SSE** allows calculation with vectors of up to four single-precision floating-point values. Corresponding scalar floating-point instructions were added as well.
-Because the x86 compiler generates code that uses SSE2 instructions by default, you must specify **/arch:IA32** to disable generation of SSE and SSE2 instructions for x86 processors.
+- **SSE2** allows calculation with 128-bit vectors of single-precision, double-precision and 1, 2, 4 or 8 byte integer values. Double-precision scalar instructions were also added.
-**/arch** only affects code generation for native functions. When you use [/clr](clr-common-language-runtime-compilation.md) to compile, **/arch** has no effect on code generation for managed functions.
+- **AVX** introduced an alternative instruction encoding for vector and floating-point scalar instructions that allows vectors of either 128 bits or 256 bits, and zero-extends all vector results to the full vector size. (For legacy compatibility, SSE-style vector instructions preserve all bits beyond bit 127.) Most floating-point operations are extended to 256 bits.
+
+- **AVX2** extends most integer operations to 256-bit vectors, and enables use of Fused Multiply-Add (FMA) instructions.
+
+- **AVX512** introduced another instruction encoding form that allows 512-bit vectors, plus certain other optional features. Instructions for additional operations were also added.
+
+The optimizer chooses when and how to use vector instructions depending on which **/arch** is specified. Scalar floating-point computations are performed with SSE or AVX instructions when available. Some calling conventions specify passing floating-point arguments on the x87 stack, and as a result, your code may use a mixture of both x87 and SSE/AVX instructions for floating-point computations. Integer vector instructions can also be used for some 64-bit integer operations when available.
-**/arch** and [/QIfist](qifist-suppress-ftol.md) cannot be used on the same compiland. In particular, if you do not use `_controlfp` to modify the FP control word, then the run-time startup code sets the x87 FPU control word precision-control field to 53-bits. Therefore, every float and double operation in an expression uses a 53-bit significand and a 15-bit exponent. However, every SSE single-precision operation uses a 24-bit significand and an 8-bit exponent, and SSE2 double-precision operations use a 53-bit significand and an 11-bit exponent. For more information, see [_control87, _controlfp, \__control87_2](../../c-runtime-library/reference/control87-controlfp-control87-2.md). These differences are possible in one expression tree, but not in cases where a user assignment is involved after each subexpression. Consider the following:
+In addition to the vector and floating-point scalar instructions, each **/arch** option may also enable the use of other non-vector instructions that are associated with that option. An example is the CMOVcc instruction family that first appeared on the Intel Pentium Pro processors. Because SSE instructions were introduced with the subsequent Intel Pentium III processor, CMOVcc instructions may be generated except when **/arch:IA32** is specified.
+
+Floating-point operations are normally rounded to double-precision (64-bit) in x87 code, but you can use `_controlfp` to modify the FP control word, including setting the precision control to extended precision (80-bit) or single-precision (32-bit). For more information, see [_control87, _controlfp, \__control87_2](../../c-runtime-library/reference/control87-controlfp-control87-2.md). SSE and AVX have separate single-precision and double-precision instructions for each operation, so there is no equivalent for SSE/AVX code. This can change how results are rounded when the result of a floating-point operation is used directly in further calculation instead of assigning it to a user variable. Consider the following:
```cpp
r = f1 * f2 + d; // Different results are possible on SSE/SSE2.
```
-Compare:
+With explicit assignment:
```cpp
t = f1 * f2; // Do f1 * f2, round to the type of t.
@@ -58,7 +71,21 @@ r = t + d; // This should produce the same overall result
// whether x87 stack is used or SSE/SSE2 is used.
```
-### To set this compiler option for AVX, AVX2, IA32, SSE, or SSE2 in Visual Studio
+**/arch** and [/QIfist](qifist-suppress-ftol.md) cannot be used on the same compiland. The **/QIfist** option changes the rounding behavior of floating-point to integer conversion. The default behavior is to truncate (round toward zero), whereas the **/QIfist** option specifies use of the floating-point environment rounding mode. Because this changes the behavior of all floating-point to integer conversions, this flag has been deprecated. When compiling for SSE or AVX you can round a floating-point value to an integer using the floating-point environment rounding mode by using an intrinsic function sequence:
+
+```cpp
+int convert_float_to_int(float x) {
+ return _mm_cvtss_si32(_mm_set_ss(x));
+}
+
+int convert_double_to_int(double x) {
+ return _mm_cvtsd_si32(_mm_set_sd(x));
+}
+```
+
+The `_M_IX86_FP`, `__AVX__`, `__AVX2__`, `__AVX512F__`, `__AVX512CD__`, `__AVX512BW__`, `__AVX512DQ__` and `__AVX512VL__` macros indicate which, if any, **/arch** compiler option was used. For more information, see [Predefined Macros](../../preprocessor/predefined-macros.md). The **/arch:AVX2** option and `__AVX2__` macro were introduced in Visual Studio 2013 Update 2, version 12.0.34567.1. Limited support for **/arch:AVX512** was added in Visual Studio 2017, and expanded in Visual Studio 2019.
+
+### To set this compiler option for AVX, AVX2, AVX512, IA32, SSE, or SSE2 in Visual Studio
1. Open the **Property Pages** dialog box for the project. For more information, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
diff --git a/docs/build/reference/c-cpp-prop-page.md b/docs/build/reference/c-cpp-prop-page.md
index 23d1f48485..354f876110 100644
--- a/docs/build/reference/c-cpp-prop-page.md
+++ b/docs/build/reference/c-cpp-prop-page.md
@@ -1,6 +1,6 @@
---
title: "C/C++ Project Properties (Visual Studio)"
-ms.date: "7/18/2019"
+ms.date: "07/18/2019"
ms.topic: "article"
ms.assetid: 16375038-4917-4bd0-9a2a-26343c1708b7
---
diff --git a/docs/build/reference/c-preserve-comments-during-preprocessing.md b/docs/build/reference/c-preserve-comments-during-preprocessing.md
index b3adf502e0..2379dbde7c 100644
--- a/docs/build/reference/c-preserve-comments-during-preprocessing.md
+++ b/docs/build/reference/c-preserve-comments-during-preprocessing.md
@@ -21,7 +21,7 @@ This compiler option requires the **/E**, **/P**, or **/EP** option.
The following code sample will display the source code comment.
-```
+```cpp
// C_compiler_option.cpp
// compile with: /E /C /c
int i; // a variable
diff --git a/docs/build/reference/clrsupportlasterror-preserve-last-error-code-for-pinvoke-calls.md b/docs/build/reference/clrsupportlasterror-preserve-last-error-code-for-pinvoke-calls.md
index aa9fd8f203..95642fa4e1 100644
--- a/docs/build/reference/clrsupportlasterror-preserve-last-error-code-for-pinvoke-calls.md
+++ b/docs/build/reference/clrsupportlasterror-preserve-last-error-code-for-pinvoke-calls.md
@@ -75,7 +75,7 @@ You can minimize the performance impact by linking with **/CLRSUPPORTLASTERROR:S
The following sample defines a native DLL with one exported function that modifies last error.
-```
+```cpp
// CLRSUPPORTLASTERROR_dll.cpp
// compile with: /LD
#include
@@ -92,7 +92,7 @@ __declspec(dllexport) double MySqrt(__int64 n) {
The following sample consumes the DLL, demonstrating how to use **/CLRSUPPORTLASTERROR**.
-```
+```cpp
// CLRSUPPORTLASTERROR_client.cpp
// compile with: /clr CLRSUPPORTLASTERROR_dll.lib /link /clrsupportlasterror:systemdll
// processor: x86
diff --git a/docs/build/reference/command-line-property-pages.md b/docs/build/reference/command-line-property-pages.md
index badf2ecf21..34896807da 100644
--- a/docs/build/reference/command-line-property-pages.md
+++ b/docs/build/reference/command-line-property-pages.md
@@ -1,7 +1,7 @@
---
title: "Command Line Property Pages"
ms.date: "11/04/2016"
-f1_keywords: ["vc.project.AdditionalOptionsPage"]
+f1_keywords: ["vc.project.AdditionalOptionsPage", "vc.project.CommandLinePage"]
helpviewer_keywords: ["Command Line property pages"]
ms.assetid: e1721b6c-8b39-4b44-a41e-69b5bb470cc9
---
diff --git a/docs/build/reference/command-macros-and-options-macros.md b/docs/build/reference/command-macros-and-options-macros.md
index 16f44cd12a..c466bd09f5 100644
--- a/docs/build/reference/command-macros-and-options-macros.md
+++ b/docs/build/reference/command-macros-and-options-macros.md
@@ -1,17 +1,18 @@
---
-title: "Command Macros and Options Macros"
-ms.date: "11/04/2016"
+title: "Command macros and options macros"
+description: "Describes the predefined NMAKE macros for build tools and their options."
+ms.date: "11/20/2019"
helpviewer_keywords: ["options macros", "command macros in NMAKE", "macros, options macros", "macros, command macros"]
ms.assetid: 50dff03c-0dc3-4a8a-9a17-57e0e4ea9bac
+no-loc: [AS, AFLAGS, CC, CFLAGS, CPP, CPPFLAGS, CXX, CXXFLAGS, RC, RFLAGS, ias, ml, ml64, cl, rc]
---
-# Command Macros and Options Macros
+# Command macros and options macros
Command macros are predefined for Microsoft products. Options macros represent options to these products and are undefined by default. Both are used in predefined inference rules and can be used in description blocks or user-defined inference rules. Command macros can be redefined to represent part or all of a command line, including options. Options macros generate a null string if left undefined.
|Microsoft product|Command macro|Defined as|Options macro|
|-----------------------|-------------------|----------------|-------------------|
-|Macro Assembler|**AS**|ml|**AFLAGS**|
-|Basic Compiler|**BC**|bc|**BFLAGS**|
+|Macro Assembler|**AS**|ml, ias, or ml64|**AFLAGS**|
|C Compiler|**CC**|cl|**CFLAGS**|
|C++ Compiler|**CPP**|cl|**CPPFLAGS**|
|C++ Compiler|**CXX**|cl|**CXXFLAGS**|
diff --git a/docs/build/reference/common-macros-for-build-commands-and-properties.md b/docs/build/reference/common-macros-for-build-commands-and-properties.md
index f22426f53e..1083f381f2 100644
--- a/docs/build/reference/common-macros-for-build-commands-and-properties.md
+++ b/docs/build/reference/common-macros-for-build-commands-and-properties.md
@@ -51,7 +51,7 @@ This table describes a commonly used subset of the available macros; there are m
|**$(TargetPath)**|The absolute path name of the primary output file for the build (defined as drive + path + base name + file extension).|
|**$(VCInstallDir)**|The directory that contains the C++ content of your Visual Studio installation. This property contains the version of the targeted Microsoft C++ (MSVC) toolset, which might be different that the host Visual Studio. For example, when building with `$(PlatformToolset) = v140`, **$(VCInstallDir)** contains the path to the Visual Studio 2015 installation.|
|**$(VSInstallDir)**|The directory into which you installed Visual Studio. This property contains the version of the targeted Visual Studio toolset, which might be different that the host Visual Studio. For example, when building with `$(PlatformToolset) = v110`, **$(VSInstallDir)** contains the path to the Visual Studio 2012 installation.|
-|**$(WebDeployPath)**|The relative path from the web deployment root to where the project outputs belong. Returns the same value as .|
+|**$(WebDeployPath)**|The relative path from the web deployment root to where the project outputs belong.|
|**$(WebDeployRoot)**|The absolute path to the location of **\**. For example, c:\inetpub\wwwroot.|
## Obsolete macros
diff --git a/docs/build/reference/compiler-option-warning-level.md b/docs/build/reference/compiler-option-warning-level.md
index 276e91facf..4b89c26f11 100644
--- a/docs/build/reference/compiler-option-warning-level.md
+++ b/docs/build/reference/compiler-option-warning-level.md
@@ -1,53 +1,59 @@
---
-title: "/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)"
-ms.date: "01/31/2018"
+title: "/w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning level)"
+description: "Reference for the Microsoft C/C++ compiler options: /w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, and /WX."
+ms.date: "01/31/2020"
f1_keywords: ["VC.Project.VCCLCompilerTool.DisableSpecificWarnings", "VC.Project.VCCLCompilerTool.WarningLevel", "VC.Project.VCCLWCECompilerTool.DisableSpecificWarnings", "VC.Project.VCCLCompilerTool.WarnAsError", "VC.Project.VCCLWCECompilerTool.WarnAsError", "/wx", "VC.Project.VCCLWCECompilerTool.WarningLevel", "/wall", "VC.Project.VCCLCompilerTool.TreatSpecificWarningsAsErrors", "/Wv", "/w0", "/w1", "/w2", "/w3", "/w4", "/wd", "/we", "/wo"]
helpviewer_keywords: ["/W1 compiler option [C++]", "w compiler option [C++]", "-wo compiler option [C++]", "Warning Level compiler option", "W1 compiler option [C++]", "-we compiler option [C++]", "/WX compiler option [C++]", "-wd compiler option [C++]", "WX compiler option [C++]", "wo compiler option [C++]", "Wall compiler option [C++]", "/w compiler option", "W2 compiler option [C++]", "-W2 compiler option [C++]", "wd compiler option [C++]", "/we compiler option [C++]", "we compiler option [C++]", "-W1 compiler option [C++]", "-W4 compiler option [C++]", "-Wall compiler option [C++]", "/Wall compiler option [C++]", "-W0 compiler option [C++]", "W0 compiler option [C++]", "-WX compiler option [C++]", "/wo compiler option [C++]", "W4 compiler option [C++]", "W3 compiler option [C++]", "/wd compiler option [C++]", "warnings, as errors compiler option", "/W3 compiler option [C++]", "/W0 compiler option [C++]", "/W4 compiler option [C++]", "-W3 compiler option [C++]", "-w compiler option [C++]", "/W2 compiler option [C++]", "/Wv compiler option [C++]"]
---
-# /w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning Level)
+# /w, /W0, /W1, /W2, /W3, /W4, /w1, /w2, /w3, /w4, /Wall, /wd, /we, /wo, /Wv, /WX (Warning level)
Specifies how the compiler generates warnings for a given compilation.
## Syntax
-> **/w**
-> **/W0**
-> **/W1**
-> **/W2**
-> **/W3**
-> **/W4**
-> **/Wall**
-> **/Wv**\[**:**_version_]
-> **/WX**
-> **/w1**_warning_
-> **/w2**_warning_
-> **/w3**_warning_
-> **/w4**_warning_
-> **/wd**_warning_
-> **/we**_warning_
+> **/w**\
+> **/W0**\
+> **/W1**\
+> **/W2**\
+> **/W3**\
+> **/W4**\
+> **/Wall**\
+> **/Wv**\[**:**_version_]\
+> **/WX**\
+> **/w1**_warning_\
+> **/w2**_warning_\
+> **/w3**_warning_\
+> **/w4**_warning_\
+> **/wd**_warning_\
+> **/we**_warning_\
> **/wo**_warning_
## Remarks
The warning options specify which compiler warnings to display and the warning behavior for the entire compilation.
-The warning options and related arguments are described in the following table:
+The warning options and related arguments are described in the following tables:
-|Option|Description|
-------------|-----------------|
-|**/w**|Suppresses all compiler warnings.|
-|**/W0**
**/W1**
**/W2**
**/W3**
**/W4**|Specifies the level of warnings to be generated by the compiler. Valid warning levels range from 0 to 4:
**/W0** suppresses all warnings. This is equivalent to **/w**.
**/W1** displays level 1 (severe) warnings. **/W1** is the default setting in the command line compiler.
**/W2** displays level 1 and level 2 (significant) warnings.
**/W3** displays level 1, level 2 and level 3 (production quality) warnings. **/W3** is the default setting in the IDE.
**/W4** displays level 1, level 2, and level 3 warnings, and all level 4 (informational) warnings that are not turned off by default. We recommend that you use this option to provide lint-like warnings. For a new project, it may be best to use **/W4** in all compilations; this will ensure the fewest possible hard-to-find code defects.|
-|**/Wall**|Displays all warnings displayed by **/W4** and all other warnings that **/W4** does not include—for example, warnings that are off by default. For more information, see [Compiler Warnings That Are Off By Default](../../preprocessor/compiler-warnings-that-are-off-by-default.md).|
-|**/Wv**\[**:**_version_]|Displays only warnings introduced in compiler version *version* and earlier. You can use this option to suppress new warnings in code when you migrate to a newer version of the compiler, and to maintain your existing build process while you fix them. The optional parameter *version* takes the form *nn*[.*mm*[.*bbbbb*]] where *nn* is the major version number, *mm* is the optional minor version number, and *bbbbb* is the optional build number of the compiler. For example, use */Wv:17* to display warnings introduced in Visual Studio 2012 (that is, any version of the compiler that has a major version number of 17) or earlier, but suppress warnings introduced in Visual Studio 2013 (major version 18) and later. By default, **/Wv** uses the current compiler version number, and no warnings are suppressed. For information about which warnings are suppressed by compiler version, see [Compiler Warnings by compiler version](../../error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md).|
-|**/WX**|Treats all compiler warnings as errors. For a new project, it may be best to use **/WX** in all compilations; resolving all warnings ensures the fewest possible hard-to-find code defects.
The linker also has a **/WX** option. For more information, see [/WX (Treat Linker Warnings as Errors)](wx-treat-linker-warnings-as-errors.md).|
-|**/w1**_nnnn_
**/w2**_nnnn_
**/w3**_nnnn_
**/w4**_nnnn_|Sets the warning level for the warning number specified by _nnnn_. This lets you change the compiler behavior for that warning when a specific warning level is set. You can use these options in combination with other warning options to enforce your own coding standards for warnings, rather than the default ones provided by Visual Studio.
For example, **/w34326** causes C4326 to be generated as a level 3 warning instead of level 1. If you compile by using both the **/w34326** option and the **/W2** option, warning C4326 is not generated.|
-|**/wd**_nnnn_|Suppresses the compiler warning that is specified by _nnnn_.
For example, **/wd4326** suppresses compiler warning C4326.|
-|**/we**_nnnn_|Treats the compiler warning that is specified by _nnnn_ as an error.
For example, **/we4326** causes warning number C4326 to be treated as an error by the compiler.|
-|**/wo**_nnnn_|Reports the compiler warning that is specified by _nnnn_ only once.
For example, **/wo4326** causes warning C4326 to be reported only once, the first time it is encountered by the compiler.|
+Option | Description
+------ | -----------
+**/w** | Suppresses all compiler warnings.
+**/W0**
**/W1**
**/W2**
**/W3**
**/W4** | Specifies the level of warnings to be generated by the compiler. Valid warning levels range from 0 to 4:
**/W0** suppresses all warnings. It's equivalent to **/w**.
**/W1** displays level 1 (severe) warnings. **/W1** is the default setting in the command-line compiler.
**/W2** displays level 1 and level 2 (significant) warnings.
**/W3** displays level 1, level 2, and level 3 (production quality) warnings. **/W3** is the default setting in the IDE.
**/W4** displays level 1, level 2, and level 3 warnings, and all level 4 (informational) warnings that aren't off by default. We recommend that you use this option to provide lint-like warnings. For a new project, it may be best to use **/W4** in all compilations. This option helps ensure the fewest possible hard-to-find code defects.
+**/Wall** | Displays all warnings displayed by **/W4** and all other warnings that **/W4** doesn't include—for example, warnings that are off by default. For more information, see [Compiler warnings that are off by default](../../preprocessor/compiler-warnings-that-are-off-by-default.md).
+**/Wv**\[**:**_version_] | Displays only warnings introduced in the *version* compiler version and earlier. You can use this option to suppress new warnings in code when you migrate to a newer version of the compiler. It lets you maintain your existing build process while you fix them. The optional parameter *version* takes the form *nn*\[.*mm*\[.*bbbbb*]], where *nn* is the major version number, *mm* is the optional minor version number, and *bbbbb* is the optional build number of the compiler. For example, use **/Wv:17** to display only warnings introduced in Visual Studio 2012 (major version 17) or earlier. That is, it displays warnings from any version of the compiler that has a major version number of 17 or less. It suppresses warnings introduced in Visual Studio 2013 (major version 18) and later. By default, **/Wv** uses the current compiler version number, and no warnings are suppressed. For information about which warnings are suppressed by compiler version, see [Compiler warnings by compiler version](../../error-messages/compiler-warnings/compiler-warnings-by-compiler-version.md).
+**/WX** | Treats all compiler warnings as errors. For a new project, it may be best to use **/WX** in all compilations; resolving all warnings ensures the fewest possible hard-to-find code defects.
The linker also has a **/WX** option. For more information, see [/WX (Treat linker warnings as errors)](wx-treat-linker-warnings-as-errors.md).
-If you use any of the warning options when you create a precompiled header by using the [/Yc](yc-create-precompiled-header-file.md) option, any use of the precompiled header by using the [/Yu](yu-use-precompiled-header-file.md) option causes those same warning options to be in effect again. You can override the warning options set in the precompiled header by using another warning option on the command line.
+The following options are mutually exclusive with each other. The last option that's specified from this group is the one applied:
-You can use a [#pragma warning](../../preprocessor/warning.md) directive to control the level of warning that is reported at compile time in specific source files.
+Option | Description
+------ | -----------
+**/w1**_nnnn_
**/w2**_nnnn_
**/w3**_nnnn_
**/w4**_nnnn_ | Sets the warning level for the warning number specified by _nnnn_. These options let you change the compiler behavior for that warning when a specific warning level is set. You can use these options in combination with other warning options to enforce your own coding standards for warnings, rather than the default ones provided by Visual Studio.
For example, **/w34326** causes C4326 to be generated as a level 3 warning instead of level 1. If you compile by using both the **/w34326** option and the **/W2** option, warning C4326 isn't generated.
+**/wd**_nnnn_ | Suppresses the compiler warning that is specified by _nnnn_.
For example, **/wd4326** suppresses compiler warning C4326.
+**/we**_nnnn_ | Treats the compiler warning that is specified by _nnnn_ as an error.
For example, **/we4326** causes warning number C4326 to be treated as an error by the compiler.
+**/wo**_nnnn_ | Reports the compiler warning that is specified by _nnnn_ only once.
For example, **/wo4326** causes warning C4326 to be reported only once, the first time it's encountered by the compiler.
+
+If you use any warning options when you create a precompiled header, it keeps those settings. Using the precompiled header puts those same warning options in effect again. To override the precompiled header warning options, set another warning option on the command line.
+
+You can use a [#pragma warning](../../preprocessor/warning.md) directive to control the level of warning that's reported at compile time in specific source files.
Warning pragma directives in source code are unaffected by the **/w** option.
@@ -57,7 +63,7 @@ The [build errors documentation](../../error-messages/compiler-errors-1/c-cpp-bu
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. To set the **/W0**, **/W1**, **/W2**, **/W3**, **/W4**, **/Wall**, **/Wv**, **/WX** or **/WX-** options, select the **Configuration Properties** > **C/C++** > **General** property page.
+1. To set the **/W0**, **/W1**, **/W2**, **/W3**, **/W4**, **/Wall**, **/Wv**, **/WX**, or **/WX-** options, select **Configuration Properties** > **C/C++** > **General**.
- To set the **/W0**, **/W1**, **/W2**, **/W3**, **/W4**, or **/Wall** options, modify the **Warning Level** property.
@@ -67,9 +73,9 @@ The [build errors documentation](../../error-messages/compiler-errors-1/c-cpp-bu
1. To set the **/wd** or **/we** options, select the **Configuration Properties** > **C/C++** > **Advanced** property page.
- - To set the **/wd** option, select the **Disable Specific Warnings** property drop down control and then choose **Edit**. In the edit box in the **Disable Specific Warnings** dialog, enter the warning number. To enter more than one warning, separate the values by using a semicolon (**;**). For example, to disable both C4001 and C4010, enter **4001;4010**. Choose **OK** to save your changes and return to the **Property Pages** dialog.
+ - To set the **/wd** option, select the **Disable Specific Warnings** property dropdown control and then choose **Edit**. In the edit box in the **Disable Specific Warnings** dialog, enter the warning number. To enter more than one warning, separate the values by using a semicolon (**;**). For example, to disable both C4001 and C4010, enter **4001;4010**. Choose **OK** to save your changes and return to the **Property Pages** dialog.
- - To set the **/we** option, Select the **Treat Specific Warnings As Errors** property drop down control and then choose **Edit**. In the edit box in the **Treat Specific Warnings As Errors** dialog, enter the warning number. To enter more than one warning, separate the values by using a semicolon (**;**). For example, to treat both C4001 and C4010 as errors, enter **4001;4010**. Choose **OK** to save your changes and return to the **Property Pages** dialog.
+ - To set the **/we** option, Select the **Treat Specific Warnings As Errors** property dropdown control and then choose **Edit**. In the edit box in the **Treat Specific Warnings As Errors** dialog, enter the warning number. To enter more than one warning, separate the values by using a semicolon (**;**). For example, to treat both C4001 and C4010 as errors, enter **4001;4010**. Choose **OK** to save your changes and return to the **Property Pages** dialog.
1. To set the **/wo** option, select the **Configuration Properties** > **C/C++** > **Command Line** property page. Enter the compiler option in the **Additional Options** box.
@@ -81,5 +87,5 @@ The [build errors documentation](../../error-messages/compiler-errors-1/c-cpp-bu
## See also
-[MSVC Compiler Options](compiler-options.md)
-[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
+[MSVC compiler options](compiler-options.md)\
+[MSVC compiler command-line syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/compiler-options-listed-alphabetically.md b/docs/build/reference/compiler-options-listed-alphabetically.md
index 4b67a8a84a..eccef02466 100644
--- a/docs/build/reference/compiler-options-listed-alphabetically.md
+++ b/docs/build/reference/compiler-options-listed-alphabetically.md
@@ -1,6 +1,6 @@
---
title: "Compiler Options Listed Alphabetically"
-ms.date: "08/08/2019"
+ms.date: "01/08/2020"
helpviewer_keywords: ["compiler options, C++"]
---
# Compiler Options Listed Alphabetically
@@ -102,9 +102,12 @@ The following is a comprehensive alphabetical list of compiler options. For a ca
|[/Qfast_transcendentals](qfast-transcendentals-force-fast-transcendentals.md)|Generates fast transcendentals.|
|[/QIfist](qifist-suppress-ftol.md)|Deprecated. Suppresses `_ftol` when a conversion from a floating-point type to an integral type is required (x86 only).|
|[/Qimprecise_fwaits](qimprecise-fwaits-remove-fwaits-inside-try-blocks.md)|Removes `fwait` commands inside `try` blocks.|
+|[/QIntel-jcc-erratum](qintel-jcc-erratum.md)|Mitigates the performance impact of the Intel JCC erratum microcode update.|
|[/Qpar (Auto-Parallelizer)](qpar-auto-parallelizer.md)|Enables automatic parallelization of loops that are marked with the [#pragma loop()](../../preprocessor/loop.md) directive.|
|[/Qsafe_fp_loads](qsafe-fp-loads.md)|Uses integer move instructions for floating-point values and disables certain floating point load optimizations.|
|[/Qspectre](qspectre.md)|Specifies compiler generation of instructions to mitigate certain Spectre variant 1 security vulnerabilities.|
+|[/Qspectre-load](qspectre-load.md)|Specifies compiler generation of serializing instructions to mitigate Spectre security vulnerabilities based on load instructions.|
+|[/Qspectre-load-cf](qspectre-load-cf.md)|Specifies compiler generation of serializing instructions to mitigate Spectre security vulnerabilities based on control flow instructions which load memory.|
|[/Qvec-report (Auto-Vectorizer Reporting Level)](qvec-report-auto-vectorizer-reporting-level.md)|Enables reporting levels for automatic vectorization.|
|[/RTC](rtc-run-time-error-checks.md)|Enables run-time error checking.|
|[/sdl](sdl-enable-additional-security-checks.md)|Enables additional security features and warnings.|
@@ -150,6 +153,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 7a1aac979e..7946679822 100644
--- a/docs/build/reference/compiler-options-listed-by-category.md
+++ b/docs/build/reference/compiler-options-listed-by-category.md
@@ -1,6 +1,6 @@
---
title: "Compiler Options Listed by Category"
-ms.date: "08/08/2019"
+ms.date: "01/08/2020"
helpviewer_keywords: ["compiler options, C++"]
ms.assetid: c4750dcf-dba0-4229-99b6-45cdecc11729
---
@@ -57,10 +57,13 @@ This article contains a categorical list of compiler options. For an alphabetica
|[/Qfast_transcendentals](qfast-transcendentals-force-fast-transcendentals.md)|Generates fast transcendentals.|
|[/QIfist](qifist-suppress-ftol.md)|Deprecated. Suppresses the call of the helper function `_ftol` when a conversion from a floating-point type to an integral type is required. (x86 only)|
|[/Qimprecise_fwaits](qimprecise-fwaits-remove-fwaits-inside-try-blocks.md)|Removes `fwait` commands inside `try` blocks.|
+|[/QIntel-jcc-erratum](qintel-jcc-erratum.md)|Mitigates the performance impact of the Intel JCC erratum microcode update.|
|[/Qpar](qpar-auto-parallelizer.md)|Enables automatic parallelization of loops.|
|[/Qpar-report](qpar-report-auto-parallelizer-reporting-level.md)|Enables reporting levels for automatic parallelization.|
|[/Qsafe_fp_loads](qsafe-fp-loads.md)|Uses integer move instructions for floating-point values and disables certain floating point load optimizations.|
|[/Qspectre](qspectre.md)|Enable mitigations for CVE 2017-5753, for a class of Spectre attacks.|
+|[/Qspectre-load](qspectre-load.md)|Generate serializing instructions for every load instruction.|
+|[/Qspectre-load-cf](qspectre-load-cf.md)|Generate serializing instructions for every control flow instruction which loads memory.|
|[/Qvec-report](qvec-report-auto-vectorizer-reporting-level.md)|Enables reporting levels for automatic vectorization.|
|[/RTC](rtc-run-time-error-checks.md)|Enables run-time error checking.|
|[/volatile](volatile-volatile-keyword-interpretation.md)|Selects how the volatile keyword is interpreted.|
@@ -115,6 +118,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/cumulative-dependencies.md b/docs/build/reference/cumulative-dependencies.md
deleted file mode 100644
index abdf1b6ff6..0000000000
--- a/docs/build/reference/cumulative-dependencies.md
+++ /dev/null
@@ -1,50 +0,0 @@
----
-title: "Cumulative Dependencies"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["dependencies, cumulative", "cumulative dependencies in NMAKE", "dependencies"]
-ms.assetid: fa6dd777-80b8-437d-87a7-aec0ed818a49
----
-# Cumulative Dependencies
-
-Dependencies are cumulative in a description block if a target is repeated.
-
-For example, this set of rules,
-
-```Output
-bounce.exe : jump.obj
-bounce.exe : up.obj
- echo Building bounce.exe...
-```
-
-is evaluated as this:
-
-```Output
-bounce.exe : jump.obj up.obj
- echo Building bounce.exe...
-```
-
-Multiple targets in multiple dependency lines in a single description block are evaluated as if each were specified in a separate description block, but targets that are not in the last dependency line do not use the commands block. NMAKE attempts to use an inference rule for such targets.
-
-For example, this set of rules,
-
-```Output
-leap.exe bounce.exe : jump.obj
-bounce.exe climb.exe : up.obj
- echo Building bounce.exe...
-```
-
-is evaluated as this:
-
-```Output
-
-leap.exe : jump.obj
-# invokes an inference rule
-bounce.exe : jump.obj up.obj
- echo Building bounce.exe...
-climb.exe : up.obj
- echo Building bounce.exe...
-```
-
-## See also
-
-[Targets](targets.md)
diff --git a/docs/build/reference/d-preprocessor-definitions.md b/docs/build/reference/d-preprocessor-definitions.md
index f505a9ce21..fd999a97a5 100644
--- a/docs/build/reference/d-preprocessor-definitions.md
+++ b/docs/build/reference/d-preprocessor-definitions.md
@@ -1,6 +1,6 @@
---
title: "/D (Preprocessor Definitions)"
-ms.date: "11/04/2016"
+ms.date: "09/18/2019"
f1_keywords: ["VC.Project.VCNMakeTool.PreprocessorDefinitions", "VC.Project.VCCLCompilerTool.PreprocessorDefinitions", "/d"]
helpviewer_keywords: ["preprocessor definition symbols", "constants, defining", "macros, compiling", "/D compiler option [C++]", "-D compiler option [C++]", "D compiler option [C++]"]
ms.assetid: b53fdda7-8da1-474f-8811-ba7cdcc66dba
@@ -11,37 +11,44 @@ Defines a preprocessing symbol for a source file.
## Syntax
-```
-/Dname[= | # [{string | number}] ]
-```
+> **/D**\[ ]_name_[`=` | `#` [{ *string* | *number* }] ]\
+> **/D**\[ ]`"`_name_[`=` | `#` [{ *string* | *number* }] ]`"`
## Remarks
-You can use this symbol together with `#if` or `#ifdef` to compile source code conditionally. The symbol definition remains in effect until it is redefined in the code or is undefined in the code by the `#undef` directive.
+You can use this symbol together with `#if` or `#ifdef` to compile source code conditionally. The symbol definition remains in effect until it's redefined in the code, or is undefined in the code by an `#undef` directive.
+
+**/D** has the same effect as a `#define` directive at the beginning of a source code file. The difference is that **/D** strips quotation marks on the command line, and a `#define` directive keeps them. You can have whitespace between the **/D** and the symbol. There can't be whitespace between the symbol and the equals sign, or between the equals sign and any value assigned.
-**/D** has the same effect as the `#define` directive at the beginning of a source code file, except that **/D** strips quotation marks on the command line and `#define` retains them.
+By default, the value associated with a symbol is 1. For example, `/D name` is equivalent to `/D name=1`. In the example at the end of this article, the definition of `TEST` is shown to print `1`.
-By default, the value associated with a symbol is 1. For example, **/D**`name` is equivalent to **/D**`name`**=1**. In the example at the end of this article, the definition of **TEST** is shown to print `1`.
+Compiling by using `/D name=` causes the symbol *name* to have no associated value. Although the symbol can still be used to conditionally compile code, it otherwise evaluates to nothing. In the example, if you compile by using `/DTEST=`, an error occurs. This behavior resembles the use of `#define` with or without a value.
-Compiling by using **/D**`name`**=** causes the symbol to have no associated value. Although the symbol can still be used to conditionally compile code, it otherwise evaluates to nothing. In the example, if you compile by using **/DTEST=**, an error occurs. This behavior resembles the use of `#define` with or without a value.
+The **/D** option doesn't support function-like macro definitions. To insert definitions that can't be defined on the command line, consider the [/FI (Name forced include file)](fi-name-forced-include-file.md) compiler option.
+
+You can use **/D** multiple times on the command line to define additional symbols. If the same symbol is defined more than once, the last definition is used.
This command defines the symbol DEBUG in TEST.c:
-**CL /DDEBUG TEST.C**
+```cmd
+CL /DDEBUG TEST.C
+```
This command removes all occurrences of the keyword `__far` in TEST.c:
-**CL /D__far= TEST.C**
+```cmd
+CL /D __far= TEST.C
+```
-The **CL** environment variable cannot be set to a string that contains the equal sign. To use **/D** together with the **CL** environment variable, you must specify the number sign instead of the equal sign:
+The **CL** environment variable can't be set to a string that contains the equal sign. To use **/D** together with the **CL** environment variable, you must specify the number sign (`#`) instead of the equal sign:
-```
+```cmd
SET CL=/DTEST#0
```
-When you define a preprocessing symbol at the command prompt, consider both compiler parsing rules and shell parsing rules. For example, to define a percent-sign preprocessing symbol (%) in your program, specify two percent-sign characters (%%) at the command prompt: If you specify only one, a parsing error is emitted.
+When you define a preprocessing symbol at the command prompt, consider both compiler parsing rules and shell parsing rules. For example, to define a percent-sign preprocessing symbol (`%`) in your program, specify two percent-sign characters (`%%`) at the command prompt. If you specify only one, a parsing error is emitted.
-```
+```cmd
CL /DTEST=%% TEST.C
```
@@ -55,24 +62,26 @@ CL /DTEST=%% TEST.C
1. In the **Preprocessor Definitions** dialog box, add (one per line), modify, or delete one or more definitions. Choose **OK** to save your changes.
+ You don't need to include the '/D' option prefix on the definitions you specify here. In the property page, definitions are separated by semicolons (`;`).
+
### To set this compiler option programmatically
- See .
## Example
-```
+```cpp
// cpp_D_compiler_option.cpp
-// compile with: /DTEST
+// compile with: cl /EHsc /DTEST cpp_D_compiler_option.cpp
#include
int main( )
{
- #ifdef TEST
- printf_s("TEST defined %d\n", TEST);
- #else
- printf_s("TEST not defined\n");
- #endif
+#ifdef TEST
+ printf_s("TEST defined %d\n", TEST);
+#else
+ printf_s("TEST not defined\n");
+#endif
}
```
@@ -82,8 +91,9 @@ TEST defined 1
## See also
-[MSVC Compiler Options](compiler-options.md)
-[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)
-[/U, /u (Undefine Symbols)](u-u-undefine-symbols.md)
-[#undef Directive (C/C++)](../../preprocessor/hash-undef-directive-c-cpp.md)
+[MSVC Compiler Options](compiler-options.md)\
+[MSVC Compiler Command-Line Syntax](compiler-command-line-syntax.md)\
+[/FI (Name forced include file)](fi-name-forced-include-file.md)\
+[/U, /u (Undefine Symbols)](u-u-undefine-symbols.md)\
+[#undef Directive (C/C++)](../../preprocessor/hash-undef-directive-c-cpp.md)\
[#define Directive (C/C++)](../../preprocessor/hash-define-directive-c-cpp.md)
diff --git a/docs/build/reference/debugging-prop-pages.md b/docs/build/reference/debugging-prop-pages.md
index e7418ba78b..9ad77d4066 100644
--- a/docs/build/reference/debugging-prop-pages.md
+++ b/docs/build/reference/debugging-prop-pages.md
@@ -1,6 +1,6 @@
---
title: "C++ Debugging Property Pages"
-ms.date: "7/24/2019"
+ms.date: "07/24/2019"
ms.topic: "article"
ms.assetid: 78115a6b-3799-4515-814e-8566b5bdc55d
f1_keywords:
diff --git a/docs/build/reference/dependency-side-effects.md b/docs/build/reference/dependency-side-effects.md
deleted file mode 100644
index 2367e73cec..0000000000
--- a/docs/build/reference/dependency-side-effects.md
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: "Dependency Side Effects"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["dependencies, side effects", "NMAKE program, dependents"]
-ms.assetid: d4e8db25-fdc0-4d73-81ec-1538f2e1b3e8
----
-# Dependency Side Effects
-
-If a target is specified with a colon (:) in two dependency lines in different locations, and if commands appear after only one of the lines, NMAKE interprets the dependencies as if adjacent or combined. It does not invoke an inference rule for the dependency that has no commands, but instead assumes that the dependencies belong to one description block and executes the commands specified with the other dependency. For example, this set of rules:
-
-```Output
-bounce.exe : jump.obj
- echo Building bounce.exe...
-
-bounce.exe : up.obj
-```
-
-is evaluated as this:
-
-```Output
-bounce.exe : jump.obj up.obj
- echo Building bounce.exe...
-```
-
-This effect does not occur if a double colon (`::`) is used. For example, this set of rules:
-
-```Output
-bounce.exe :: jump.obj
- echo Building bounce.exe...
-
-bounce.exe :: up.obj
-```
-
-is evaluated as this:
-
-```Output
-bounce.exe : jump.obj
- echo Building bounce.exe...
-
-bounce.exe : up.obj
-# invokes an inference rule
-```
-
-## See also
-
-[Targets](targets.md)
diff --git a/docs/build/reference/dependentloadflag.md b/docs/build/reference/dependentloadflag.md
index 1b0dbc52a0..c485c6c3e1 100644
--- a/docs/build/reference/dependentloadflag.md
+++ b/docs/build/reference/dependentloadflag.md
@@ -1,32 +1,46 @@
---
title: "/DEPENDENTLOADFLAG (Set default dependent load flags)"
-description: "The /DEPENDENTLOADFLAG option sets default flags for DLLs loaded using LoadLibrary"
-ms.date: "05/18/2018"
+description: "The /DEPENDENTLOADFLAG option sets default dependent load flags for DLLs loaded by this module."
+ms.date: "01/22/2020"
f1_keywords: ["dependentloadflag"]
helpviewer_keywords: ["LINK tool [C++], dependent load flags", "-DEPENDENTLOADFLAG linker option", "linker [C++], DEPENDENTLOADFLAG", "DEPENDENTLOADFLAG linker option", "/DEPENDENTLOADFLAG linker option"]
---
# /DEPENDENTLOADFLAG (Set default dependent load flags)
-Sets the default load flags used when `LoadLibrary` is used to load DLLs.
+::: moniker range="vs-2015"
+
+The **/DEPENDENTLOADFLAG** option requires Visual Studio 2017 or later.
+
+::: moniker-end
+
+::: moniker range=">=vs-2017"
+
+Sets the default load flags used when the operating system resolves the statically linked imports of a module.
## Syntax
-> **/DEPENDENTLOADFLAG**[**:**_loadflags_]
+> **/DEPENDENTLOADFLAG**[__:__*load_flags*]
### Arguments
-*loadflags*
-An optional "C"-style 16-bit integer value in decimal, octal with a leading zero, or hexadecimal with a leading `0x`, that specifies the dependent load flags to apply to all [LoadLibrary](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw) calls. The default value is 0.
+*load_flags*
+An optional integer value that specifies the load flags to apply when resolving statically linked import dependencies of the module. The default value is 0. For a list of supported flag values, see the `LOAD_LIBRARY_SEARCH_*` entries in [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw).
## Remarks
-This option is new in Visual Studio 2017, and applies only to apps running on Windows 10 RS1 and later versions. This option is ignored by other operating systems that run the app.
+When the operating system resolves the statically linked imports of a module, it uses the [default search order](/windows/win32/dlls/dynamic-link-library-search-order). Use the **/DEPENDENTLOADFLAG** option to specify a *load_flags* value that changes the search path used to resolve these imports. On supported operating systems, it changes the static import resolution search order, similar to what [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa) does when using `LOAD_LIBRARY_SEARCH` parameters. For information on the search order set by *load_flags*, see [Search order using LOAD_LIBRARY_SEARCH flags](/windows/win32/dlls/dynamic-link-library-search-order#search-order-using-load_library_search-flags).
-On supported operating systems, this option has the effect of changing calls to `LoadLibrary("dependent.dll")` to the equivalent of `LoadLibraryEx("dependent.dll", 0, loadflags)`. Calls to [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw) are unaffected. This option does not apply recursively to DLLs loaded by your app.
+This flag can be used to make one [DLL planting attack](/windows/win32/dlls/dynamic-link-library-security) vector more difficult. For example, consider an app that has statically linked a DLL:
-This flag can be used to prevent DLL planting attacks. For example, if an app uses `LoadLibrary` to load a dependent DLL, an attacker could plant a DLL with the same name in the search path used by `LoadLibrary`, such as the current directory, which may be checked before system directories if safe DLL search mode is disabled. Safe DLL search mode places the user's current directory later in the search order, and is enabled by default on Windows XP SP2 and later versions. For more information, see [Dynamic-Link Library Search Order](/windows/win32/Dlls/dynamic-link-library-search-order).
+- An attacker could plant a DLL with the same name earlier in the import resolution search path, such as the application directory. Protected directories are more difficult - but not impossible - for an attacker to change.
-If you specify the link option `/DEPENDENTLOADFLAG:0xA00` (the value of the combined flags `LOAD_LIBRARY_SEARCH_APPLICATION_DIR | LOAD_LIBRARY_SEARCH_SYSTEM32`), then even if safe DLL search mode is disabled on the user's computer, the DLL search path is limited to protected directories that are more difficult for an attacker to change. For information on the flags available, and their symbolic and numeric values, see the *dwFlags* parameter description in [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw).
+- If the DLL is missing from the application, %windows%\system32, and %windows% directories, import resolution falls through to the current directory. An attacker could plant a DLL there.
+
+In both cases, if you specify the link option `/DEPENDENTLOADFLAG:0x800` (the value of the flag `LOAD_LIBRARY_SEARCH_SYSTEM32`), then the module search path is limited to the %windows%\system32 directory. It offers some protection from planting attacks on the other directories. For more information, see [Dynamic-Link Library Security](/windows/win32/dlls/dynamic-link-library-security).
+
+To see the value set by the **/DEPENDENTLOADFLAG** option in any DLL, use the [DUMPBIN](dumpbin-reference.md) command with the [/LOADCONFIG](loadconfig.md) option.
+
+The **/DEPENDENTLOADFLAG** option is new in Visual Studio 2017. It applies only to apps running on Windows 10 RS1 and later versions. This option is ignored by other operating systems that run the app.
### To set the DEPENDENTLOADFLAG linker option in the Visual Studio development environment
@@ -43,8 +57,11 @@ If you specify the link option `/DEPENDENTLOADFLAG:0xA00` (the value of the comb
## See also
- [MSVC linker reference](linking.md)
-- [MSVC Linker Options](linker-options.md)
-- [Link an executable to a DLL](../linking-an-executable-to-a-dll.md#linking-implicitly)
-- [Link an executable to a DLL](../linking-an-executable-to-a-dll.md#determining-which-linking-method-to-use)
+- [MSVC linker options](linker-options.md)
+- [Link an executable to a DLL implicitly](../linking-an-executable-to-a-dll.md#linking-implicitly)
+- [Determine which linking method to use](../linking-an-executable-to-a-dll.md#determining-which-linking-method-to-use)
- [LoadLibraryEx](/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexw)
- [Dynamic-Link Library Search Order](/windows/win32/Dlls/dynamic-link-library-search-order)
+- [Dynamic-Link Library Security](/windows/win32/dlls/dynamic-link-library-security)
+
+::: moniker-end
diff --git a/docs/build/reference/description-blocks.md b/docs/build/reference/description-blocks.md
index ad0849e8c1..5e65659304 100644
--- a/docs/build/reference/description-blocks.md
+++ b/docs/build/reference/description-blocks.md
@@ -1,25 +1,207 @@
---
-title: "Description Blocks"
-ms.date: "11/04/2016"
+title: "Description blocks"
+description: "NMAKE uses description blocks to associate targets, dependencies, and commands in a makefile."
+ms.date: "10/29/2019"
helpviewer_keywords: ["description blocks", "NMAKE program, description blocks", "blocks, description"]
ms.assetid: 1321f228-d389-40ac-b0cd-4f6e9293602b
---
-# Description Blocks
+# Description blocks
-A description block is a dependency line optionally followed by a commands block:
+Description blocks form the core of a makefile. They describe the *targets*, or files to create, and their *dependencies*, the files needed to create the targets. A description block may include *commands*, that describe how to create the targets from the dependencies. A description block is a dependency line, optionally followed by a commands block:
-```
+```makefile
targets... : dependents...
commands...
```
-A dependency line specifies one or more targets and zero or more dependents. A target must be at the start of the line. Separate targets from dependents by a colon (:); spaces or tabs are allowed. To split the line, use a backslash (\ ) after a target or dependent. If a target does not exist, has an earlier timestamp than a dependent, or is a [pseudotarget](pseudotargets.md), NMAKE executes the commands. If a dependent is a target elsewhere and does not exist or is out-of-date with respect to its own dependents, NMAKE updates the dependent before updating the current dependency.
+## Dependency lines
+
+A *dependency line* specifies one or more targets, and zero or more dependents. If a target doesn't exist, or has an earlier timestamp than a dependent, NMAKE executes the commands in the command block. NMAKE also executes the command block if the target is a [pseudotarget](pseudotargets.md). Here's an example dependency line:
+
+```makefile
+hi_bye.exe : hello.obj goodbye.obj helper.lib
+```
+
+In this dependency line, `hi_bye.exe` is the target. Its dependencies are `hello.obj`, `goodbye.obj`, and `helper.lib`. The dependency line tells NMAKE to build the target whenever `hello.obj`, `goodbye.obj`, or `helper.lib` has changed more recently than `hi_bye.exe`.
+
+A target must be at the start of the line. It can't be indented with any spaces or tabs. Use a colon (`:`) to separate targets from dependents. Spaces or tabs are allowed between targets, the colon separator (`:`), and dependents. To split the dependency line, use a backslash (`\`) after a target or dependent.
+
+Before it executes command blocks, NMAKE scans all the dependencies and any applicable inference rules to build a *dependency tree*. A dependency tree specifies the steps required to fully update the target. NMAKE checks recursively whether a dependent is itself a target in another dependency list. After it builds the dependency tree, NMAKE checks time stamps. If any dependents in the tree are newer than the target, NMAKE builds the target.
+
+## Targets
+
+The targets section of a dependency line specifies one or more targets. A target can be any valid filename, directory name, or [pseudotarget](pseudotargets.md). Separate multiple targets by using one or more spaces or tabs. Targets aren't case-sensitive. Paths are permitted with filenames. A target and its path can't exceed 256 characters. If the target preceding the colon is a single character, use a separating space. Otherwise, NMAKE interprets the letter-colon combination as a drive specifier.
+
+### Multiple targets
+
+NMAKE evaluates multiple targets in a single dependency as if each were specified in a separate description block.
+
+For example, this rule:
+
+```makefile
+bounce.exe leap.exe : jump.obj
+ echo Building...
+```
+
+is evaluated as:
+
+```makefile
+bounce.exe : jump.obj
+ echo Building...
+
+leap.exe : jump.obj
+ echo Building...
+```
+
+### Cumulative dependencies
+
+Dependencies are cumulative in a description block, if a target is repeated.
+
+For example, this set of rules,
+
+```makefile
+bounce.exe : jump.obj
+bounce.exe : up.obj
+ echo Building bounce.exe...
+```
+
+is evaluated as:
+
+```makefile
+bounce.exe : jump.obj up.obj
+ echo Building bounce.exe...
+```
+
+When you have multiple targets in multiple dependency lines in a single description block, NMAKE evaluates them as if each were specified in a separate description block. However, only targets in the last dependency line use the commands block. NMAKE attempts to use an inference rule for the other targets.
+
+For example, this set of rules,
+
+```makefile
+leap.exe bounce.exe : jump.obj
+bounce.exe climb.exe : up.obj
+ echo Building bounce.exe...
+```
+
+is evaluated as:
+
+```makefile
+leap.exe : jump.obj
+# invokes an inference rule
+
+bounce.exe : jump.obj up.obj
+ echo Building bounce.exe...
+
+climb.exe : up.obj
+ echo Building bounce.exe...
+```
+
+### Targets in multiple description blocks
+
+To update a target in more than one description block using different commands, specify two consecutive colons (::) between targets and dependents.
+
+```makefile
+target.lib :: one.asm two.asm three.asm
+ ml one.asm two.asm three.asm
+ lib target one.obj two.obj three.obj
+target.lib :: four.c five.c
+ cl /c four.c five.c
+ lib target four.obj five.obj
+```
+
+### Dependency side effects
-## What do you want to know more about?
+You might specify a target with a colon (:) in two dependency lines in different locations. If commands appear after only one of the lines, NMAKE interprets the dependencies as if the lines were adjacent or combined. It doesn't invoke an inference rule for the dependency that has no commands. Instead, NMAKE assumes the dependencies belong to one description block, and executes the commands specified with the other dependency. Consider this set of rules:
-[Targets](targets.md)
+```makefile
+bounce.exe : jump.obj
+ echo Building bounce.exe...
+
+bounce.exe : up.obj
+```
+
+is evaluated as:
+
+```makefile
+bounce.exe : jump.obj up.obj
+ echo Building bounce.exe...
+```
+
+This effect doesn't occur if a double colon (`::`) is used. For example, this set of rules:
+
+```makefile
+bounce.exe :: jump.obj
+ echo Building bounce.exe...
+
+bounce.exe :: up.obj
+```
+
+is evaluated as:
+
+```makefile
+bounce.exe : jump.obj
+ echo Building bounce.exe...
+
+bounce.exe : up.obj
+# invokes an inference rule
+```
+
+### Pseudotargets
+
+A *pseudotarget* is a label used in place of a filename in a dependency line. It's interpreted as a file that doesn't exist, and so is out-of-date. NMAKE assumes a pseudotarget's timestamp is the same as the most recent of all its dependents. If it has no dependents, the current time is assumed. If a pseudotarget is used as a target, its commands are always executed. A pseudotarget used as a dependent must also appear as a target in another dependency. However, that dependency doesn't need to have a commands block.
+
+Pseudotarget names follow the filename syntax rules for targets. However, if the name doesn't have an extension, it can exceed the 8-character limit for filenames, and can be up to 256 characters long.
+
+Pseudotargets are useful when you want NMAKE to build more than one target automatically. NMAKE only builds targets specified on the command line. Or, if no command-line target is specified, it builds only the first target in the first dependency in the makefile. You can tell NMAKE to build multiple targets without listing them individually on the command line. Write a description block with a dependency containing a pseudotarget, and list the targets you want to build as its dependents. Then, place this description block first in the makefile, or specify the pseudotarget on the NMAKE command line.
+
+In this example, UPDATE is a pseudotarget.
+
+```makefile
+UPDATE : *.*
+!COPY $** c:\product\release
+```
+
+When UPDATE is evaluated, NMAKE copies all files in the current directory to the specified drive and directory.
+
+In the following makefile, the pseudotarget `all` builds both `project1.exe` and `project2.exe` if either `all` or no target is specified on the command line. The pseudotarget `setenv` changes the LIB environment variable before the `.exe` files are updated:
+
+```makefile
+all : setenv project1.exe project2.exe
+
+project1.exe : project1.obj
+ LINK project1;
+
+project2.exe : project2.obj
+ LINK project2;
+
+setenv :
+ set LIB=\project\lib
+```
+
+## Dependents
+
+In a dependency line, specify zero or more dependents after the colon (`:`) or double colon (`::`), using any valid filename or [pseudotarget](pseudotargets.md). Separate multiple dependents by using one or more spaces or tabs. Dependents aren't case-sensitive. Paths are permitted with filenames.
+
+### Inferred dependents
+
+Along with dependents you explicitly list in the dependency line, NMAKE can assume an *inferred dependent*. An inferred dependent is derived from an inference rule, and is evaluated before explicit dependents. When an inferred dependent is out-of-date compared to its target, NMAKE invokes the command block for the dependency. If an inferred dependent doesn't exist, or is out-of-date compared to its own dependents, NMAKE first updates the inferred dependent. For more information about inferred dependents, see [Inference rules](inference-rules.md).
+
+### Search paths for dependents
+
+You can specify an optional search path for each dependent. Here's the syntax to specify a set of directories to search:
+
+> **{**_directory_\[**;**_directory_...]**}**_dependent_
+
+Enclose directory names in braces (`{ }`). Separate multiple directories with a semicolon (`;`). No spaces or tabs are allowed. NMAKE looks for the dependent first in the current directory, and then in the list of directories in the order specified. You can use a macro to specify part or all of a search path. Only the specified dependent uses this search path.
+
+#### Directory search path example
+
+This dependency line shows how to create a directory specification for a search:
+
+```makefile
+reverse.exe : {\src\omega;e:\repo\backwards}retro.obj
+```
-[Dependents](dependents.md)
+The target `reverse.exe` has one dependent, `retro.obj`. The brace-enclosed list specifies two directories. NMAKE searches for `retro.obj` in the current directory first. If it isn’t there, NMAKE searches the `\src\omega` directory, then the `e:\repo\backwards` directory.
## See also
diff --git a/docs/build/reference/disasm.md b/docs/build/reference/disasm.md
index abd343ba29..caa4c31297 100644
--- a/docs/build/reference/disasm.md
+++ b/docs/build/reference/disasm.md
@@ -1,6 +1,6 @@
---
title: "/DISASM"
-ms.date: "1/17/2018"
+ms.date: "01/17/2018"
f1_keywords: ["/disasm"]
helpviewer_keywords: ["-DISASM dumpbin option", "DISASM dumpbin option", "/DISASM dumpbin option"]
---
diff --git a/docs/build/reference/dot-obj-files-as-linker-input.md b/docs/build/reference/dot-obj-files-as-linker-input.md
index 0dc0f43d73..2434549c27 100644
--- a/docs/build/reference/dot-obj-files-as-linker-input.md
+++ b/docs/build/reference/dot-obj-files-as-linker-input.md
@@ -15,7 +15,7 @@ Microsoft provides a complete description of the common object file format. For
Starting with Visual Studio 2005, the Microsoft MSVC compiler supports Unicode characters in identifiers as defined by the ISO/IEC C and C++ standards. Previous versions of the compiler supported only ASCII characters in identifiers. To support Unicode in the names of functions, classes, and statics, the compiler and linker use the Unicode UTF-8 encoding for COFF symbols in .obj files. The UTF-8 encoding is upwardly compatible with the ASCII encoding used by earlier versions of Visual Studio.
-For more information about the compiler and linker, see [Unicode Support in the Compiler and Linker](unicode-support-in-the-compiler-and-linker.md). For more information about the Unicode standard, see the [Unicode](https://www.unicode.org/) organization.
+For more information about the compiler and linker, see [Unicode Support in the Compiler and Linker](unicode-support-in-the-compiler-and-linker.md). For more information about the Unicode standard, see the [Unicode](https://home.unicode.org/) organization.
## See also
@@ -23,5 +23,5 @@ For more information about the compiler and linker, see [Unicode Support in the
[MSVC Linker Options](linker-options.md)
[Support for Unicode](../../text/support-for-unicode.md)
[Unicode Support in the Compiler and Linker](unicode-support-in-the-compiler-and-linker.md)
-[Unicode standard](https://www.unicode.org/)
+[Unicode standard](https://home.unicode.org/)
[PE Format](/windows/win32/Debug/pe-format)
diff --git a/docs/build/reference/dumpbin-options.md b/docs/build/reference/dumpbin-options.md
index d4d85a8587..504341a129 100644
--- a/docs/build/reference/dumpbin-options.md
+++ b/docs/build/reference/dumpbin-options.md
@@ -1,13 +1,15 @@
---
-title: "DUMPBIN Options"
-ms.date: "11/04/2016"
+title: "DUMPBIN options"
+ms.date: "10/24/2019"
f1_keywords: ["dumpbin"]
helpviewer_keywords: ["DUMPBIN program, options"]
ms.assetid: 563b696e-7599-4480-94b9-014776289ec8
---
-# DUMPBIN Options
+# DUMPBIN 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 arguments, 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. Most options apply to all binary files; a few apply only to certain types of files. By default, DUMPBIN sends information to standard output. Use the [/OUT](out-dumpbin.md) option to send output to a file.
+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 arguments, 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. Most options apply to all binary files, but a few apply only to certain types of files. By default, DUMPBIN sends information to standard output. Use the [/OUT](out-dumpbin.md) option to send output to a file.
+
+## Options list
DUMPBIN has the following options:
@@ -21,9 +23,9 @@ DUMPBIN has the following options:
- [/DIRECTIVES](directives.md)
-- [/DISASM](disasm.md)
+- [/DISASM\[:{BYTES\|NOBYTES}\]](disasm.md)
-- [/ERRORREPORT (dumpbin.exe)](errorreport-dumpbin-exe.md)
+- [/ERRORREPORT:{NONE|PROMPT|QUEUE|SEND}](errorreport-dumpbin-exe.md)
- [/EXPORTS](dash-exports.md)
@@ -31,27 +33,29 @@ DUMPBIN has the following options:
- [/HEADERS](headers.md)
-- [/IMPORTS](imports-dumpbin.md)
+- [/IMPORTS\[:filename\]](imports-dumpbin.md)
- [/LINENUMBERS](linenumbers.md)
-- [/LINKERMEMBER](linkermember.md)
+- [/LINKERMEMBER\[:{1|2}\]](linkermember.md)
- [/LOADCONFIG](loadconfig.md)
-- [/OUT](out-dumpbin.md)
+- [/NOPDB](nopdb.md)
+
+- [/OUT:filename](out-dumpbin.md)
- [/PDATA](pdata.md)
-- [/PDBPATH](pdbpath.md)
+- [/PDBPATH\[:VERBOSE\]](pdbpath.md)
-- [/RANGE](range.md)
+- [/RANGEE:vaMin\[,vaMax\]](range.md)
-- [/RAWDATA](rawdata.md)
+- [/RAWDATA\[:{NONE\|1\|2\|4\|8}\[,#\]\]](rawdata.md)
- [/RELOCATIONS](relocations.md)
-- [/SECTION](section-dumpbin.md)
+- [/SECTION:name](section-dumpbin.md)
- [/SUMMARY](summary.md)
@@ -59,7 +63,10 @@ DUMPBIN has the following options:
- [/TLS](tls.md)
+To list the options supported by DUMPBIN on the command line, use the **/?** option.
+
## See also
-[Additional MSVC Build Tools](c-cpp-build-tools.md)
-[DUMPBIN Reference](dumpbin-reference.md)
+[Additional MSVC build tools](c-cpp-build-tools.md)\
+[DUMPBIN command line](dumpbin-command-line.md)\
+[DUMPBIN reference](dumpbin-reference.md)
diff --git a/docs/build/reference/example-visual-cpp.md b/docs/build/reference/example-visual-cpp.md
index ba8119a3d4..c5ec5adaa1 100644
--- a/docs/build/reference/example-visual-cpp.md
+++ b/docs/build/reference/example-visual-cpp.md
@@ -26,7 +26,7 @@ Compile with [/doc](doc-process-documentation-comments-c-cpp.md) to process docu
## Example
-```
+```cpp
// xml_example_tag.cpp
// compile with: /clr /doc /LD
// post-build command: xdcmake xml_example_tag.dll
diff --git a/docs/build/reference/exception-visual-cpp.md b/docs/build/reference/exception-visual-cpp.md
index 1fc112239e..6e3310768d 100644
--- a/docs/build/reference/exception-visual-cpp.md
+++ b/docs/build/reference/exception-visual-cpp.md
@@ -35,7 +35,7 @@ The MSVC compiler will attempt to resolve cref references in one pass through th
## Example
-```
+```cpp
// xml_exception_tag.cpp
// compile with: /clr /doc /LD
// post-build command: xdcmake xml_exception_tag.dll
diff --git a/docs/build/reference/exceptions-c-cpp.md b/docs/build/reference/exceptions-c-cpp.md
index e045bc27c5..32201b977c 100644
--- a/docs/build/reference/exceptions-c-cpp.md
+++ b/docs/build/reference/exceptions-c-cpp.md
@@ -1,6 +1,6 @@
---
-title: "Exceptions (C/C++)"
-ms.date: "11/04/2016"
+title: "DLL loading exception codes (C/C++)"
+ms.date: "11/19/2019"
f1_keywords: ["ERROR_MOD_NOT_FOUND", "vcppException", "ERROR_SEVERITY_ERROR"]
helpviewer_keywords: ["vcppException", "C++ exception handling, delayed loading of DLLs", "delayed loading of DLLs, exceptions", "ERROR_SEVERITY_ERROR exception", "ERROR_MOD_NOT_FOUND exception"]
ms.assetid: c03be05d-1c39-4f35-84cf-00c9af3bae9a
diff --git a/docs/build/reference/experimental-preprocessor.md b/docs/build/reference/experimental-preprocessor.md
index ddf1ef758d..5ab98659a6 100644
--- a/docs/build/reference/experimental-preprocessor.md
+++ b/docs/build/reference/experimental-preprocessor.md
@@ -1,13 +1,13 @@
---
title: "/experimental:preprocessor (Enable preprocessor conformance mode)"
description: "Use the /experimental:preprocessor compiler option to enable experimental compiler support for a standard conforming preprocessor."
-ms.date: "09/03/2019"
+ms.date: "10/31/2019"
f1_keywords: ["preprocessor", "/experimental:preprocessor"]
helpviewer_keywords: ["preprocessor conformance", "/experimental:preprocessor", "Enable preprocessor conformance mode"]
---
# /experimental:preprocessor (Enable preprocessor conformance mode)
-This option enables an experimental, token-based preprocessor that conforms to C++11 standards, including C99 preprocessor features.
+This option enables an experimental, token-based preprocessor that more closely conforms to C++11 standards, including C99 preprocessor features. For more information, see [MSVC experimental preprocessor overview](../../preprocessor/preprocessor-experimental-overview.md).
## Syntax
@@ -19,219 +19,6 @@ Use the **/experimental:preprocessor** compiler option to enable the experimenta
The **/experimental:preprocessor** option is available starting in Visual Studio 2017 version 15.8.
-You can detect which preprocessor is in use at compile time. Check the value of the predefined macro [\_MSVC\_TRADITIONAL](../../preprocessor/predefined-macros.md) to tell if the traditional preprocessor is in use. This macro is set unconditionally by versions of the compiler that support it, independent of which preprocessor is invoked. Its value is 1 for the traditional preprocessor. It's 0 for the conformant experimental preprocessor:
-
-```cpp
-#if defined(_MSVC_TRADITIONAL) && _MSVC_TRADITIONAL
-// Logic using the traditional preprocessor
-#else
-// Logic using cross-platform compatible preprocessor
-#endif
-```
-
-### Behavior changes in the experimental preprocessor
-
-Here are some of the more common breaking changes found when preprocessor conformance mode is enabled:
-
-#### Macro comments
-
-The traditional preprocessor uses character buffers instead of preprocessor tokens. That allows some unusual behavior, such as this preprocessor comment trick, which doesn't work under the conforming preprocessor:
-
-```cpp
-#if DISAPPEAR
-#define DISAPPEARING_TYPE /##/
-#else
-#define DISAPPEARING_TYPE int
-#endif
-
-// myVal disappears when DISAPPEARING_TYPE is turned into a comment
-// To make standards compliant, wrap the following line with the appropriate #if/#endif
-DISAPPEARING_TYPE myVal;
-```
-
-#### String prefixes (L#val)
-
-The traditional preprocessor incorrectly combines a string prefix to the result of the [stringizing operator (#)](../../preprocessor/stringizing-operator-hash.md):
-
-```cpp
-#define DEBUG_INFO(val) L"debug prefix:" L#val
-// ^
-// this prefix
-
-const wchar_t *info = DEBUG_INFO(hello world);
-```
-
-The `L` prefix is unnecessary here, because the adjacent string literals get combined after macro expansion anyway. The backward compatible fix is to change the definition to:
-
-```cpp
-#define DEBUG_INFO(val) L"debug prefix:" #val
-// ^
-// no prefix
-```
-
-This issue is also found in convenience macros that 'stringize' the argument to a wide string literal:
-
-```cpp
-// The traditional preprocessor creates a single wide string literal token
-#define STRING(str) L#str
-
-// Potential fixes:
-// Use string concatenation of L"" and #str to add prefix
-// This works because adjacent string literals are combined after macro expansion
-#define STRING1(str) L""#str
-
-// Add the prefix after #str is stringized with additional macro expansion
-#define WIDE(str) L##str
-#define STRING2(str) WIDE(#str)
-
-// Use concatenation operator ## to combine the tokens.
-// The order of operations for ## and # is unspecified, although all compilers
-// checked perform the # operator before ## in this case.
-#define STRING3(str) L## #str
-```
-
-#### Warning on invalid ##
-
-When the [token-pasting operator (##)](../../preprocessor/token-pasting-operator-hash-hash.md) doesn't result in a single, valid preprocessing token, the behavior is undefined. The traditional preprocessor silently fails to combine the tokens. The new preprocessor matches the behavior of most other compilers and emits a diagnostic.
-
-```cpp
-// The ## is unnecessary and doesn't result in a single preprocessing token.
-#define ADD_STD(x) std::##x
-
-// Declare a std::string
-ADD_STD(string) s;
-```
-
-#### Comma elision in variadic macros
-
-Consider the following example:
-
-```cpp
-void func(int, int = 2, int = 3);
-// This macro replacement list has a comma followed by __VA_ARGS__
-#define FUNC(a, ...) func(a, __VA_ARGS__)
-int main()
-{
- // The following macro is replaced with:
- // func(10,20,30)
- FUNC(10, 20, 30);
-
- // A conforming preprocessor replaces the following macro with:
- // func(1, );
- // which results in a syntax error.
- FUNC(1, );
-}
-```
-
-All major compilers have a preprocessor extension that helps address this issue. The traditional MSVC preprocessor always removes commas before empty `__VA_ARGS__` replacements. The updated preprocessor more closely follows the behavior of other popular cross platform compilers. For the comma to be removed, the variadic argument must be missing, not just empty, and it must be marked with a `##` operator:
-
-```cpp
-#define FUNC2(a, ...) func(a , ## __VA_ARGS__)
-int main()
-{
- // The variadic argument is missing in the macro being evoked
- // The comma is removed and replaced with:
- // func(1)
- FUNC2(1);
-
- // The variadic argument is empty, but not missing. (Notice the
- // comma in the argument list.) The comma isn't removed
- // when the macro is replaced:
- // func(1, )
- FUNC2(1, );
-}
-```
-
-In the upcoming C++2a standard, this issue has been addressed by adding `__VA_OPT__`, which isn't implemented yet.
-
-#### Macro arguments are 'unpacked'
-
-In the traditional preprocessor, if a macro forwards one of its arguments to another dependent macro, then the argument doesn't get "unpacked" when it's substituted. Usually this optimization goes unnoticed, but it can lead to unusual behavior:
-
-```cpp
-// Create a string out of the first argument, and the rest of the arguments.
-#define TWO_STRINGS( first, ... ) #first, #__VA_ARGS__
-#define A( ... ) TWO_STRINGS(__VA_ARGS__)
-
-const char* c[2] = { A(1, 2) };
-// Conformant preprocessor results:
-// const char c[2] = { "1", "2" };
-// Traditional preprocessor results, all arguments are in the first string:
-// const char c[2] = { "1, 2", };
-```
-
-When expanding `A()`, the traditional preprocessor forwards all of the arguments packaged in `__VA_ARGS__` to the first argument of `TWO_STRINGS`. The variadic argument of `TWO_STRINGS` is empty, which causes the result of `#first` to be `"1, 2"` rather than just `"1"`. You may be wondering what happened to the result of `#__VA_ARGS__` in the traditional preprocessor expansion. if the variadic parameter is empty, it should result in an empty string literal "". Because of a separate issue, the empty string literal token wasn't generated.
-
-#### Rescanning replacement list for macros
-
-After a macro is replaced, the resulting tokens are rescanned for additional macro identifiers to replace. The rescan algorithm used by the traditional preprocessor isn't conformant, as shown in this example based on actual code:
-
-```cpp
-#define CAT(a,b) a ## b
-#define ECHO(...) __VA_ARGS__
-
-// IMPL1 and IMPL2 are implementation details
-#define IMPL1(prefix,value) do_thing_one( prefix, value)
-#define IMPL2(prefix,value) do_thing_two( prefix, value)
-// MACRO chooses the expansion behavior based on the value passed to macro_switch
-#define DO_THING(macro_switch, b) CAT(IMPL, macro_switch) ECHO(( "Hello", b))
-
-DO_THING(1, "World");
-// Traditional preprocessor:
-// do_thing_one( "Hello", "World");
-// Conformant preprocessor:
-// IMPL1 ( "Hello","World");
-```
-
-To see what is going on in this example, we break down the expansion starting with `DO_THING`:
-
-`DO_THING(1, "World")` ->
-`CAT(IMPL, 1) ECHO(("Hello", "World"))`
-
-Second, CAT is expanded:
-
-`CAT(IMPL, 1)` -> `IMPL ## 1` -> `IMPL1`
-
-Which puts the tokens into this state:
-
-`IMPL1 ECHO(("Hello", "World"))`
-
-The preprocessor finds the function-like macro identifier `IMPL1`, but it's not followed by a "(", so it's not considered a function-like macro invocation. It moves on to the following tokens and finds the function-like macro `ECHO` invoked:
-
-`ECHO(("Hello", "World"))` -> `("Hello", "World")`
-
-`IMPL1` is never considered again for expansion, so the full result of the expansions is:
-
-`IMPL1("Hello", "World");`
-
-The macro can be modified to behave the same way under both the experimental preprocessor and the traditional preprocessor. The solution is to add another layer of indirection:
-
-```cpp
-#define CAT(a,b) a##b
-#define ECHO(...) __VA_ARGS__
-
-// IMPL1 and IMPL2 are macros implementation details
-#define IMPL1(prefix,value) do_thing_one( prefix, value)
-#define IMPL2(prefix,value) do_thing_two( prefix, value)
-
-#define CALL(macroName, args) macroName args
-#define DO_THING_FIXED(a,b) CALL( CAT(IMPL, a), ECHO(( "Hello",b)))
-
-DO_THING_FIXED(1, "World");
-// macro expanded to:
-// do_thing_one( "Hello", "World");
-```
-
-### Conformance mode conformance
-
-The experimental preprocessor isn't complete yet, and some preprocessor directive logic still falls back to the traditional behavior. Here is a partial list of incomplete features:
-
-- Support for `_Pragma`
-- C++20 features
-- Additional diagnostic improvements
-- Switches to control the output under /E and /P
-- Boost blocking bug: Logical operators in preprocessor constant expressions aren't fully implemented in the new preprocessor. On some `#if` directives, the new preprocessor can fall back to the traditional preprocessor. The effect is only noticeable when macros that are incompatible with the traditional preprocessor get expanded, which can happen when building Boost preprocessor slots.
-
### To set this compiler option in the Visual Studio development environment
1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
diff --git a/docs/build/reference/gx-enable-exception-handling.md b/docs/build/reference/gx-enable-exception-handling.md
index f58f12b83d..e03161b50a 100644
--- a/docs/build/reference/gx-enable-exception-handling.md
+++ b/docs/build/reference/gx-enable-exception-handling.md
@@ -1,6 +1,6 @@
---
title: "/GX (Enable Exception Handling)"
-ms.date: "11/04/2016"
+ms.date: "11/19/2019"
f1_keywords: ["/gx"]
helpviewer_keywords: ["exception handling, enabling", "/GX compiler option [C++]", "-GX compiler option [C++]", "cl.exe compiler, exception handling", "enable exception handling compiler option [C++]", "GX compiler option [C++]"]
ms.assetid: 933b43ba-de77-4ff8-a48b-7074de90bc1c
@@ -21,8 +21,6 @@ Deprecated. Enables synchronous exception handling using the assumption that fun
By default, **/EHsc**, the equivalent of **/GX**, is in effect when you compile by using the Visual Studio development environment. When using the command line tools, no exception handling is specified. This is the equivalent of **/GX-**.
-For more information, see [C++ Exception Handling](../../cpp/cpp-exception-handling.md).
-
### To set this compiler option in the Visual Studio development environment
1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
diff --git a/docs/build/reference/hint-files.md b/docs/build/reference/hint-files.md
index d8979dc4ac..6b2a5ca8c4 100644
--- a/docs/build/reference/hint-files.md
+++ b/docs/build/reference/hint-files.md
@@ -24,7 +24,7 @@ A hint file contains user-customizable hints, which have the same syntax as C/C+
> [!IMPORTANT]
> If you modify or add a hint file, you need to take additional steps in order for the changes to take effect:
> - In versions before Visual Studio 2017 version 15.6: Delete the .sdf file and/or VC.db file in the solution for all changes.
-> - In Visual Studio 2017 versions 15.6 through 15.9: Close and reopen the solution after adding new hint files.
+> - In Visual Studio 2017 version 15.6 and later: Close and reopen the solution after adding new hint files.
## Scenario
diff --git a/docs/build/reference/inferred-dependents.md b/docs/build/reference/inferred-dependents.md
deleted file mode 100644
index 7f2004e3cc..0000000000
--- a/docs/build/reference/inferred-dependents.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: "Inferred Dependents"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["inferred dependents in NMAKE", "dependents, inferred"]
-ms.assetid: 9303045c-69b3-4f35-bffc-19d5cd6ea3c3
----
-# Inferred Dependents
-
-An inferred dependent is derived from an inference rule and is evaluated before explicit dependents. If an inferred dependent is out-of-date with respect to its target, NMAKE invokes the commands block for the dependency. If an inferred dependent does not exist or is out-of-date with respect to its own dependents, NMAKE first updates the inferred dependent. For more information about inferred dependents, see [Inference Rules](inference-rules.md).
-
-## See also
-
-[Dependents](dependents.md)
diff --git a/docs/build/reference/linker-options.md b/docs/build/reference/linker-options.md
index d8fec4af1c..00aa51d003 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.16.1|
|[/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.|
@@ -121,9 +126,9 @@ You can use the [comment](../../preprocessor/comment-c-cpp.md) pragma to specify
|[/WINMDDELAYSIGN](winmddelaysign-partially-sign-a-winmd.md)|Partially signs a Windows Runtime Metadata (.winmd) file by placing the public key in the winmd file.|
|[/WX](wx-treat-linker-warnings-as-errors.md)|Treats linker warnings as errors.|
-For more information, see [Compiler-Controlled LINK Options](compiler-controlled-link-options.md).
+16.1 This option is available starting in Visual Studio 2019 version 16.1.
## 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/linker-property-pages.md b/docs/build/reference/linker-property-pages.md
index 7e50f7eb50..615cd340dd 100644
--- a/docs/build/reference/linker-property-pages.md
+++ b/docs/build/reference/linker-property-pages.md
@@ -1,6 +1,6 @@
---
title: "Linker Property Pages"
-ms.date: "7/24/2019"
+ms.date: "07/24/2019"
ms.topic: "article"
ms.assetid: 7e7671e5-a35a-4e67-9bdb-661d75c4d11e
---
@@ -43,7 +43,7 @@ The [/NOLOGO](nologo-suppress-startup-banner-linker.md) option prevents display
### Ignore Import Library
-This property tells the linker not to link any .lib output generated from this build into any dependent project. This allows the project system to handle .dll files that do not produce a .lib file when built. If a project depends on another project that produces a DLL, the project system automatically links the .lib file produced by that child project. This may not be needed by projects that are producing COM DLLs or resource-only DLLs; these DLLs do not have any meaningful exports. If a DLL has no exports, the linker does not generate a .lib file. If no export .lib file is present on the disk, and the project system tells the linker to link with this (missing) DLL, the link fails. Use the **Ignore Import Library** property to resolve this problem. When set to **Yes**, the project system ignores the presence or absence of that .lib file and causes any project that depends on this project to not link with the nonexistent .lib file.
+This property tells the linker not to link any .lib output generated from this build into any dependent project. It allows the project system to handle .dll files that don't produce a .lib file when built. If a project depends on another project that produces a DLL, the project system automatically links the .lib file produced by that child project. This property may be unnecessary in projects that produce COM DLLs or resource-only DLLs, because these DLLs don't have any meaningful exports. If a DLL has no exports, the linker doesn't generate a .lib file. If no export .lib file is present, and the project system tells the linker to link with the missing DLL, the link fails. Use the **Ignore Import Library** property to resolve this problem. When set to **Yes**, the project system ignores the presence or absence of the .lib file, and causes any project that depends on this project to not link with the nonexistent .lib file.
To programmatically access this property, see .
@@ -55,7 +55,7 @@ To programmatically access this property, see **/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 0000000000..302d069962
--- /dev/null
+++ b/docs/build/reference/linkreprotarget.md
@@ -0,0 +1,49 @@
+---
+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.
+
+**/LINKREPROTARGET** is available starting in Visual Studio 2019 version 16.1.
+
+### 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/manifest-tool-property-pages.md b/docs/build/reference/manifest-tool-property-pages.md
index ffa9ba4113..f42d05b5a4 100644
--- a/docs/build/reference/manifest-tool-property-pages.md
+++ b/docs/build/reference/manifest-tool-property-pages.md
@@ -1,6 +1,6 @@
---
title: "Manifest Tool Property Pages"
-ms.date: "7/24/2019"
+ms.date: "07/24/2019"
ms.topic: "article"
f1_keywords:
- VC.Project.VCManifestTool.SuppressStartupBanner
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 0000000000..d35e98a1d1
Binary files /dev/null and b/docs/build/reference/media/solution-explorer-filters.png differ
diff --git a/docs/build/reference/midl-property-pages.md b/docs/build/reference/midl-property-pages.md
index 65550d5184..14f2f8363f 100644
--- a/docs/build/reference/midl-property-pages.md
+++ b/docs/build/reference/midl-property-pages.md
@@ -1,6 +1,6 @@
---
title: "MIDL Compiler Property Pages"
-ms.date: "7/24/2019"
+ms.date: "07/24/2019"
ms.topic: "article"
ms.assetid: 57498a01-fccc-4a0e-a036-6ff702f83126
f1_keywords:
diff --git a/docs/build/reference/multiple-targets.md b/docs/build/reference/multiple-targets.md
deleted file mode 100644
index 170caf96bc..0000000000
--- a/docs/build/reference/multiple-targets.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: "Multiple Targets"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["makefiles, targets", "multiple targets in NMAKE", "targets, multiple in NMAKE", "NMAKE program, targets"]
-ms.assetid: b609a179-0b9f-4b08-9930-998047588ae0
----
-# Multiple Targets
-
-NMAKE evaluates multiple targets in a single dependency as if each were specified in a separate description block.
-
-For example, this...
-
-```Output
-bounce.exe leap.exe : jump.obj
- echo Building...
-```
-
-...is evaluated as this:
-
-```Output
-bounce.exe : jump.obj
- echo Building...
-leap.exe : jump.obj
- echo Building...
-```
-
-## See also
-
-[Targets](targets.md)
diff --git a/docs/build/reference/netmodule-files-as-linker-input.md b/docs/build/reference/netmodule-files-as-linker-input.md
index 7e83305012..b37ff928f0 100644
--- a/docs/build/reference/netmodule-files-as-linker-input.md
+++ b/docs/build/reference/netmodule-files-as-linker-input.md
@@ -1,38 +1,40 @@
---
-title: ".netmodule Files as Linker Input"
-ms.date: "05/16/2019"
-helpviewer_keywords: ["MSIL linking", "linking [C++], modules", ".netmodules", "modules, Visual C++"]
+title: ".netmodule files as linker input"
+description: "Describes how to use mixed .obj and .netmodule files as linker input when creating .NET assemblies."
+ms.date: "01/30/2020"
+helpviewer_keywords: ["MSIL linking", "linking [C++], modules", ".netmodule files", "modules, Visual C++"]
ms.assetid: a4bcbe8a-4255-451d-853b-f88cfd82f4e1
+no-loc: [obj, netmodule, clr, pure, safe]
---
-# .netmodule Files as Linker Input
+# .netmodule files as linker input
-link.exe now accepts MSIL .obj and .netmodules as input. The output file produced by the linker is an assembly or a .netmodule with no run-time dependency on any of the .obj or .netmodules that were input to the linker.
+link.exe accepts MSIL *`.obj`* and *`.netmodule`* files as input. The output file produced by the linker is an assembly or a *`.netmodule`* file with no run-time dependency on any of the *`.obj`* or *`.netmodule`* files that were input to the linker.
-.netmodules are created by the MSVC compiler with [/LN (Create MSIL Module)](ln-create-msil-module.md) or by the linker with [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md). .objs are always created in a Visual C++ compilation. For other Visual Studio compilers, use the **/target:module** compiler option.
+## Remarks
-You must pass to the linker the .obj file from the Visual C++ compilation that created the .netmodule. Passing in a .netmodule is no longer supported because the **/clr:pure** and **/clr:safe** compiler options are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017 and later.
+*`.netmodule`* files are created by the MSVC compiler with [/LN (Create MSIL module)](ln-create-msil-module.md) or by the linker with [/NOASSEMBLY (Create a MSIL Module)](noassembly-create-a-msil-module.md). *`.obj`* files are always created in a C++ compilation. For other Visual Studio compilers, use the **/target:module** compiler option.
-For information on how to invoke the linker from the command line, see [Linker Command-Line Syntax](linking.md), [Use the MSVC toolset from the command line](../building-on-the-command-line.md), and [Set the Path and Environment Variables for Command-Line Builds](../setting-the-path-and-environment-variables-for-command-line-builds.md).
+The linker must be passed the *`.obj`* file from the C++ compilation that created the *`.netmodule`*. Passing in a *`.netmodule`* is no longer supported because the **/clr:pure** and **/clr:safe** compiler options are deprecated in Visual Studio 2015 and unsupported in Visual Studio 2017 and later.
-Passing a .netmodule or .dll file to the linker that was compiled by the MSVC compiler with **/clr** can result in a linker error. For more information, see [Choosing the Format of .netmodule Input Files](choosing-the-format-of-netmodule-input-files.md).
+For information on how to invoke the linker from the command line, see [Linker command-line syntax](linking.md), [Use the MSVC toolset from the command line](../building-on-the-command-line.md), and [Set the path and environment variables for command-line builds](../setting-the-path-and-environment-variables-for-command-line-builds.md).
-The linker accepts native .obj files as well as MSIL .obj files compiled with **/clr**. When passing mixed .objs in the same build, the verifiability of the resulting output file will, by default, be equal to the lowest level of verifiability of the input modules.
+Passing a *`.netmodule`* or *`.dll`* file to the linker that was compiled by the MSVC compiler with **/clr** can result in a linker error. For more information, see [Choosing the format of .netmodule input files](choosing-the-format-of-netmodule-input-files.md).
-If you currently have an application that is composed of two or more assemblies and you want the application to be contained in one assembly, you must recompile the assemblies and then link the .objs or .netmodules to produce a single assembly.
+The linker accepts both native *`.obj`* files and MSIL *`.obj`* files compiled with **/clr**. You can pass mixed *`.obj`* files in the same build. The resulting output file's default verifiability is the same as the lowest input module's verifiability.
-You must specify an entry point using [/ENTRY (Entry-Point Symbol)](entry-entry-point-symbol.md) when creating an executable image.
+You can change an application that's composed of two or more assemblies to be contained in one assembly. Recompile the assemblies' sources, and then link the *`.obj`* files or *`.netmodule`* files to produce a single assembly.
-When linking with an MSIL .obj or .netmodule file, use [/LTCG (Link-time Code Generation)](ltcg-link-time-code-generation.md), otherwise when the linker encounters the MSIL .obj or .netmodule, it will restart the link with /LTCG.
+Specify an entry point using [/ENTRY (Entry-point symbol)](entry-entry-point-symbol.md) when creating an executable image.
-MSIL .obj or .netmodule files can also be passed to cl.exe.
+When linking with an MSIL *`.obj`* or *`.netmodule`* file, use [/LTCG (Link-time code generation)](ltcg-link-time-code-generation.md), otherwise when the linker encounters the MSIL *`.obj`* or *`.netmodule`*, it will restart the link with **/LTCG**. You'll see an informational message that the link is restarting. You can ignore this message, but to improve linker performance, explicitly specify **/LTCG**.
-Input MSIL .obj or .netmodule files cannot have embedded resources. A resource is embedded in an output file (module or assembly) with [/ASSEMBLYRESOURCE (Embed a Managed Resource)](assemblyresource-embed-a-managed-resource.md) linker option or with the **/resource** compiler option in other Visual Studio compilers.
+MSIL *`.obj`* or *`.netmodule`* files can also be passed to cl.exe.
-When performing MSIL linking, and if you do not also specify [/LTCG (Link-time Code Generation)](ltcg-link-time-code-generation.md), you will see an informational message reporting that the link is restarting. This message can be ignored, but to improve linker performance with MSIL linking, explicitly specify **/LTCG**.
+Input MSIL *`.obj`* or *`.netmodule`* files can't have embedded resources. Embed resources in an output module or assembly file by using the [/ASSEMBLYRESOURCE (Embed a managed resource)](assemblyresource-embed-a-managed-resource.md) linker option. Or, use the **/resource** compiler option in other Visual Studio compilers.
-## Example
+## Examples
-In C++ code the **catch** block of a corresponding **try** will be invoked for a non System exception. However, by default, the CLR wraps non-System exceptions with . When an assembly is created from Visual C++ and non-Visual C++ modules and you want a **catch** block in C++ code to be invoked from its corresponding **try** clause when the **try** block throws a non-System exception, you must add the `[assembly:System::Runtime::CompilerServices::RuntimeCompatibility(WrapNonExceptionThrows=false)]` attribute to the source code for the non C++ modules.
+In C++ code, the **`catch`** block of a corresponding **`try`** will be invoked for a non-`System` exception. However, by default, the CLR wraps non-`System` exceptions with . When an assembly is created from C++ and non-C++ modules, and you want a **`catch`** block in C++ code to be invoked from its corresponding **`try`** clause when the **`try`** block throws a non-`System` exception, you must add the `[assembly:System::Runtime::CompilerServices::RuntimeCompatibility(WrapNonExceptionThrows=false)]` attribute to the source code for the non-C++ modules.
```cpp
// MSIL_linking.cpp
@@ -57,11 +59,9 @@ int main() {
*/
```
-## Example
+By changing the `Boolean` value of the `WrapNonExceptionThrows` attribute, you modify the ability of the C++ code to catch a non-`System` exception.
-By changing the Boolean value of the `WrapNonExceptionThrows` attribute, you modify the ability of the Visual C++ code to catch a non-System exception.
-
-```cpp
+```csharp
// MSIL_linking_2.cs
// compile with: /target:module /addmodule:MSIL_linking.obj
// post-build command: link /LTCG MSIL_linking.obj MSIL_linking_2.netmodule /entry:MLinkTest.Main /out:MSIL_linking_2.exe /subsystem:console
diff --git a/docs/build/reference/nopdb.md b/docs/build/reference/nopdb.md
new file mode 100644
index 0000000000..1d15f592c2
--- /dev/null
+++ b/docs/build/reference/nopdb.md
@@ -0,0 +1,36 @@
+---
+title: "/NOPDB"
+description: "The /NOPDB option keeps DUMPBIN from loading and searching PDB files for symbol information."
+ms.date: "12/04/2019"
+f1_keywords: ["/NOPDB"]
+helpviewer_keywords: ["/NOPDB dumpbin option", "/NOPDB"]
+---
+# /NOPDB
+
+Tells DUMPBIN not to load and search program database (PDB) files for symbol information.
+
+## Syntax
+
+> **/NOPDB**
+
+## Remarks
+
+By default, DUMPBIN attempts to load PDB files for its target executables. DUMPBIN uses this information to match addresses to symbol names. The process can be time-consuming if the PDB files are large, or must be loaded from a remote server. The **/NOPDB** option tells DUMPBIN to skip this step. It only prints the addresses and symbol information available in the executable.
+
+### To set the /NOPDB linker option in Visual Studio
+
+1. Open the **Property Pages** dialog box for the project. For more information, 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. In the **Additional options** box, add the **/NOPDB** option. Choose **OK** or **Apply** to save your changes.
+
+### To set this linker option programmatically
+
+- This option doesn't have a programmatic equivalent.
+
+## See also
+
+[DUMPBIN command line](dumpbin-command-line.md)\
+[DUMPBIN options](dumpbin-options.md)\
+[DUMPBIN reference](dumpbin-reference.md)
diff --git a/docs/build/reference/nxcompat-compatible-with-data-execution-prevention.md b/docs/build/reference/nxcompat-compatible-with-data-execution-prevention.md
index eeee0ea8c2..c723f7ca02 100644
--- a/docs/build/reference/nxcompat-compatible-with-data-execution-prevention.md
+++ b/docs/build/reference/nxcompat-compatible-with-data-execution-prevention.md
@@ -1,6 +1,7 @@
---
title: "/NXCOMPAT (Compatible with Data Execution Prevention)"
-ms.date: "12/29/2017"
+description: "Describes the Microsoft C/C++ (MSVC) /NXCOMPAT linker option, which marks an executable as compatible with Data Execution Prevention (DEP)."
+ms.date: "12/17/2019"
f1_keywords: ["/NXCOMPAT"]
helpviewer_keywords: ["/NXCOMPAT linker option", "-NXCOMPAT linker option", "NXCOMPAT linker option"]
---
@@ -20,8 +21,6 @@ By default, **/NXCOMPAT** is on.
For more information about Data Execution Prevention, see these articles:
-- [A detailed description of the Data Execution Prevention (DEP) feature](https://support.microsoft.com/help/875352/a-detailed-description-of-the-data-execution-prevention-dep-feature-in)
-
- [Data Execution Prevention](/windows/win32/Memory/data-execution-prevention)
- [Data Execution Prevention (Windows Embedded)](/previous-versions/windows/embedded/ms913190\(v=winembedded.5\))
@@ -40,5 +39,5 @@ For more information about Data Execution Prevention, see these articles:
## See also
-[MSVC linker reference](linking.md)
+[MSVC linker reference](linking.md)\
[MSVC Linker Options](linker-options.md)
diff --git a/docs/build/reference/overview-of-lib.md b/docs/build/reference/overview-of-lib.md
index 842443d46f..edf4bda831 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/paramref-visual-cpp.md b/docs/build/reference/paramref-visual-cpp.md
index 0a801169cd..ac3171b942 100644
--- a/docs/build/reference/paramref-visual-cpp.md
+++ b/docs/build/reference/paramref-visual-cpp.md
@@ -26,7 +26,7 @@ Compile with [/doc](doc-process-documentation-comments-c-cpp.md) to process docu
## Example
-```
+```cpp
// xml_paramref_tag.cpp
// compile with: /clr /doc /LD
// post-build command: xdcmake xml_paramref_tag.dll
diff --git a/docs/build/reference/permission-visual-cpp.md b/docs/build/reference/permission-visual-cpp.md
index 3a080eeb13..676ec9f95c 100644
--- a/docs/build/reference/permission-visual-cpp.md
+++ b/docs/build/reference/permission-visual-cpp.md
@@ -35,7 +35,7 @@ The MSVC compiler will attempt to resolve cref references in one pass through th
## Example
-```
+```cpp
// xml_permission_tag.cpp
// compile with: /clr /doc /LD
// post-build command: xdcmake xml_permission_tag.dll
diff --git a/docs/build/reference/property-page-xml-files.md b/docs/build/reference/property-page-xml-files.md
index 63cf39e209..a2b0a27766 100644
--- a/docs/build/reference/property-page-xml-files.md
+++ b/docs/build/reference/property-page-xml-files.md
@@ -88,7 +88,7 @@ The following section describes each major elements and some of the metadata tha
e. **xmlns:** This is a standard XAML element. You can see three namespaces listed. These correspond to the namespaces for the XAML deserialization classes, XAML schema and system namespace, respectively.
- f. **DisplayName:** This is the name that is shown on the property page UI for the Rule node. This value is localized. We created DisplayName as a child element of Rule rather than as an attribute (like Name or SwitchPrefix) because of internal localization tool requirements. From XAML’s perspective, both are equivalent. So, you can just make it an attribute to reduce clutter or leave it as it is.
+ f. **DisplayName:** This is the name that is shown on the property page UI for the Rule node. This value is localized. We created DisplayName as a child element of Rule rather than as an attribute (like Name or SwitchPrefix) because of internal localization tool requirements. From XAML's perspective, both are equivalent. So, you can just make it an attribute to reduce clutter or leave it as it is.
g. **DataSource:** This is a very important property that tells the project system the location from which the property value should read from and written to, and its grouping (explained below). For cl.xml, these values are:
@@ -105,7 +105,7 @@ The following section describes each major elements and some of the metadata tha
- `HasConfigurationCondition="true"` tells the project system to affix a configuration condition to the value so that it takes effect only for the current project configuration (the condition could be affixed to the parent group or the value itself). For example, open the property pages off the project node and set the value of the property **Treat Warnings As Error** under **Configuration Properties > C/C++ General** to "Yes". The following value is written to the project file. Notice the configuration condition attached to the parent ItemDefinitionGroup.
```xml
-
+
true
@@ -117,14 +117,14 @@ The following section describes each major elements and some of the metadata tha
```xml
- true
+ true
```
- Another attribute of **DataSource** not listed above is **PersistedName**. You can use this attribute to represent a property in the project file using a different name. By default this attribute is set to the property’s **Name**.
+ Another attribute of **DataSource** not listed above is **PersistedName**. You can use this attribute to represent a property in the project file using a different name. By default this attribute is set to the property's **Name**.
- An individual property can override its parent Rule’s DataSource. In that case, the location for that property’s value will be different from other properties in the Rule.
+ An individual property can override its parent Rule's DataSource. In that case, the location for that property's value will be different from other properties in the Rule.
h. There are other attributes of a Rule, including Description and SupportsFileBatching, that are not shown here. The full set of attributes applicable to a Rule or on any other element can be obtained by browsing the documentation for these types. Alternately, you can examine the public properties on the types in the `Microsoft.Build.Framework.XamlTypes` namespace in the `Microsoft.Build.Framework .dll` assembly.
@@ -142,7 +142,7 @@ The following section describes each major elements and some of the metadata tha
The above snippet shows the **Name** and **DisplayName** attributes that have been described before. Once again, there are other attributes a **Category** can have that are not used above. You can know about them by reading the documentation or by examining the assemblies using ildasm.exe.
-1. **Properties:** This is the meat of the xml file and contains the list of all properties in this Rule. Each property can be one of five possible types shown in the XAML skeleton above. Of course, you could have only a few of those types in your file. A property has a number of attributes that allow it to be described richly. I’ll explain only the **StringProperty** here. The rest are very similar.
+1. **Properties:** This is the meat of the xml file and contains the list of all properties in this Rule. Each property can be one of five possible types shown in the XAML skeleton above. Of course, you could have only a few of those types in your file. A property has a number of attributes that allow it to be described richly. I'll explain only the **StringProperty** here. The rest are very similar.
```xml
@@ -157,7 +157,7 @@ The following section describes each major elements and some of the metadata tha
Most of the attributes in the snippet have been described before. The new ones are Subtype, Category and Switch.
- a. **Subtype** is an attribute available only for **StringProperty** and **StringListProperty**; it gives contextual information. For example, the value of "file" indicates that the property represents a file path. Such contextual information is used to enhance the editing experience by providing a Windows Explorer as the property’s editor that allows the user to choose the file visually.
+ a. **Subtype** is an attribute available only for **StringProperty** and **StringListProperty**; it gives contextual information. For example, the value of "file" indicates that the property represents a file path. Such contextual information is used to enhance the editing experience by providing a Windows Explorer as the property's editor that allows the user to choose the file visually.
b. **Category:** This declares the category under which this property falls. Try to find this property under the **Output Files** category in the UI.
@@ -165,8 +165,8 @@ The following section describes each major elements and some of the metadata tha
Other property attributes include:
- d. **Visible:** If for some reason, you don’t want your property to show up in the property pages (but probably still available during build time), set this attribute to false.
+ d. **Visible:** If for some reason, you don't want your property to show up in the property pages (but probably still available during build time), set this attribute to false.
- e. **ReadOnly:** If you want to provide a read-only view of this property’s value in the property pages, set this attribute to true.
+ e. **ReadOnly:** If you want to provide a read-only view of this property's value in the property pages, set this attribute to true.
f. **IncludeInCommandLine:** Some properties may not need to be passed to a tool during build time. Setting this attribute to false will prevent it from being passed.
diff --git a/docs/build/reference/pseudotargets.md b/docs/build/reference/pseudotargets.md
deleted file mode 100644
index 9f0db71ee0..0000000000
--- a/docs/build/reference/pseudotargets.md
+++ /dev/null
@@ -1,15 +0,0 @@
----
-title: "Pseudotargets"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["makefiles, pseudotargets", "pseudotargets and NMAKE", "NMAKE program, pseudotargets", "timestamps, makefile pseudotargets", "NMAKE program, targets"]
-ms.assetid: c8c479dc-0129-4186-8366-bc6251f2b494
----
-# Pseudotargets
-
-A pseudotarget is a label used in place of a filename in a dependency line. It is interpreted as a file that does not exist, and so is out-of-date. NMAKE assumes a pseudotarget's timestamp is the most recent of all its dependents. If it has no dependents, the current time is assumed. If a pseudotarget is used as a target, its commands are always executed. A pseudotarget used as a dependent must also appear as a target in another dependency. However, that dependency does not need to have a commands block.
-
-Pseudotarget names follow the filename syntax rules for targets. However, if the name does not have an extension (that is, does not contain a period), it can exceed the 8-character limit for filenames and can be up to 256 characters long.
-
-## See also
-
-[Targets](targets.md)
diff --git a/docs/build/reference/q-options-low-level-operations.md b/docs/build/reference/q-options-low-level-operations.md
index 2a3cef9a6c..fe90e3294c 100644
--- a/docs/build/reference/q-options-low-level-operations.md
+++ b/docs/build/reference/q-options-low-level-operations.md
@@ -1,6 +1,6 @@
---
title: "/Q Options (Low-Level Operations)"
-ms.date: "1/23/2018"
+ms.date: "01/08/2020"
f1_keywords: ["/q"]
helpviewer_keywords: ["Q compiler option [C++]", "-Q compiler option [C++]", "/Q compiler option [C++]"]
---
@@ -14,6 +14,8 @@ You can use the **/Q** compiler options to perform the following low-level compi
- [/Qimprecise_fwaits (Remove fwaits Inside Try Blocks)](qimprecise-fwaits-remove-fwaits-inside-try-blocks.md): Removes `fwait` commands inside `try` blocks.
+- [/QIntel-jcc-erratum](qintel-jcc-erratum.md): Mitigates the performance impact caused by the Intel Jump Conditional Code (JCC) erratum microcode update.
+
- [/Qpar (Auto-Parallelizer)](qpar-auto-parallelizer.md): Enables automatic parallelization of loops that are marked with the [#pragma loop()](../../preprocessor/loop.md) directive.
- [/Qpar-report (Auto-Parallelizer Reporting Level)](qpar-report-auto-parallelizer-reporting-level.md): Enables reporting levels for automatic parallelization.
@@ -22,6 +24,10 @@ You can use the **/Q** compiler options to perform the following low-level compi
- [/Qspectre](qspectre.md): Generates instructions to mitigate certain Spectre security vulnerabilities.
+- [/Qspectre-load](qspectre-load.md): Generates instructions to mitigate Spectre security vulnerabilities based on loads.
+
+- [/Qspectre-load-cf](qspectre-load-cf.md): Generates instructions to mitigate Spectre security vulnerabilities based on control flow instructions which load.
+
- [/Qvec-report (Auto-Vectorizer Reporting Level)](qvec-report-auto-vectorizer-reporting-level.md): Enables reporting levels for automatic vectorization.
## See also
diff --git a/docs/build/reference/qintel-jcc-erratum.md b/docs/build/reference/qintel-jcc-erratum.md
new file mode 100644
index 0000000000..97b364fcf6
--- /dev/null
+++ b/docs/build/reference/qintel-jcc-erratum.md
@@ -0,0 +1,52 @@
+---
+title: "/QIntel-jcc-erratum"
+description: "Describes the Microsoft C/C++ compiler (MSVC) /QIntel-jcc-erratum option."
+ms.date: "01/07/2020"
+f1_keywords: ["QIntel-jcc-erratum"]
+helpviewer_keywords: ["/QIntel-jcc-erratum", "-QIntel-jcc-erratum"]
+---
+# /QIntel-jcc-erratum
+
+::: moniker range="<=vs-2017"
+
+The **/QIntel-jcc-erratum** option is available in Visual Studio 2019 version 16.5 and later.
+
+::: moniker-end
+
+::: moniker range=">=vs-2019"
+
+Specifies that the compiler generates instructions to mitigate the performance impact caused by the Intel Jump Conditional Code (JCC) erratum microcode update in certain Intel processors.
+
+## Syntax
+
+> **/QIntel-jcc-erratum**
+
+## Remarks
+
+Under **/QIntel-jcc-erratum**, the compiler detects jump and macro-fused jump instructions that cross or end on a 32-byte boundary. It aligns these instructions to the boundary. This change mitigates the performance impact of microcode updates that prevent the JCC erratum in certain Intel processors. For more information about the erratum, see [Mitigations for Jump Conditional Code Erratum](https://www.intel.com/content/dam/support/us/en/documents/processors/mitigations-jump-conditional-code-erratum.pdf) on the Intel website.
+
+The **/QIntel-jcc-erratum** option is available in Visual Studio 2019 version 16.5 and later. This option is only available in compilers that target x86 and x64. The option isn't available in compilers that target ARM processors.
+
+The **/QIntel-jcc-erratum** option is off by default, and works only in optimized builds. This option can increase code size.
+
+**/QIntel-jcc-erratum** is incompatible with [/clr](clr-common-language-runtime-compilation.md).
+
+### To set this compiler option in the Visual Studio development environment
+
+1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
+
+1. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page.
+
+1. Select a value for the **Enable Intel JCC Erratum Mitigation** property. Choose **OK** to apply the change.
+
+### To set this compiler option programmatically
+
+- See .
+
+## See also
+
+[/Q options (Low-level operations)](q-options-low-level-operations.md)\
+[MSVC compiler options](compiler-options.md)\
+[MSVC compiler command-line syntax](compiler-command-line-syntax.md)
+
+::: moniker-end
diff --git a/docs/build/reference/qspectre-load-cf.md b/docs/build/reference/qspectre-load-cf.md
new file mode 100644
index 0000000000..063058a264
--- /dev/null
+++ b/docs/build/reference/qspectre-load-cf.md
@@ -0,0 +1,49 @@
+---
+title: "/Qspectre-load-cf"
+description: "Describes the Microsoft C/C++ compiler (MSVC) /Qspectre-load-cf option."
+ms.date: "01/28/2020"
+helpviewer_keywords: ["/Qspectre-load-cf"]
+no-loc: [Qspectre-load-cf]
+---
+# /Qspectre-load-cf
+
+Specifies compiler generation of serializing instructions for every control-flow instruction that contains a load. This option performs a subset of the mitigations done by the [/Qspectre-load](qspectre-load.md) option.
+
+## Syntax
+
+> **/Qspectre-load-cf**
+
+## Remarks
+
+**/Qspectre-load-cf** causes the compiler to detect `JMP`, `RET`, and `CALL` control-flow instructions that load from memory, and to insert serializing instructions after the load. Where possible, these instructions are split into a load and a control flow transfer. The load is followed by an `LFENCE` to ensure the load is protected. There are cases where the compiler can't split instructions, such as the `JMP` instruction, so it uses an alternate mitigation technique. For example, the compiler mitigates `jmp [rax]` by adding instructions to load the target non-destructively before inserting an LFENCE, as shown here:
+
+```asm
+ xor rbx, [rax]
+ xor rbx, [rax] ; force a load of [rax]
+ lfence ; followed by an LFENCE
+ jmp [rax]
+```
+
+Because **/Qspectre-load-cf** stops speculation of all loads in control-flow instructions, the performance impact is high. The mitigation isn't appropriate everywhere. If there are performance critical blocks of code that don't require protection, you can disable these mitigations by using `__declspec(spectre(nomitigation))`.
+
+The **/Qspectre-load-cf** option is off by default, and supports all optimization levels.
+
+The **/Qspectre-load-cf** option is available in Visual Studio 2019 version 16.5 and later. This option is only available in compilers that target x86 and x64 processors. It's not available in compilers that target ARM processors.
+
+### 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).
+
+2. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page.
+
+3. Select a new value for the **Spectre Mitigation** property. Choose **OK** to apply the change.
+
+### To set this compiler option programmatically
+
+- See .
+
+## See also
+
+[/Q options (Low-level operations)](q-options-low-level-operations.md)\
+[MSVC compiler options](compiler-options.md)\
+[MSVC compiler command-line syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/qspectre-load.md b/docs/build/reference/qspectre-load.md
new file mode 100644
index 0000000000..6d37e74ffd
--- /dev/null
+++ b/docs/build/reference/qspectre-load.md
@@ -0,0 +1,48 @@
+---
+title: "/Qspectre-load"
+description: "Describes the Microsoft C/C++ compiler (MSVC) /Qspectre-load option."
+ms.date: "01/28/2020"
+helpviewer_keywords: ["/Qspectre-load"]
+---
+# /Qspectre-load
+
+Specifies compiler generation of serializing instructions for every load instruction. This option extends the **/Qspectre** flag, mitigating against any possible **speculative execution side-channel attacks** based on loads.
+
+## Syntax
+
+> **/Qspectre-load**
+
+## Remarks
+
+**/Qspectre-load** causes the compiler to detect loads from memory, and insert serializing instructions after them. Control flow instructions that load memory, including `RET` and `CALL`, are split into a load and a control flow transfer. The load is followed by an `LFENCE` to ensure the load is protected. There are cases where the compiler can't split control flow instructions, such as the `jmp` instruction, so it uses an alternate mitigation technique. For example, the compiler mitigates `jmp [rax]` by adding instructions to load the target non-destructively before inserting an LFENCE, as shown here:
+
+```asm
+ xor rbx, [rax]
+ xor rbx, [rax] ; force a load of [rax]
+ lfence ; followed by an LFENCE
+ jmp [rax]
+```
+
+Because **/Qspectre-load** stops speculation of all loads, the performance impact is high. The mitigation isn't appropriate everywhere. If there are performance critical blocks of code that don't require protection, you can disable these mitigations by using `__declspec(spectre(nomitigation))`. For more information, see [__declspec spectre](../../cpp/spectre.md).
+
+The **/Qspectre-load** option is off by default, and supports all optimization levels.
+
+The **/Qspectre-load** option is available in Visual Studio 2019 version 16.5 and later. This option is only available in compilers that target x86 and x64 processors. It's not available in compilers that target ARM processors.
+
+### 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).
+
+2. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page.
+
+3. Select a new value for the **Spectre Mitigation** property. Choose **OK** to apply the change.
+
+### To set this compiler option programmatically
+
+- See .
+
+## See also
+
+[/Q options (Low-Level Operations)](q-options-low-level-operations.md)\
+[MSVC compiler options](compiler-options.md)\
+[MSVC compiler command-line syntax](compiler-command-line-syntax.md)
diff --git a/docs/build/reference/qspectre.md b/docs/build/reference/qspectre.md
index cbee0a000f..1418658974 100644
--- a/docs/build/reference/qspectre.md
+++ b/docs/build/reference/qspectre.md
@@ -1,6 +1,6 @@
---
title: "/Qspectre"
-ms.date: "10/12/2018"
+ms.date: "09/06/2019"
f1_keywords: ["VC.Project.VCCLCompilerTool.SpectreMitigation"]
helpviewer_keywords: ["/Qspectre"]
---
@@ -63,12 +63,26 @@ For more information, see the official [Microsoft Security Advisory ADV180002, G
### To set this compiler option in the Visual Studio development environment
+::: moniker range="vs-2019"
+
+1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
+
+1. Select the **Configuration Properties** > **C/C++** > **Code Generation** property page.
+
+1. Select a new value for the **Spectre Mitigation** property. Choose **OK** to apply the change.
+
+::: moniker-end
+
+::: moniker range="<=vs-2017"
+
1. Open the project's **Property Pages** dialog box. For details, see [Set C++ compiler and build properties in Visual Studio](../working-with-project-properties.md).
1. Select the **Configuration Properties** > **C/C++** > **Command Line** property page.
1. Enter the **/Qspectre** compiler option in the **Additional Options** box. Choose **OK** to apply the change.
+::: moniker-end
+
### To set this compiler option programmatically
- See .
diff --git a/docs/build/reference/recursion-macros.md b/docs/build/reference/recursion-macros.md
index 1db3ab7eaa..e76a1f02b7 100644
--- a/docs/build/reference/recursion-macros.md
+++ b/docs/build/reference/recursion-macros.md
@@ -1,19 +1,21 @@
---
-title: "Recursion Macros"
-ms.date: "11/04/2016"
+title: "Recursion macros"
+description: "Describes the macros you use to call NMAKE in recursive sessions."
+ms.date: "11/20/2019"
helpviewer_keywords: ["NMAKE program, recursion macros", "recursion macros", "macros, recursion"]
ms.assetid: c53e5ae7-619e-46b1-bdc2-86d8c7798b1d
+no-loc: [MAKE, MAKEDIR, MAKEFLAGS]
---
-# Recursion Macros
+# Recursion macros
-Use recursion macros to call NMAKE recursively. Recursive sessions inherit command-line and environment-variable macros and Tools.ini information. They do not inherit makefile-defined inference rules or **.SUFFIXES** and **.PRECIOUS** specifications. To pass macros to a recursive NMAKE session, either set an environment variable with SET before the recursive call, define a macro in the command for the recursive call, or define a macro in Tools.ini.
+Use recursion macros to call NMAKE recursively. Recursive sessions inherit command-line and environment-variable macros and Tools.ini information. They don't inherit makefile-defined inference rules or `.SUFFIXES` and `.PRECIOUS` specifications. There are three ways to pass macros to a recursive NMAKE session: Set an environment variable with a :::no-loc text="SET"::: command before the recursive call. Define a macro in the command for the recursive call. Or, define a macro in Tools.ini.
|Macro|Definition|
|-----------|----------------|
-|**MAKE**|Command used originally to invoke NMAKE.
The $(MAKE) macro gives the full path to nmake.exe.|
+|**MAKE**|Command used originally to invoke NMAKE.
The `$(MAKE)` macro gives the full path to nmake.exe.|
|**MAKEDIR**|Current directory when NMAKE was invoked.|
-|**MAKEFLAGS**|Options currently in effect. Use as `/$(MAKEFLAGS)`. Note, /F is not included.|
+|**MAKEFLAGS**|Options currently in effect. Use as `/$(MAKEFLAGS)`. The **/F** option isn't included.|
## See also
-[Special NMAKE Macros](special-nmake-macros.md)
+[Special NMAKE macros](special-nmake-macros.md)
diff --git a/docs/build/reference/remarks-visual-cpp.md b/docs/build/reference/remarks-visual-cpp.md
index 71e583530f..462d9730c8 100644
--- a/docs/build/reference/remarks-visual-cpp.md
+++ b/docs/build/reference/remarks-visual-cpp.md
@@ -26,7 +26,7 @@ Compile with [/doc](doc-process-documentation-comments-c-cpp.md) to process docu
## Example
-```
+```cpp
// xml_remarks_tag.cpp
// compile with: /LD /clr /doc
// post-build command: xdcmake xml_remarks_tag.dll
diff --git a/docs/build/reference/returns-visual-cpp.md b/docs/build/reference/returns-visual-cpp.md
index 97d6106a0b..51691ee65a 100644
--- a/docs/build/reference/returns-visual-cpp.md
+++ b/docs/build/reference/returns-visual-cpp.md
@@ -26,7 +26,7 @@ Compile with [/doc](doc-process-documentation-comments-c-cpp.md) to process docu
## Example
-```
+```cpp
// xml_returns_tag.cpp
// compile with: /LD /clr /doc
// post-build command: xdcmake xml_returns_tag.dll
diff --git a/docs/build/reference/running-lib.md b/docs/build/reference/running-lib.md
index 83a8866a7d..b88ae15260 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/running-nmake.md b/docs/build/reference/running-nmake.md
index 816034508c..afcd62e2f6 100644
--- a/docs/build/reference/running-nmake.md
+++ b/docs/build/reference/running-nmake.md
@@ -1,6 +1,6 @@
---
title: "Running NMAKE"
-ms.date: "08/11/2019"
+ms.date: "10/29/2019"
helpviewer_keywords: ["targets, building", "response files, NMAKE", "targets", "command files", "NMAKE program, targets", "NMAKE program, running", "command files, NMAKE"]
ms.assetid: 0421104d-8b7b-4bf3-86c1-928d9b7c1a8c
---
@@ -12,7 +12,7 @@ ms.assetid: 0421104d-8b7b-4bf3-86c1-928d9b7c1a8c
## Remarks
-NMAKE builds only specified *targets* or, when none is specified, the first target in the makefile. The first makefile target can be a [pseudotarget](pseudotargets.md) that builds other targets. NMAKE uses makefiles specified with **/F**, or if **/F** isn't specified, the Makefile file in the current directory. If no makefile is specified, it uses inference rules to build command-line *targets*.
+NMAKE builds only specified *targets* or, when none is specified, the first target in the makefile. The first makefile target can be a [pseudotarget](description-blocks.md#pseudotargets) that builds other targets. NMAKE uses makefiles specified with **/F**, or if **/F** isn't specified, the Makefile file in the current directory. If no makefile is specified, it uses inference rules to build command-line *targets*.
The *command-file* text file (or response file) contains command-line input. Other input can precede or follow \@*command-file*. A path is permitted. In *command-file*, line breaks are treated as spaces. Enclose macro definitions in quotation marks if they contain spaces.
@@ -23,7 +23,7 @@ NMAKE options are described in the following table. Options are preceded by eith
| Option | Purpose |
| ------------ | ------------- |
| **/A** | Forces build of all evaluated targets, even if not out-of-date compared to dependents. Doesn't force builds of unrelated targets. |
-| **/B** | Forces build even if timestamps are equal. Recommended only for very fast systems (resolution of two seconds or less). |
+| **/B** | Forces build even if timestamps are equal. Recommended only for fast systems (resolution of two seconds or less). |
| **/C** | Suppresses default output, including nonfatal NMAKE errors or warnings, timestamps, and NMAKE copyright message. Suppresses warnings issued by **/K**. |
| **/D** | Displays timestamps of each evaluated target and dependent and a message when a target doesn't exist. Useful with **/P** for debugging a makefile. Use `!CMDSWITCHES` to set or clear **/D** for part of a makefile. |
| **/E** | Causes environment variables to override makefile macro definitions. |
diff --git a/docs/build/reference/search-paths-for-dependents.md b/docs/build/reference/search-paths-for-dependents.md
deleted file mode 100644
index efacd158cb..0000000000
--- a/docs/build/reference/search-paths-for-dependents.md
+++ /dev/null
@@ -1,23 +0,0 @@
----
-title: "Search Paths for Dependents"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["NMAKE program, dependents", "dependents, NMAKE"]
-ms.assetid: bf998e47-da74-48b5-891d-d3d8ce57264b
----
-# Search Paths for Dependents
-
-Each dependent has an optional search path, specified as follows:
-
-## Syntax
-
-```
-{directory[;directory...]}dependent
-```
-
-## Remarks
-
-NMAKE looks for a dependent first in the current directory, and then in directories in the order specified. A macro can specify part or all of a search path. Enclose directory names in braces ({ }); separate multiple directories with a semicolon (;). No spaces or tabs are allowed.
-
-## See also
-
-[Dependents](dependents.md)
diff --git a/docs/build/reference/see-visual-cpp.md b/docs/build/reference/see-visual-cpp.md
index af06264db9..9b1ceab5e1 100644
--- a/docs/build/reference/see-visual-cpp.md
+++ b/docs/build/reference/see-visual-cpp.md
@@ -34,7 +34,7 @@ The MSVC compiler will attempt to resolve cref references in one pass through th
The following sample shows how you can make cref reference to a generic type, such that, the compiler will resolve the reference.
-```
+```cpp
// xml_see_cref_example.cpp
// compile with: /LD /clr /doc
// the following cref shows how to specify the reference, such that,
diff --git a/docs/build/reference/seealso-visual-cpp.md b/docs/build/reference/seealso-visual-cpp.md
index 75c462a0fd..1f93520e46 100644
--- a/docs/build/reference/seealso-visual-cpp.md
+++ b/docs/build/reference/seealso-visual-cpp.md
@@ -36,7 +36,7 @@ The MSVC compiler will attempt to resolve cref references in one pass through th
In the following sample, an unresolved symbol is referenced in a cref. The XML comment for the cref to B::Test will be ``, whereas the reference to A::Test is well-formed ``.
-```
+```cpp
// xml_seealso_tag.cpp
// compile with: /LD /clr /doc
// post-build command: xdcmake xml_seealso_tag.dll
diff --git a/docs/build/reference/std-specify-language-standard-version.md b/docs/build/reference/std-specify-language-standard-version.md
index 5f932bcfd9..d0584a2c6d 100644
--- a/docs/build/reference/std-specify-language-standard-version.md
+++ b/docs/build/reference/std-specify-language-standard-version.md
@@ -28,7 +28,7 @@ The default **/std:c++14** option enables the set of C++14 features implemented
- [u8 character literals](http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2014/n4267.html)
-For additional information on which C++14 and C++17 features are enabled when **/std:c++14** is specified, see the notes in [Visual C++ Language Conformance](../../overview/visual-cpp-language-conformance.md).
+For additional information on which C++14 and C++17 features are enabled when **/std:c++14** is specified, see the notes in [Microsoft C++ language conformance table](../../overview/visual-cpp-language-conformance.md).
The **/std:c++17** option enables the full set of C++17 features implemented by the MSVC compiler. This option disables compiler and standard library support for features that are changed or new in versions of the Working Draft and defect updates of the C++ Standard after C++17.
@@ -42,7 +42,7 @@ The **/std** option in effect during a C++ compilation can be detected by use of
The **/std:c++14** and **/std:c++latest** options are available beginning in Visual Studio 2015 Update 3. The **/std:c++17** option is available beginning in Visual Studio 2017 version 15.3. As noted above, some C++17 standard behavior is enabled by the **/std:c++14** option, but all other C++17 features are enabled by **/std:c++17**. C++20 features are enabled by **/std:latest** until the implementation is complete.
> [!NOTE]
-> Depending on the MSVC compiler version or update level, C++17 features may not be fully implemented or fully conformant when you specify the **/std:c++17** options. For an overview of C++ language conformance in Visual C++ by release version, see [Visual C++ Language Conformance](../../overview/visual-cpp-language-conformance.md).
+> Depending on the MSVC compiler version or update level, C++17 features may not be fully implemented or fully conformant when you specify the **/std:c++17** options. For an overview of C++ language conformance in Visual C++ by release version, see [Microsoft C++ language conformance table](../../overview/visual-cpp-language-conformance.md).
### To set this compiler option in the Visual Studio development environment
diff --git a/docs/build/reference/summary-visual-cpp.md b/docs/build/reference/summary-visual-cpp.md
index 12b0ac6154..279c5e7dcb 100644
--- a/docs/build/reference/summary-visual-cpp.md
+++ b/docs/build/reference/summary-visual-cpp.md
@@ -28,7 +28,7 @@ Compile with [/doc](doc-process-documentation-comments-c-cpp.md) to process docu
## Example
-```
+```cpp
// xml_summary_tag.cpp
// compile with: /LD /clr /doc
// post-build command: xdcmake xml_summary_tag.dll
diff --git a/docs/build/reference/targets-in-multiple-description-blocks.md b/docs/build/reference/targets-in-multiple-description-blocks.md
deleted file mode 100644
index c1aec4e4a1..0000000000
--- a/docs/build/reference/targets-in-multiple-description-blocks.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "Targets in Multiple Description Blocks"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["description blocks", "blocks, multiple description", "multiple description blocks"]
-ms.assetid: 8618dcd9-c11d-4562-91a7-0c904ed438a8
----
-# Targets in Multiple Description Blocks
-
-To update a target in more than one description block using different commands, specify two consecutive colons (::) between targets and dependents.
-
-```
-target.lib :: one.asm two.asm three.asm
- ml one.asm two.asm three.asm
- lib target one.obj two.obj three.obj
-target.lib :: four.c five.c
- cl /c four.c five.c
- lib target four.obj five.obj
-```
-
-## See also
-
-[Targets](targets.md)
diff --git a/docs/build/reference/targets.md b/docs/build/reference/targets.md
deleted file mode 100644
index 0bc96e6c91..0000000000
--- a/docs/build/reference/targets.md
+++ /dev/null
@@ -1,25 +0,0 @@
----
-title: "Targets"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["targets, specifying in NMAKE"]
-ms.assetid: 826ee849-4278-4c6e-97c3-79a2b5fe6463
----
-# Targets
-
-In a dependency line, specify one or more targets, using any valid filename, directory name, or [pseudotarget](pseudotargets.md). Separate multiple targets with one or more spaces or tabs. Targets are not case sensitive. Paths are permitted with filenames. A target cannot exceed 256 characters. If the target preceding the colon is a single character, use a separating space; otherwise, NMAKE interprets the letter-colon combination as a drive specifier.
-
-## What do you want to know more about?
-
-[Pseudotargets](pseudotargets.md)
-
-[Multiple targets](multiple-targets.md)
-
-[Cumulative dependencies](cumulative-dependencies.md)
-
-[Targets in multiple description blocks](targets-in-multiple-description-blocks.md)
-
-[Dependency side effects](dependency-side-effects.md)
-
-## See also
-
-[Description Blocks](description-blocks.md)
\ No newline at end of file
diff --git a/docs/build/reference/tc-tp-tc-tp-specify-source-file-type.md b/docs/build/reference/tc-tp-tc-tp-specify-source-file-type.md
index b44474fa36..1caf2c528d 100644
--- a/docs/build/reference/tc-tp-tc-tp-specify-source-file-type.md
+++ b/docs/build/reference/tc-tp-tc-tp-specify-source-file-type.md
@@ -1,6 +1,6 @@
---
title: "/Tc, /Tp, /TC, /TP (Specify Source File Type)"
-ms.date: "1/11/2018"
+ms.date: "01/11/2018"
f1_keywords: ["VC.Project.VCCLWCECompilerTool.CompileAs", "VC.Project.VCCLCompilerTool.CompileAs", "/Tp", "/tc"]
helpviewer_keywords: ["Tp compiler option [C++]", "/Tc compiler option [C++]", "-Tc compiler option [C++]", "source files, specifying to compiler", "Tc compiler option [C++]", "/Tp compiler option [C++]", "-Tp compiler option [C++]"]
---
diff --git a/docs/build/reference/value-visual-cpp.md b/docs/build/reference/value-visual-cpp.md
index 5b9a96f8c3..13feab67d2 100644
--- a/docs/build/reference/value-visual-cpp.md
+++ b/docs/build/reference/value-visual-cpp.md
@@ -26,7 +26,7 @@ Compile with [/doc](doc-process-documentation-comments-c-cpp.md) to process docu
## Example
-```
+```cpp
// xml_value_tag.cpp
// compile with: /LD /clr /doc
// post-build command: xdcmake xml_value_tag.dll
diff --git a/docs/build/reference/vcxproj-file-structure.md b/docs/build/reference/vcxproj-file-structure.md
index a7e847e8b8..e0023dd122 100644
--- a/docs/build/reference/vcxproj-file-structure.md
+++ b/docs/build/reference/vcxproj-file-structure.md
@@ -26,7 +26,7 @@ If you choose to manually edit a .vcxproj file, be aware of these facts:
```
- "Not supported" means that macros are not guaranteed to work for all operations in the IDE. Macros which don’t change their value in different configurations should work, but might not be preserved if an item is moved to a different filter or project. Macros which change their value for different configurations will cause problems because the IDE doesn't expect project item paths to be different for different project configurations.
+ "Not supported" means that macros are not guaranteed to work for all operations in the IDE. Macros which don't change their value in different configurations should work, but might not be preserved if an item is moved to a different filter or project. Macros which change their value for different configurations will cause problems because the IDE doesn't expect project item paths to be different for different project configurations.
1. In order to have project properties correctly added, removed, or modified when edited in the **Project Properties** dialog, the file must contain separate groups for each project configuration, and the conditions must be in this form:
@@ -48,7 +48,7 @@ The first thing to notice is that the top-level elements appear in a particular
- There are multiple property groups, each with a unique label, and they occur in a particular order.
-The order of elements in the project file is very important, because MSBuild is based on a sequential evaluation model. If your project file, including all the imported .props and .targets files, consists of multiple definitions of a property, the last definition overrides the preceding ones. In the following example, the value "xyz” will be set during compilation because the MSBUild engine encounters it last during its evaluation.
+The order of elements in the project file is very important, because MSBuild is based on a sequential evaluation model. If your project file, including all the imported .props and .targets files, consists of multiple definitions of a property, the last definition overrides the preceding ones. In the following example, the value "xyz" will be set during compilation because the MSBUild engine encounters it last during its evaluation.
```xml
abc
@@ -146,8 +146,8 @@ The **Microsoft.Cpp.default.props** property sheet comes with Visual Studio and
```
-A `Configuration` property group has an attached configuration condition (such as `Condition=”'$(Configuration)|$(Platform)'=='Debug|Win32'”`) and comes in multiple copies, one per configuration. This property group hosts the properties that are set for a specific configuration. Configuration properties include PlatformToolset and also control the inclusion of system property sheets in **Microsoft.Cpp.props**. For example, if you define the property `Unicode`, then the system property sheet **microsoft.Cpp.unicodesupport.props** will be included. If you inspect **Microsoft.Cpp.props**, you will see the line:
-``.
+A `Configuration` property group has an attached configuration condition (such as `Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'"`) and comes in multiple copies, one per configuration. This property group hosts the properties that are set for a specific configuration. Configuration properties include PlatformToolset and also control the inclusion of system property sheets in **Microsoft.Cpp.props**. For example, if you define the property `Unicode`, then the system property sheet **microsoft.Cpp.unicodesupport.props** will be included. If you inspect **Microsoft.Cpp.props**, you will see the line:
+``.
### Microsoft.Cpp.props Import element
@@ -189,7 +189,7 @@ The `PropertySheets` group contains the imports for user property sheets. These
There are multiple instances of this property group, one per configuration for all project configurations. Each property group must have one configuration condition attached. If any configurations are missing, the **Project Properties** dialog won't work correctly. Unlike the property groups above, this one does not have a label. This group contains project configuration-level settings. These settings apply to all files that are part of the specified item group. Build customization item definition metadata is initialized here.
-This PropertyGroup must come after `` and there must be no other PropertyGroup without a Label before it (otherwise Project Properties editing won’t work correctly).
+This PropertyGroup must come after `` and there must be no other PropertyGroup without a Label before it (otherwise Project Properties editing won't work correctly).
### Per-configuration ItemDefinitionGroup elements
@@ -212,8 +212,8 @@ The metadata should have configuration conditions for each configuration, even i
```xml
- true
- true
+ true
+ true
```
diff --git a/docs/build/reference/vcxproj-filters-files.md b/docs/build/reference/vcxproj-filters-files.md
new file mode 100644
index 0000000000..b26b57aa62
--- /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.
+
+![Logical folders in Solution Explorer](media/solution-explorer-filters.png)
+
+## 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/wl-enable-one-line-diagnostics.md b/docs/build/reference/wl-enable-one-line-diagnostics.md
index 0601861d39..619bd83eb0 100644
--- a/docs/build/reference/wl-enable-one-line-diagnostics.md
+++ b/docs/build/reference/wl-enable-one-line-diagnostics.md
@@ -21,7 +21,7 @@ Error and warning messages from the C++ compiler can be followed by additional i
Not all error and warning messages have an additional line of information. The following code will generate an error that has an additional line of information; it will let you test the effect when you use **/WL**.
-```
+```cpp
// compiler_option_WL.cpp
// compile with: /WL
#include
diff --git a/docs/build/reference/zc-inline-remove-unreferenced-comdat.md b/docs/build/reference/zc-inline-remove-unreferenced-comdat.md
index 491871dad2..0c9fd36944 100644
--- a/docs/build/reference/zc-inline-remove-unreferenced-comdat.md
+++ b/docs/build/reference/zc-inline-remove-unreferenced-comdat.md
@@ -7,7 +7,7 @@ ms.assetid: a4c94224-1d73-4bea-a9d5-4fa73dc924df
---
# /Zc:inline (Remove unreferenced COMDAT)
-Removes unreferenced functions or data that are COMDATs or only have internal linkage. When **/Zc:inline** is specified, the compiler requires that translation units that use inline data or inline functions must also include the definitions for the data or functions.
+Removes unreferenced data or functions that are COMDATs, or that only have internal linkage. Under **/Zc:inline**, the compiler specifies that translation units with inline data or functions must also include their definitions.
## Syntax
@@ -15,9 +15,9 @@ Removes unreferenced functions or data that are COMDATs or only have internal li
## Remarks
-When **/Zc:inline** is specified, the compiler does not emit symbol information for unreferenced COMDAT functions or data, or for functions or data that have internal linkage only. This optimization simplifies some of the work performed by the linker in release builds or when the linker option [/OPT:REF](opt-optimizations.md) is specified. When the compiler performs this optimization, it can significantly reduce .obj file size and improve linker speeds. This compiler option is not enabled when optimizations are disabled ([/Od](od-disable-debug.md)) or when [/GL (Whole Program Optimization)](gl-whole-program-optimization.md) is specified.
+When **/Zc:inline** is specified, the compiler doesn't emit symbol information for unreferenced COMDAT functions or data. Or, for data or functions that have internal linkage only. This optimization simplifies some of the work the linker does in release builds, or when you specify the [/OPT:REF](opt-optimizations.md) linker option. This compiler optimization can significantly reduce .obj file size and improve linker speeds. The compiler option isn't enabled when you disable optimizations ([/Od](od-disable-debug.md)). Or, when you specify [/GL (Whole Program Optimization)](gl-whole-program-optimization.md).
-By default, this option is off (**/Zc:inline-**) in command-line builds. The [/permissive-](permissive-standards-conformance.md) option does not enable **/Zc:inline**. In MSBuild projects, the option is set by the **Configuration Properties** > **C/C++** > **Language** > **Remove unreferenced code and data** property, which is set to **Yes** by default.
+By default, this option is off (**/Zc:inline-**) in command-line builds. The [/permissive-](permissive-standards-conformance.md) option doesn't enable **/Zc:inline**. In MSBuild projects, the option is set by the **Configuration Properties** > **C/C++** > **Language** > **Remove unreferenced code and data** property, which is set to **Yes** by default.
If **/Zc:inline** is specified, the compiler enforces the C++11 requirement that all functions declared `inline` must have a definition available in the same translation unit if they are used. When the option is not specified, the Microsoft compiler allows non-conformant code that invokes functions declared `inline` even if no definition is visible. For more information, see the C++11 standard, in section 3.2 and section 7.1.2. This compiler option was introduced in Visual Studio 2013 Update 2.
@@ -59,7 +59,7 @@ void Example::normal_call() {
// Compile by using: cl /W4 /EHsc /O2 zcinline.cpp example.cpp
#include "example.h"
-void main() {
+int main() {
Example example;
example.inline_call(); // normal call when definition unavailable
}
@@ -101,7 +101,7 @@ void Example2::normal_call() {
// Compile by using: cl /W4 /EHsc /O2 zcinline2.cpp example2.cpp
#include "example2.h"
-void main() {
+int main() {
Example2 example2;
example2.inline_call(); // normal call when definition unavailable
}
diff --git a/docs/build/reference/zc-noexcepttypes.md b/docs/build/reference/zc-noexcepttypes.md
index 8e99fe8ce3..8ffbbca8e8 100644
--- a/docs/build/reference/zc-noexcepttypes.md
+++ b/docs/build/reference/zc-noexcepttypes.md
@@ -7,7 +7,7 @@ ms.assetid: 1cbf7e3c-0f82-4f91-84dd-612bcf26d2c6
---
# /Zc:noexceptTypes (C++17 noexcept rules)
-The C++17 standard makes `throw()` as an alias for `noexcept`, removes `throw()` and `throw(...)`, and allows certain types to include `noexcept`. This can cause a number of source compatibility issues in code that conforms to C++14 or earlier. The **/Zc:noexceptTypes** option can specify conformance to the C++17 standard or allow the C++14 and earlier behavior when code is compiled in C++17 mode.
+The C++17 standard makes `throw()` an alias for `noexcept`, removes `throw()` and `throw(...)`, and allows certain types to include `noexcept`. This change can cause a number of source compatibility issues in code that conforms to C++14 or earlier. The **/Zc:noexceptTypes** option specifies conformance to the C++17 standard. **/Zc:noexceptTypes-** allows the C++14 and earlier behavior when code is compiled in C++17 mode.
## Syntax
@@ -15,9 +15,9 @@ The C++17 standard makes `throw()` as an alias for `noexcept`, removes `throw()` and `throw(...)`, and allows certain types to include `noexcept`. The **/Zc:noexceptTypes** option is only available when [/std:c++17](std-specify-language-standard-version.md) or [/std:latest](std-specify-language-standard-version.md) is enabled. **/Zc:noexceptTypes** is enabled by default to conform to the ISO C++17 standard. The [/permissive-](permissive-standards-conformance.md) option does not affect **/Zc:noexceptTypes**. Turn this option off by specifying **/Zc:noexceptTypes-** to revert to the C++14 behavior of `noexcept` when **/std::C++17** or **/std::latest** is specified.
+When the **/Zc:noexceptTypes** option is specified, the compiler conforms to the C++17 standard and treats [throw()](../../cpp/exception-specifications-throw-cpp.md) as an alias for [noexcept](../../cpp/noexcept-cpp.md), removes `throw()` and `throw(...)`, and allows certain types to include `noexcept`. The **/Zc:noexceptTypes** option is only available when [/std:c++17](std-specify-language-standard-version.md) or [/std:latest](std-specify-language-standard-version.md) is enabled. **/Zc:noexceptTypes** is enabled by default to conform to the ISO C++17 standard. The [/permissive-](permissive-standards-conformance.md) option doesn't affect **/Zc:noexceptTypes**. Turn off this option by specifying **/Zc:noexceptTypes-** to revert to the C++14 behavior of `noexcept` when **/std:c++17** or **/std:latest** is specified.
-Beginning in Visual Studio 2017 version 15.5, the C++ compiler diagnoses more mismatched exception specifications in declarations in C++17 mode or when the [/permissive-](permissive-standards-conformance.md) option is specified.
+Beginning in Visual Studio 2017 version 15.5, the C++ compiler diagnoses more mismatched exception specifications in declarations in C++17 mode, or when you specify the [/permissive-](permissive-standards-conformance.md) option.
This sample shows how declarations with an exception specifier behave when the **/Zc:noexceptTypes** option is set or disabled. To show the behavior when set, compile by using `cl /EHsc /W4 noexceptTypes.cpp`. To show the behavior when disabled, compile by using `cl /EHsc /W4 /Zc:noexceptTypes- noexceptTypes.cpp`.
@@ -71,6 +71,6 @@ For more information about conformance issues in Visual C++, see [Nonstandard Be
## See also
-[/Zc (Conformance)](zc-conformance.md)
-[noexcept](../../cpp/noexcept-cpp.md)
-[Exception Specifications (throw)](../../cpp/exception-specifications-throw-cpp.md)
+[/Zc (Conformance)](zc-conformance.md)\
+[noexcept](../../cpp/noexcept-cpp.md)\
+[Exception specifications (throw)](../../cpp/exception-specifications-throw-cpp.md)
diff --git a/docs/build/reference/zc-referencebinding-enforce-reference-binding-rules.md b/docs/build/reference/zc-referencebinding-enforce-reference-binding-rules.md
index aba3295b1f..f012bbf457 100644
--- a/docs/build/reference/zc-referencebinding-enforce-reference-binding-rules.md
+++ b/docs/build/reference/zc-referencebinding-enforce-reference-binding-rules.md
@@ -7,7 +7,7 @@ ms.assetid: 0c6cfaac-9c2a-41a3-aa94-64ca8ef261fc
---
# /Zc:referenceBinding (Enforce reference binding rules)
-When the **/Zc:referenceBinding** option is specified, the compiler does not allow a non-const lvalue reference to bind to a temporary.
+When the **/Zc:referenceBinding** option is specified, the compiler doesn't allow a non-const lvalue reference to bind to a temporary.
## Syntax
@@ -15,7 +15,7 @@ When the **/Zc:referenceBinding** option is specified, the compiler does not all
## Remarks
-If **/Zc:referenceBinding** is specified, the compiler follows section 8.5.3 of the C++11 standard and does not allow expressions that bind a user-defined type temporary to a non-const lvalue reference. By default, or if **/Zc:referenceBinding-** is specified, the compiler allows such expressions as a Microsoft extension, but a level 4 warning is issued. For code security, portability and conformance, we recommend that you use **/Zc:referenceBinding**.
+If **/Zc:referenceBinding** is specified, the compiler follows section 8.5.3 of the C++11 standard: It doesn't allow expressions that bind a user-defined type temporary to a non-const lvalue reference. By default, or if **/Zc:referenceBinding-** is specified, the compiler allows such expressions as a Microsoft extension, but a level 4 warning is issued. For code security, portability and conformance, we recommend you use **/Zc:referenceBinding**.
The **/Zc:referenceBinding** option is off by default. The [/permissive-](permissive-standards-conformance.md) compiler option implicitly sets this option, but it can be overridden by using **/Zc:referenceBinding-**.
@@ -35,7 +35,7 @@ S g() {
return S{};
}
-void main() {
+int main() {
S& s = g(); // warning C4239 at /W4
const S& cs = g(); // okay, bound to const ref
f(g()); // Extension: error C2664 only if /Zc:referenceBinding
diff --git a/docs/build/reference/zc-ternary.md b/docs/build/reference/zc-ternary.md
index 9e8531cc8b..301a3884ef 100644
--- a/docs/build/reference/zc-ternary.md
+++ b/docs/build/reference/zc-ternary.md
@@ -1,6 +1,6 @@
---
title: "/Zc:ternary (Enforce conditional operator rules)"
-ms.date: "3/06/2018"
+ms.date: "09/12/2019"
f1_keywords: ["/Zc:ternary"]
helpviewer_keywords: ["/Zc:ternary", "Zc:ternary", "-Zc:ternary"]
---
@@ -14,13 +14,15 @@ Enable enforcement of C++ Standard rules for the types and const or volatile (cv
## Remarks
-Visual Studio version 15.3 enables compiler support for C++ standard conditional (or ternary) operator (**?:**) behavior. The C++ Standard requires either the operands to be of the same type and cv-qualification, or for only one operand to be unambiguously convertible to the same type and cv-qualification as the other, or for one or both operands to be a throw expression. In versions before Visual Studio version 15.5, the compiler allowed conversions that are considered ambiguous by the standard. When the **/Zc:ternary** option is specified, the compiler conforms to the standard and rejects code that does not satisfy the rules for matched types and cv-qualification of the second and third operands.
+Starting in Visual Studio 2017, the compiler supports C++ standard *conditional operator* (**?:**) behavior. It's also known as the *ternary operator*. The C++ Standard requires ternary operands satisfy one of three conditions: The operands must be of the same type and **const** or **volatile** qualification (cv-qualification), or only one operand must be unambiguously convertible to the same type and cv-qualification as the other. Or, one or both operands must be a throw expression. In versions before Visual Studio 2017 version 15.5, the compiler allowed conversions that are considered ambiguous by the standard.
-The **/Zc:ternary** option is off by default. Use **/Zc:ternary** to enable conforming behavior, or **/Zc:ternary-** to explicitly specify the previous non-conforming compiler behavior. The [/permissive-](permissive-standards-conformance.md) option implicitly enables this option, but it can be overridden by using **/Zc:ternary-**.
+When the **/Zc:ternary** option is specified, the compiler conforms to the standard. It rejects code that doesn't satisfy the rules for matched types and cv-qualification of the second and third operands.
+
+The **/Zc:ternary** option is off by default in Visual Studio 2017. Use **/Zc:ternary** to enable conforming behavior, or **/Zc:ternary-** to explicitly specify the previous non-conforming compiler behavior. The [/permissive-](permissive-standards-conformance.md) option implicitly enables this option, but it can be overridden by using **/Zc:ternary-**.
### Examples
-This sample shows how a class that provides both non-explicit initialization from a type and conversion to a type can lead to ambiguous conversions. This code is accepted by the compiler by default, but rejected when **/Zc:ternary** or **/permissive-** is specified.
+This sample shows how a class that provides both non-explicit initialization from a type, and conversion to a type, can lead to ambiguous conversions. This code is accepted by the compiler by default, but rejected when **/Zc:ternary** or **/permissive-** is specified.
```cpp
// zcternary1.cpp
@@ -44,9 +46,9 @@ int main()
}
```
-The fix required is to make an explicit cast to the preferred common type, or prevent one direction of conversion from participation in the compiler search for a type match by making the conversion explicit.
+To fix this code, make an explicit cast to the preferred common type, or prevent one direction of type conversion. You can keep the compiler from matching a type conversion by making the conversion explicit.
-An important exception to this common pattern is when the type of the operands is one of the null-terminated string types, such as `const char*`, `const char16_t*`, and so on. You can also reproduce this with array types and the pointer types they decay to. The behavior when the actual second or third operand to ?: is a string literal of corresponding type depends on the language standard used. C++17 has changed semantics for this case from C++14. As a result, the code in the following example is accepted under **/std:c++14** (the compiler default) but is rejected when **/std:c++17** is specified.
+An important exception to this common pattern is when the type of the operands is one of the null-terminated string types, such as `const char*`, `const char16_t*`, and so on. You can also reproduce the effect with array types and the pointer types they decay to. The behavior when the actual second or third operand to `?:` is a string literal of corresponding type depends on the language standard used. C++17 has changed semantics for this case from C++14. As a result, the compiler accepts the code in the following example under the default **/std:c++14**, but rejects it when you specify **/std:c++17**.
```cpp
// zcternary2.cpp
@@ -68,7 +70,7 @@ int main()
To fix this code, cast one of the operands explicitly.
-Under **/Zc:ternary**, the compiler rejects conditional operators where one of the arguments is of type void and the other is not a throw expression. A common use of these is in ASSERT-like macros:
+Under **/Zc:ternary**, the compiler rejects conditional operators where one of the arguments is of type **void**, and the other isn't a throw expression. A common use of this pattern is in ASSERT-like macros:
```cpp
// zcternary3.cpp
@@ -85,7 +87,7 @@ int main()
}
```
-The typical solution is to simply replace the non-void argument with void().
+The typical solution is to replace the non-void argument with `void()`.
This sample shows code that generates an error under both **/Zc:ternary** and **/Zc:ternary-**:
@@ -109,7 +111,7 @@ error C2446: ':': no conversion from 'foo::, foo::)'
```
-A common source of problems related to adoption of **/Zc:ternary** comes from the use of the conditional operator in template meta-programming, as some of the result types change under this switch. The following example demonstrates two cases where **/Zc:ternary** changes a conditional expression’s result type in a non-meta-programming context:
+A common source of problems found by **/Zc:ternary** comes from conditional operators used in template meta-programming. Some of the result types change under this switch. The following example demonstrates two cases where **/Zc:ternary** changes a conditional expression’s result type in a non-meta-programming context:
```cpp
// zcternary5.cpp
@@ -135,7 +137,7 @@ int main(int argc, char**) {
}
```
-The typical resolution in such cases is to apply a `std::remove_reference` trait on the result type where needed in order to preserve the old behavior.
+The typical fix is to apply a `std::remove_reference` trait on the result type, where needed to preserve the old behavior.
For more information about conformance issues in Visual C++, see [Nonstandard Behavior](../../cpp/nonstandard-behavior.md).
diff --git a/docs/build/reference/zc-twophase.md b/docs/build/reference/zc-twophase.md
index 2a267754a5..0eea82405e 100644
--- a/docs/build/reference/zc-twophase.md
+++ b/docs/build/reference/zc-twophase.md
@@ -1,12 +1,13 @@
---
title: "/Zc:twoPhase- (disable two-phase name lookup)"
-ms.date: "03/06/2018"
+description: "Explains how /Zc:twoPhase- disables two-phase name lookup when /permissive- is specified."
+ms.date: "12/03/2019"
f1_keywords: ["twoPhase", "/Zc:twoPhase", "VC.Project.VCCLCompilerTool.EnforceTypeConversionRules"]
helpviewer_keywords: ["twoPhase", "disable two-phase name lookup", "/Zc:twoPhase"]
---
# /Zc:twoPhase- (disable two-phase name lookup)
-When the **/Zc:twoPhase-** option is specified, the compiler parses and instantiates class templates and function templates in the same non-conforming way as versions of Visual Studio before Visual Studio 2017 version 15.3.
+The **/Zc:twoPhase-** option, under **/permissive-**, tells the compiler to use the original, non-conforming Microsoft C++ compiler behavior to parse and instantiate class templates and function templates.
## Syntax
@@ -14,17 +15,15 @@ When the **/Zc:twoPhase-** option is specified, the compiler parses and instanti
## Remarks
-In Visual Studio 2017 version 15.3 and later, by default, the compiler uses two-phase name lookup for template name resolution. If **/Zc:twoPhase-** is specified, the compiler reverts to its previous non-conforming class template and function template name resolution and substitution behavior.
+Visual Studio 2017 version 15.3 and later: Under [/permissive-](permissive-standards-conformance.md), the compiler uses two-phase name lookup for template name resolution. If you also specify **/Zc:twoPhase-**, the compiler reverts to its previous non-conforming class template and function template name resolution and substitution behavior. When **/permissive-** isn't specified, the non-conforming behavior is the default.
-The **/Zc:twoPhase-** option to enable non-conforming behavior is not set by default. The [/permissive-](permissive-standards-conformance.md) option implicitly sets the conforming two-phase lookup compiler behavior, but it can be overridden by using **/Zc:twoPhase-**.
-
-The Windows SDK header files in version 10.0.15063.0 (Creators Update or Redstone 2) and earlier versions do not work correctly in conformance mode. You must use **/Zc:twoPhase-** to compile code for those SDK versions when you use Visual Studio 2017 version 15.3 and later versions. Versions of the Windows SDK starting with version 10.0.15254.0 (Redstone 3 or Fall Creators Update) work correctly in conformance mode and do not require the **/Zc:twoPhase-** option.
+The Windows SDK header files in version 10.0.15063.0 (Creators Update or RS2) and earlier don't work in conformance mode. **/Zc:twoPhase-** is required to compile code for those SDK versions when you use **/permissive-**. Versions of the Windows SDK starting with version 10.0.15254.0 (Fall Creators Update or RS3) work correctly in conformance mode. They don't require the **/Zc:twoPhase-** option.
Use **/Zc:twoPhase-** if your code requires the old behavior to compile correctly. Strongly consider updating your code to conform to the standard.
### Compiler behavior under /Zc:twoPhase-
-In versions of the compiler before Visual Studio 2017 version 15.3, and when **/Zc:twoPhase-** is specified, the compiler uses this behavior:
+By default, or in Visual Studio 2017 version 15.3 and later when you specify both **/permissive-** and **/Zc:twoPhase-**, the compiler uses this behavior:
- It parses only the template declaration, the class head, and the base class list. The template body is captured as a token stream. No function bodies, initializers, default arguments, or noexcept arguments are parsed. The class template is pseudo-instantiated on a tentative type to validate that the declarations in the class template are correct. Consider this class template:
@@ -32,43 +31,68 @@ In versions of the compiler before Visual Studio 2017 version 15.3, and when **/
template class Derived : public Base { ... }
```
- The template declaration, `template , the class head `class Derived`, and the base-class list `public Base` are parsed, but the template body is captured as a token stream.
+ The template declaration, `template `, the class head `class Derived`, and the base-class list `public Base` are parsed, but the template body is captured as a token stream.
-- When parsing a function template, the compiler parses only the function signature. The function body is never parsed. Instead, it is captured as a token stream.
+- When parsing a function template, the compiler parses only the function signature. The function body is never parsed. Instead, it's captured as a token stream.
-As a result, if the template body has syntax errors and the template is never instantiated, the errors are never diagnosed.
+As a result, if the template body has syntax errors, but the template never gets instantiated, the compiler doesn't diagnose the errors.
-Another effect of this behavior is in overload resolution. Because of the way the token stream is expanded at the site of instantiation, symbols that were not visible at the template declaration may be visible at the point of instantiation and participate in overload resolution. This can lead to templates that change behavior based on code that was not visible when the template was defined, contrary to the standard.
+Another effect of this behavior is in overload resolution. Non-standard behavior occurs because of the way the token stream is expanded at the site of instantiation. Symbols that weren't visible at the template declaration may be visible at the point of instantiation. That means they can participate in overload resolution. You may find templates change behavior based on code that wasn't visible at template definition, contrary to the standard.
For example, consider this code:
```cpp
+// zctwophase.cpp
+// To test options, compile by using
+// cl /EHsc /nologo /W4 zctwophase.cpp
+// cl /EHsc /nologo /W4 /permissive- zctwophase.cpp
+// cl /EHsc /nologo /W4 /permissive- /Zc:twoPhase- zctwophase.cpp
+
#include
-void func(void*) { std::puts("The call resolves to void*") ;}
+void func(long) { std::puts("Standard two-phase") ;}
template void g(T x)
{
func(0);
}
-void func(int) { std::puts("The call resolves to int"); }
+void func(int) { std::puts("Microsoft one-phase"); }
int main()
{
- g(3.14);
+ g(6174);
}
```
-When compiled under **/Zc:twoPhase-**, this program prints "The call resolves to int". In conformance mode under **/permissive-**, this program prints "The call resolves to void*", because the second overload of `func` is not visible when the compiler encounters the template.
+Here's the output when you use the default mode, conformance mode, and conformance mode with **/Zc:twoPhase-** compiler options:
+
+```cmd
+C:\Temp>cl /EHsc /nologo /W4 zctwophase.cpp && zctwophase
+zctwophase.cpp
+Microsoft one-phase
+
+C:\Temp>cl /EHsc /nologo /W4 /permissive- zctwophase.cpp && zctwophase
+zctwophase.cpp
+Standard two-phase
+
+C:\Temp>cl /EHsc /nologo /W4 /permissive- /Zc:twoPhase- zctwophase.cpp && zctwophase
+zctwophase.cpp
+Microsoft one-phase
+```
+
+When compiled in conformance mode under **/permissive-**, this program prints "`Standard two-phase`", because the second overload of `func` isn't visible when the compiler reaches the template. If you add **/Zc:twoPhase-**, the program prints "`Microsoft one-phase`". The output is the same as when you don't specify **/permissive-**.
-*Dependent names*, names that depend on a template parameter, have lookup behavior that is also different under **/Zc:twoPhase-**. In conformance mode, dependent names are not bound at the point of the template’s definition. Instead, these names are looked up when the template is instantiated. For function calls with a dependent function name, the name is bound to the set of functions that are visible at the point of the call in the template’s definition, as above. Additional overloads from argument-dependent lookup are added at both the point of the template definition and the point of where the template is instantiated. The two phases of two-phase lookup are the lookup for non-dependent names at the time of template definition, and lookup for dependent names at the time of template instantiation. Under **/Zc:twoPhase-**, the compiler does not do argument-dependent lookup separately from ordinary, unqualified lookup (that is, it doesn't do two-phase lookup), so the results of overload resolution may be different.
+*Dependent names* are names that depend on a template parameter. These names have lookup behavior that is also different under **/Zc:twoPhase-**. In conformance mode, dependent names aren't bound at the point of the template's definition. Instead, the compiler looks them up when it instantiates the template. For function calls with a dependent function name, the name gets bound to functions visible at the call site in the template definition. Additional overloads from argument-dependent lookup are added, both at the point of the template definition, and at the point of template instantiation.
+
+Two-phase lookup consists of two parts: The lookup for non-dependent names during template definition, and the lookup for dependent names during template instantiation. Under **/Zc:twoPhase-**, the compiler doesn't do argument-dependent lookup separately from unqualified lookup. That is, it doesn't do two-phase lookup, so the results of overload resolution may be different.
Here's another example:
```cpp
// zctwophase1.cpp
-// Compile by using
+// To test options, compile by using
+// cl /EHsc /W4 zctwophase1.cpp
// cl /EHsc /W4 /permissive- zctwophase1.cpp
// cl /EHsc /W4 /permissive- /Zc:twoPhase- zctwophase1.cpp
@@ -94,33 +118,40 @@ int main() {
}
```
-When compiled without **/Zc:twoPhase-**, this prints
+When compiled without **/permissive-**, this code prints:
+
+```Output
+func(int)
+NS::func(NS::S)
+```
+
+When compiled with **/permissive-**, but without **/Zc:twoPhase-**, this code prints:
```Output
func(long)
NS::func(NS::S)
```
-When compiled with **/Zc:twoPhase-**, this prints
+When compiled with both **/permissive-** and **/Zc:twoPhase-**, this code prints:
```Output
func(int)
NS::func(NS::S)
```
-In conformance mode under **/permissive-**, the call `tfunc(1729)` resolves to the `void func(long)` overload, not `void func(int)` overload as under **/Zc:twoPhase-**, because the unqualified `func(int)` is declared after the definition of the template and not found through argument-dependent lookup. But `void func(S)` does participate in argument-dependent lookup, so it is added to the overload set for the call `tfunc(s)` even though it is declared after the template function.
+In conformance mode under **/permissive-**, the call `tfunc(1729)` resolves to the `void func(long)` overload. It doesn't resolve to the `void func(int)` overload, as under **/Zc:twoPhase-**. That's because the unqualified `func(int)` is declared after the definition of the template, and it isn't found through argument-dependent lookup. But `void func(S)` does participate in argument-dependent lookup, so it's added to the overload set for the call `tfunc(s)`, even though it's declared after the template function.
### Update your code for two-phase conformance
-Older versions of the compiler do not require the keywords `template` and `typename` everywhere the C++ Standard requires them. These keywords are needed in some positions to disambiguate how compilers should parse a dependent name during the first phase of lookup. For example:
+Older versions of the compiler don't require the keywords `template` and `typename` everywhere the C++ Standard requires them. These keywords are needed in some positions to disambiguate how compilers should parse a dependent name during the first phase of lookup. For example:
`T::Foo(c);`
-A conforming compiler parses `Foo` as a variable in the scope of `T`, meaning this code is a logical-or expression with `T::foo < a` as the left operand and `b > (c)` as the right operand. If you mean to use `Foo` as a function template, you must indicate that this is a template by adding the `template` keyword:
+A conforming compiler parses `Foo` as a variable in the scope of `T`, meaning this code is a logical-or expression with `T::foo < a` as the left operand and `b > (c)` as the right operand. If you mean to use `Foo` as a function template, you must indicate that it's a template by adding the `template` keyword:
`T::template Foo(c);`
-In versions prior to Visual Studio 2017 version 15.3, and when **/Zc:twoPhase-** is specified, the compiler allows this code without the `template` keyword and interprets it as a call to a function template with an argument of `a || b`, because it parses templates in a very limited fashion. The code above isn't parsed at all in the first phase. During the second phase there’s enough context to tell that `T::Foo` is a template rather than a variable so the compiler does not enforce use of the keyword.
+In versions Visual Studio 2017 version 15.3 and later, when **/permissive-** and **/Zc:twoPhase-** are specified, the compiler allows this code without the `template` keyword. It interprets the code as a call to a function template with an argument of `a || b`, because it only parses templates in a limited fashion. The code above isn't parsed at all in the first phase. During the second phase, there's enough context to tell that `T::Foo` is a template rather than a variable, so the compiler doesn't enforce use of the keyword.
This behavior can also be seen by eliminating the keyword `typename` before names in function template bodies, initializers, default arguments, and noexcept arguments. For example:
@@ -132,7 +163,7 @@ typename T::TYPE func(typename T::TYPE*)
}
```
-If you do not use the keyword `typename` in the function body, this code compiles under **/Zc:twoPhase-**, but not under **/permissive-**. The `typename` keyword is required to indicate that the `TYPE` is dependent. Because the body is not parsed under **/Zc:twoPhase-**, the compiler does’t require the keyword. In **/permissive-** conformance mode, code without the `typename` keyword generates errors. To migrate your code to Visual Studio 2017 version 15.3 and beyond, insert the `typename` keyword where it is missing.
+If you don't use the keyword `typename` in the function body, this code compiles under **/permissive- /Zc:twoPhase-**, but not under **/permissive-** alone. The `typename` keyword is required to indicate that the `TYPE` is dependent. Because the body isn't parsed under **/Zc:twoPhase-**, the compiler does't require the keyword. In **/permissive-** conformance mode, code without the `typename` keyword generates errors. To migrate your code to conformance in Visual Studio 2017 version 15.3 and beyond, insert the `typename` keyword where it's missing.
Similarly, consider this code sample:
@@ -144,7 +175,7 @@ typename T::template X::TYPE func(typename T::TYPE)
}
```
-Under **/Zc:twoPhase-** and in older compilers, the compiler only requires the `template` keyword on line 2. By default, and in conformance mode, the compiler now also requires the `template` keyword on line 4 to indicate that `T::X` is a template. Look for code that is missing this keyword, and supply it to make your code conform to the standard.
+Under **/permissive- /Zc:twoPhase-** and in older compilers, the compiler only requires the `template` keyword on line 2. In conformance mode, the compiler now also requires the `template` keyword on line 4 to indicate that `T::X` is a template. Look for code that is missing this keyword, and supply it to make your code conform to the standard.
For more information about conformance issues, see [C++ conformance improvements in Visual Studio](../../overview/cpp-conformance-improvements.md) and [Nonstandard Behavior](../../cpp/nonstandard-behavior.md).
@@ -158,4 +189,4 @@ For more information about conformance issues, see [C++ conformance improvements
## See also
-[/Zc (Conformance)](zc-conformance.md)
+[/Zc (Conformance)](zc-conformance.md)
diff --git a/docs/build/reference/zh.md b/docs/build/reference/zh.md
new file mode 100644
index 0000000000..728569bc3c
--- /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/build/reference/zl-omit-default-library-name.md b/docs/build/reference/zl-omit-default-library-name.md
index f640bc47e6..110dbdb589 100644
--- a/docs/build/reference/zl-omit-default-library-name.md
+++ b/docs/build/reference/zl-omit-default-library-name.md
@@ -29,7 +29,7 @@ For more information, see [CRT Library Features](../../c-runtime-library/crt-lib
When compiling with **/Zl**, `_VC_NODEFAULTLIB` is defined. For example:
-```
+```cpp
// vc_nodefaultlib.cpp
// compile with: /Zl
void Test() {
diff --git a/docs/build/tasks-vs-json-schema-reference-cpp.md b/docs/build/tasks-vs-json-schema-reference-cpp.md
index 190292862c..6cfa30afe9 100644
--- a/docs/build/tasks-vs-json-schema-reference-cpp.md
+++ b/docs/build/tasks-vs-json-schema-reference-cpp.md
@@ -21,7 +21,7 @@ The default properties are available on all types of tasks:
|`appliesTo`|string| (Required.) Specifies which files the command can be performed on. The use of wildcards is supported, for example: "*", "*.cpp", "/*.txt"|
|`contextType`|string| Allowed values: "custom", "build", "clean", "rebuild". Determines where in the context menu the task will appear. Defaults to "custom".|
|`output`|string| Specifies an output tag to your task.|
-|`inheritEnvironments`|array| Specifies a set of environment variables inherited from multiple sources. You can define variables in files like *CMakeSettings.json* or *CppProperties.json* and make them available to the task context.|
+|`inheritEnvironments`|array| Specifies a set of environment variables inherited from multiple sources. You can define variables in files like *CMakeSettings.json* or *CppProperties.json* and make them available to the task context. **Visual Studio 16.4:**: Specify environment variables on a per-task basis using the `env.VARIABLE_NAME` syntax. To unset a variable, set it to "null".|
|`passEnvVars`|boolean| Specifies whether or not to include additional environment variables to the task context. These variables are different from the ones defined using the `envVars` property. Defaults to "true".|
## Launch properties
diff --git a/docs/build/vcpkg.md b/docs/build/vcpkg.md
index b8660a2c6f..a04be1665f 100644
--- a/docs/build/vcpkg.md
+++ b/docs/build/vcpkg.md
@@ -1,27 +1,25 @@
---
-title: vcpkg-- A C++ package manager for Windows, Linux and MacOS
-description: "vcpkg is a command line package manager that greatly simplifies the acquisition and installation of open-source C++ libraries on Windows."
-author: mikeblome
-ms.author: mblome
-ms.date: "05/16/2019"
+title: "vcpkg: a C++ package manager for Windows, Linux, and MacOS"
+description: "vcpkg is a command-line package manager that greatly simplifies the acquisition and installation of open-source C++ libraries on Windows, MacOS, and Linux."
+ms.date: "01/10/2020"
ms.technology: "cpp-ide"
ms.assetid: f50d459a-e18f-4b4e-814b-913e444cedd6
---
-# vcpkg: A C++ package manager for Windows, Linux and MacOS
+# vcpkg: a C++ package manager for Windows, Linux, and MacOS
-vcpkg is a command-line package manager that greatly simplifies the acquisition and installation of third-party libraries on Windows, Linux and MacOS. If your project uses third-party libraries, we recommend that you use vcpkg to install them. vcpkg supports both open-source and proprietary libraries. All libraries in the vcpkg Windows catalog have been tested for compatibility with Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019. As of May 2018 there are over 900 libraries in the Windows catalog and over 350 in the Linux/MacOS catalog. The C++ community is adding more libraries to both catalogs on an ongoing basis.
+vcpkg is a command-line package manager for C++. It greatly simplifies the acquisition and installation of third-party libraries on Windows, Linux, and MacOS. If your project uses third-party libraries, we recommend that you use vcpkg to install them. vcpkg supports both open-source and proprietary libraries. All libraries in the vcpkg Windows catalog have been tested for compatibility with Visual Studio 2015, Visual Studio 2017, and Visual Studio 2019. Between the Windows and Linux/MacOS catalogs, vcpkg now supports over 1900 libraries. The C++ community is adding more libraries to both catalogs on an ongoing basis.
## Simple yet flexible
-With a single command, you can download sources and build a library. vcpkg is itself an open-source project, available on GitHub. You can customize your private clone(s) in any way you like. For example, you can specify different libraries, or different versions of libraries than what are found in the public catalog. You can have multiple clones of vcpkg on a single machine, each one producing custom sets of libraries and/or compilation switches, etc. Each clone is a self-contained environment with its own copy of vcpkg.exe that operates only on its own hierarchy. vcpkg is not added to any environment variables, and has no dependency on the Windows Registry or Visual Studio.
+With a single command, you can download sources and build a library. vcpkg is itself an open-source project, available on GitHub. It's possible to customize your private vcpkg clones in any way you like. For example, specify different libraries, or different versions of libraries than the ones found in the public catalog. You can have multiple clones of vcpkg on a single machine. Each one may be set to produce a custom collection of libraries, with your preferred compilation switches. Each clone is a self-contained environment with its own copy of vcpkg.exe that operates only on its own hierarchy. vcpkg isn't added to any environment variables, and has no dependency on the Windows Registry or Visual Studio.
-## Sources not binaries
+## Sources, not binaries
-For libraries in the Windows catalog, vcpkg downloads sources instead of binaries[1]. It compiles those sources using the most recent version of Visual Studio that it can find. In C++, it is very important that any libraries you use are complied with the same compiler, and compiler version, as the application code that links to it. By using vcpkg, you eliminate or at least greatly reduce the potential for mismatched binaries and the problems they can cause. In teams that are standardized on a specific version of a compiler, one team member can use vcpkg to download sources and compile a set of binaries and then use the export command to zip up the binaries and headers for other team members. For more information, see [Export compiled binaries and headers](#export_binaries_per_project) below.
+For libraries in the Windows catalog, vcpkg downloads sources instead of binaries1. It compiles those sources using the most recent version of Visual Studio that it can find. In C++, it's important that both your application code and any libraries you use are compiled by the same compiler, and compiler version. By using vcpkg, you eliminate or at least greatly reduce the potential for mismatched binaries and the problems they can cause. In teams that are standardized on a specific version of a compiler, one team member can use vcpkg to download sources and compile a set of binaries. Then they can use the export command to zip up the binaries and headers for other team members. For more information, see [Export compiled binaries and headers](#export_binaries_per_project) below.
-If you create a vcpkg clone with private libraries in the ports collection, you can add a port that downloads prebuilt binaries and headers and write a portfile.cmake file that simply copies those files to the desired location.
+You can also create a vcpkg clone that has private libraries in the ports collection. Add a port that downloads your prebuilt binaries and headers. Then, write a portfile.cmake file that simply copies those files to the preferred location.
-[1] *Note: for some proprietary libraries, sources are not available. Vcpkg will download compatible prebuilt binaries in these cases.*
+1 *Note: sources are unavailable for some proprietary libraries. In these cases, vcpkg downloads compatible prebuilt binaries.*
## Installation
@@ -36,7 +34,7 @@ Run the bootstrapper in the root folder:
To see what packages are available, at the command prompt type: **vcpkg search**
-This command enumerates the control files in the vcpkg/ports subfolders. You will see a listing like this:
+This command enumerates the control files in the vcpkg/ports subfolders. You'll see a listing like this:
```cmd
ace 6.4.3 The ADAPTIVE Communication Environment
@@ -63,7 +61,7 @@ After you get the name of a library by using **vcpkg search**, you use **vcpkg i
For Linux libraries, vcpkg depends on gcc being installed on the local machine. On MacOS, vcpkg uses Clang.
-If the portfile specifies dependencies, vcpkg downloads and installs those also. After downloading, vcpkg builds the library by using whatever build system the library uses. CMake and (on Windows) MSBuild projects are preferred, but MAKE is supported along with any other build system. If vcpkg cannot find the specified build system on the local machine, it downloads and installs it.
+When the portfile specifies dependencies, vcpkg downloads and installs them too. After downloading, vcpkg builds the library by using the same build system the library uses. CMake and (on Windows) MSBuild projects are preferred, but MAKE is supported, along with any other build system. If vcpkg can't find the specified build system on the local machine, it downloads and installs it.
```cmd
> vcpkg install boost:x86-windows
@@ -84,7 +82,7 @@ cmake .. -DCMAKE_TOOLCHAIN_FILE=vcpkg\scripts\buildsystems\vcpkg.cmake (Windows)
## List the libraries already installed
-After you have installed some libraries, you can use **vcpkg list** to see what you have:
+After you've installed some libraries, you can use **vcpkg list** to see what you have:
```cmd
> vcpkg list
@@ -101,15 +99,15 @@ zlib:x86-windows 1.2.11 A compression library
### Per-user
-Run **vcpkg integrate install** to configure Visual Studio to locate all vcpkg header files and binaries on a per-user basis without the need for manual editing of VC++ Directories paths. If you have multiple clones, the clone from which you run this command becomes the new default location.
+Run **vcpkg integrate install** to configure Visual Studio to locate all vcpkg header files and binaries on a per-user basis. There's no need for manual editing of VC++ Directories paths. If you have multiple clones, the clone you run this command from becomes the new default location.
-Now you can #include headers simply by typing the folder/header, and auto-complete assists you. No additional steps are required for linking to libs or adding project references. The following illustration shows how Visual Studio finds the azure-storage-cpp headers. vcpkg places its headers in the **/installed** subfolder, partitioned by target platform. The following diagram shows the list of include files in the **/was** subfolder for the library:
+Now you can #include headers simply by typing the folder/header, and autocomplete assists you. No additional steps are required for linking to libs or adding project references. The following illustration shows how Visual Studio finds the azure-storage-cpp headers. vcpkg places its headers in the **/installed** subfolder, partitioned by target platform. The following diagram shows the list of include files in the **/was** subfolder for the library:
-![vcpkg IntelliSense integration](media/vcpkg-intellisense.png "vcpkg and IntelliSense")
+![vcpkg and IntelliSense](media/vcpkg-intellisense.png "vcpkg and IntelliSense")
### Per project
-If you need to use a specific version of a library that is different from the version in your active vcpkg instance, follow these steps:
+If you need to use a specific version of a library that's different from the version in your active vcpkg instance, follow these steps:
1. Make a new clone of vcpkg
1. Modify the portfile for the library to obtain the version you need
@@ -118,21 +116,21 @@ If you need to use a specific version of a library that is different from the ve
## Integrate with Visual Studio Code (Linux/MacOS)
-Run **vcpkg integrate install** to configure Visual Studio Code on Linux/MacOS with the location of the vcpkg enlistment and enable IntelliSense on source files.
+Run **vcpkg integrate install** to configure Visual Studio Code on Linux/MacOS. This command sets the location of the vcpkg enlistment and enables IntelliSense on source files.
## Target Linux from Windows via WSL
-You can produce Linux binaries from a Windows machine by using the Windows Subsystem for Linux (WSL). Follow the instructions to [Set up WSL on Windows 10](/windows/wsl/install-win10), and configure it with the [Visual Studio extension for Linux](https://blogs.msdn.microsoft.com/vcblog/2017/02/08/targeting-windows-subsystem-for-linux-from-visual-studio/). You can put all your built libraries for both Windows and Linux into the same folder and access it from both Windows and WSL.
+You can produce Linux binaries on a Windows machine by using the Windows Subsystem for Linux, or WSL. Follow the instructions to [Set up WSL on Windows 10](/windows/wsl/install-win10), and configure it with the [Visual Studio extension for Linux](https://blogs.msdn.microsoft.com/vcblog/2017/02/08/targeting-windows-subsystem-for-linux-from-visual-studio/). It's okay to put all your built libraries for Windows and Linux into the same folder. They're accessible from both Windows and WSL.
## Export compiled binaries and headers
-Requiring everyone on a team to download and build libraries can be inefficient. A single team member can do that work, and then use **vcpkg export** to create a zip file of the binaries and headers, or a NuGet package (various format available), that can be easily shared with other team members.
+It's inefficient to make everyone on a team download and build common libraries. A single team member can use the **vcpkg export** command to create a common zip file of the binaries and headers, or a NuGet package. Then, it's easy to share it with other team members.
## Update/upgrade installed libraries
-The public catalog is kept up-to-date with the latest versions of the libraries. To determine which of your local libraries are out-of-date, use **vcpkg update**. When you're ready to update your ports collection to the latest version of the public catalog, run the **vcpkg upgrade** command to automatically download and rebuild any or all of your installed libraries that are out of date.
+The public catalog is kept up to date with the latest versions of the libraries. To determine which of your local libraries are out-of-date, use **vcpkg update**. When you're ready to update your ports collection to the latest version of the public catalog, run the **vcpkg upgrade** command. It automatically downloads and rebuilds any or all of your installed libraries that are out of date.
-By default, the **upgrade** command only lists the libraries that are out of date; it doesn’t upgrade them. To perform the upgrade, use the **--no-dry-run** option.
+By default, the **upgrade** command only lists the libraries that are out of date; it doesn’t upgrade them. To actually upgrade the libraries, use the **--no-dry-run** option.
```cmd
vcpkg upgrade --no-dry-run
@@ -147,7 +145,7 @@ By default, the **upgrade** command only lists the libraries that are out of dat
### Upgrade example
-The following example shows how to upgrade only specified libraries. Note that vcpgk automatically pulls in dependencies as necessary.
+The following example shows how to upgrade only specified libraries. vcpkg automatically pulls in dependencies as necessary.
```cmd
c:\users\satyan\vcpkg> vcpkg upgrade tiny-dnn:x86-windows zlib
@@ -168,15 +166,15 @@ You can include any libraries you like in your private ports collection. To sugg
## Remove a library
-Type **vcpkg remove** to remove an installed library. If any other libraries depend on it, you are asked to rerun the command with **--recurse**, which causes all downstream libraries to be removed.
+Type **vcpkg remove** to remove an installed library. If any other libraries depend on it, you're asked to rerun the command with **--recurse**, which causes all downstream libraries to be removed.
## Customize vcpkg
-You can modify your clone of vcpkg in any way you like. You can create multiple vcpkg clones and modify the portfiles in each one to obtain specific versions of libraries or specify command-line parameters. For example, in an enterprise, one group of developers might be working on software that has one set of dependencies, and another group might have a different set. You can set up two clones of vcpkg, and modify each one to download the versions of the libraries and the compilation switches, and so on, according to your needs.
+You can modify your clone of vcpkg in any way you like. You can even create multiple vcpkg clones, then modify the portfiles in each one. That's a simple way to obtain specific library versions, or to specify particular command-line parameters. For example, in an enterprise, individual groups of developers might work on software that has a set of dependencies specific to their group. The solution is to set up a clone of vcpkg for each team. Then, modify the clones to download the library versions and set the compilation switches that each team needs.
## Uninstall vcpkg
-Just delete the directory.
+Just delete the vcpkg directory. Deleting this directory uninstalls the vcpkg distribution, and all the libraries that vcpkg has installed.
## Send feedback about vcpkg
@@ -184,14 +182,14 @@ Use the **vcpkg contact --survey** command to send feedback to Microsoft about v
## The vcpkg folder hierarchy
-All vcpkg functionality and data is self-contained in a single directory hierarchy, called an "instance". There are no registry settings or environment variables. You can have any number of instances of vcpkg on a machine and they do not interfere with each other.
+All vcpkg functionality and data is self-contained in a single directory hierarchy, called an "instance". There are no registry settings or environment variables. You can have any number of instances of vcpkg on a machine, and they won't interfere with each other.
The contents of a vcpkg instance are:
- buildtrees -- contains subfolders of sources from which each library is built
- docs -- documentation and examples
-- downloads -- cached copies of any downloaded tools or sources. vcpkg searches here first when you run the install command .
-- installed-- Contains the headers and binaries for each installed library. When you integrate with Visual Studio, you are essentially telling it add this folder to its search paths.
+- downloads -- cached copies of any downloaded tools or sources. vcpkg searches here first when you run the install command.
+- installed-- Contains the headers and binaries for each installed library. When you integrate with Visual Studio, you're essentially telling it add this folder to its search paths.
- packages -- Internal folder for staging between installs.
- ports -- Files that describe each library in the catalog, its version, and where to download it. You can add your own ports if needed.
- scripts -- Scripts (cmake, powershell) used by vcpkg.
@@ -202,20 +200,20 @@ The contents of a vcpkg instance are:
|Command|Description|
|---------|---------|
-|**vcpkg search [pat]**|Search for packages available to install|
+|**vcpkg search \[pat]**|Search for packages available to install|
|**vcpkg install \...**|Install a package|
|**vcpkg remove \...**|Uninstall a package|
|**vcpkg remove --outdated**|Uninstall all out-of-date packages|
|**vcpkg list**|List installed packages|
|**vcpkg update**|Display list of packages for updating|
|**vcpkg upgrade**|Rebuild all outdated packages|
-|**vcpkg hash \ [alg]**|Hash a file by specific algorithm, default SHA512|
+|**vcpkg hash \ \[alg]**|Hash a file by specific algorithm, default SHA512|
|**vcpkg integrate install**|Make installed packages available user-wide. Requires admin privileges on first use|
|**vcpkg integrate remove**|Remove user-wide integration|
|**vcpkg integrate project**|Generate a referencing NuGet package for individual VS project use|
-|**vcpkg export \... [opt]...**|Export a package|
+|**vcpkg export \... \[opt]...**|Export a package|
|**vcpkg edit \**|Open up a port for editing (uses %EDITOR%, default 'code')|
-|**vcpkg create \ \ [archivename]**|Create a new package|
+|**vcpkg create \ \ \[archivename]**|Create a new package|
|**vcpkg cache**|List cached compiled packages|
|**vcpkg version**|Display version information|
|**vcpkg contact --survey**|Display contact information to send feedback.|
diff --git a/docs/build/vscpp-step-0-installation.md b/docs/build/vscpp-step-0-installation.md
index 963f3bb87a..436174e40a 100644
--- a/docs/build/vscpp-step-0-installation.md
+++ b/docs/build/vscpp-step-0-installation.md
@@ -80,19 +80,19 @@ After the installer is installed, you can use it to customize your installation
> [!TIP]
> At any time after installation, you can install workloads or components that you didn't install initially. If you have Visual Studio open, go to **Tools** > **Get Tools and Features...** which opens the Visual Studio Installer. Or, open **Visual Studio Installer** from the Start menu. From there, you can choose the workloads or components that you wish to install. Then, choose **Modify**.
-## Step 5 - Choose individual components (Optional)
+### Step 5 - Choose individual components (Optional)
If you don't want to use the Workloads feature to customize your Visual Studio installation, or you want to add more components than a workload installs, you can do so by installing or adding individual components from the **Individual components** tab. Choose what you want, and then follow the prompts.
![Visual Studio 2019 - Install individual components](../get-started/media/vs-installer-individual-components.png "Install Visual Studio individual components")
-## Step 6 - Install language packs (Optional)
+### Step 6 - Install language packs (Optional)
By default, the installer program tries to match the language of the operating system when it runs for the first time. To install Visual Studio in a language of your choosing, choose the **Language packs** tab from the Visual Studio Installer, and then follow the prompts.
![Visual Studio 2019 - Install language packs](../get-started/media/vs-installer-language-packs.png "Install Visual Studio language packs")
-### Change the installer language from the command line
+#### Change the installer language from the command line
Another way that you can change the default language is by running the installer from the command line. For example, you can force the installer to run in English by using the following command: `vs_installer.exe --locale en-US`. The installer will remember this setting when it's run the next time. The installer supports the following language tokens: zh-cn, zh-tw, cs-cz, en-us, es-es, fr-fr, de-de, it-it, ja-jp, ko-kr, pl-pl, pt-br, ru-ru, and tr-tr.
@@ -105,7 +105,7 @@ You can reduce the installation footprint of Visual Studio on your system drive.
> [!IMPORTANT]
> You can select a different drive only when you first install Visual Studio. If you've already installed it and want to change drives, you must uninstall Visual Studio and then reinstall it.
-## Step 8 - Start developing
+### Step 8 - Start developing
1. After Visual Studio installation is complete, choose the **Launch** button to get started developing with Visual Studio.
diff --git a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md
index 1170ac4a09..03676b3617 100644
--- a/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md
+++ b/docs/build/walkthrough-compile-a-c-program-on-the-command-line.md
@@ -17,7 +17,7 @@ To complete this walkthrough, you must have installed either Visual Studio and t
Visual Studio is a powerful integrated development environment that supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. For information on these features and how to download and install Visual Studio, including the free Visual Studio Community edition, see [Install Visual Studio](/visualstudio/install/install-visual-studio).
-The Build Tools for Visual Studio version of Visual Studio installs only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download Build Tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/) page and run the installer.
+The Build Tools for Visual Studio version of Visual Studio installs only the command-line toolset, the compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line toolset, download Build Tools for Visual Studio from the [Visual Studio downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) page and run the installer. In the Visual Studio installer, select the **C++ build tools** workload, and choose **Install**.
Before you can build a C or C++ program on the command line, you must verify that the tools are installed, and that you can access them from the command line. Visual C++ has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use Visual C++ in a plain command prompt window** without some preparation. You need a *developer command prompt* window, which is a regular command prompt window that has all the required environment variables set. Fortunately, Visual C++ installs shortcuts for you to launch developer command prompts that have the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual C++ and on different versions of Windows. Your first walkthrough task is to find the right shortcut to use.
diff --git a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md
index b759799a84..a3075083da 100644
--- a/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md
+++ b/docs/build/walkthrough-compiling-a-native-cpp-program-on-the-command-line.md
@@ -20,7 +20,7 @@ To complete this walkthrough, you must have installed either Visual Studio and t
Visual Studio is a powerful integrated development environment (IDE) that supports a full-featured editor, resource managers, debuggers, and compilers for many languages and platforms. For information on how to download and install Visual Studio, including the free Visual Studio Community edition, and to include support for C/C++ development, see [Install C++ support in Visual Studio](vscpp-step-0-installation.md).
-The Build Tools for Visual Studio installs only the command-line compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line tools, look for Build Tools for Visual Studio on the [Visual Studio Downloads](https://visualstudio.microsoft.com/downloads/) page.
+The Build Tools for Visual Studio installs only the command-line compilers, tools, and libraries you need to build C and C++ programs. It's perfect for build labs or classroom exercises and installs relatively quickly. To install only the command-line tools, look for Build Tools for Visual Studio on the [Visual Studio Downloads](https://visualstudio.microsoft.com/downloads/#build-tools-for-visual-studio-2019) page.
Before you can build a C or C++ program on the command line, you must verify that the tools are installed, and that you can access them from the command line. Visual C++ has complex requirements for the command-line environment to find the tools, headers, and libraries it uses. **You can't use Visual C++ in a plain command prompt window** without doing some preparation. Fortunately, Visual C++ installs shortcuts for you to launch a developer command prompt that has the environment set up for command line builds. Unfortunately, the names of the developer command prompt shortcuts and where they're located are different in almost every version of Visual C++ and on different versions of Windows. Your first walkthrough task is finding the right one to use.
@@ -68,7 +68,7 @@ Before you can build a C or C++ program on the command line, you must verify tha
```cpp
#include
using namespace std;
- void main()
+ int main()
{
cout << "Hello, world, from Visual C++!" << endl;
}
@@ -156,7 +156,7 @@ The compiler, cl.exe, has many more options you can apply to build, optimize, de
You can use NMAKE and makefiles, or MSBuild and project files to configure and build more complex projects on the command line. For more information on using these tools, see [NMAKE Reference](reference/nmake-reference.md) and [MSBuild](msbuild-visual-cpp.md).
-The C and C++ languages are similar, but not the same. The MSVC compiler uses a simple rule to determine which language to use when it compiles your code. By default, the MSVC compiler treats all files that end in .c as C source code, and all files that end in .cpp as C++ source code. To force the compiler to treat all files as C++ non-dependent on file name extension, use the [/TC](reference/tc-tp-tc-tp-specify-source-file-type.md) compiler option.
+The C and C++ languages are similar, but not the same. The MSVC compiler uses a simple rule to determine which language to use when it compiles your code. By default, the MSVC compiler treats all files that end in .c as C source code, and all files that end in .cpp as C++ source code. To force the compiler to treat all files as C++ non-dependent on file name extension, use the [/TP](reference/tc-tp-tc-tp-specify-source-file-type.md) compiler option.
The MSVC compiler includes a C Runtime Library (CRT) that is compatible with the ISO C99 standard, but not strictly compliant. In most cases, portable code will compile and run as expected. Visual C++ doesn't support some of the CRT changes in ISO C11. Certain library functions and POSIX function names are deprecated by the MSVC compiler. The functions are supported, but the preferred names have changed. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md) and [Compiler Warning (level 3) C4996](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md).
diff --git a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md
index 66f15f0497..a62a7d9920 100644
--- a/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md
+++ b/docs/build/walkthrough-creating-and-using-a-dynamic-link-library-cpp.md
@@ -525,9 +525,7 @@ To fix this issue, you could copy the library file directly into your client app
`..\..\MathLibrary\$(IntDir)`
- If your DLL and client projects are in the same solution, the relative path should look like this:
-
- `..\MathLibrary\$(IntDir)`
+ If your DLL and client projects are in other locations, adjust the relative path to match.
![Add the library directory](media/mathclient-additional-library-directories.png "Add the library directory")
@@ -551,9 +549,7 @@ One way to avoid this issue is to copy the DLL to the directory that contains yo
`xcopy /y /d "..\..\MathLibrary\$(IntDir)MathLibrary.dll" "$(OutDir)"`
- If your DLL and client projects are in the same solution directory, then enter this command:
-
- `xcopy /y /d "..\MathLibrary\$(IntDir)MathLibrary.dll" "$(OutDir)"`
+ If your DLL and client projects are in other directories, change the relative path to the DLL to match.
![Add the post-build command](media/mathclient-post-build-command-line.png "Add the post-build command")
diff --git a/docs/build/why-floating-point-numbers-may-lose-precision.md b/docs/build/why-floating-point-numbers-may-lose-precision.md
index 41639fa9f0..951c1843c7 100644
--- a/docs/build/why-floating-point-numbers-may-lose-precision.md
+++ b/docs/build/why-floating-point-numbers-may-lose-precision.md
@@ -20,7 +20,7 @@ Binary representation of floating-point values affects the precision and accurac
## Example
-```
+```c
// Floating-point_number_precision.c
// Compile options needed: none. Value of c is printed with a decimal
// point precision of 10 and 6 (printf rounded value by default) to
diff --git a/docs/c-language/assignment-conversions.md b/docs/c-language/assignment-conversions.md
index d36804e684..88a2501257 100644
--- a/docs/c-language/assignment-conversions.md
+++ b/docs/c-language/assignment-conversions.md
@@ -1,25 +1,25 @@
---
-title: "Assignment Conversions"
+title: "Assignment conversions"
ms.date: "11/04/2016"
helpviewer_keywords: ["conversions, assignment", "assignment conversions"]
ms.assetid: 4ee01013-de32-4aae-b12e-0051d0cde927
---
-# Assignment Conversions
+# Assignment conversions
In assignment operations, the type of the value being assigned is converted to the type of the variable that receives the assignment. C allows conversions by assignment between integral and floating types, even if information is lost in the conversion. The conversion method used depends on the types involved in the assignment, as described in [Usual Arithmetic Conversions](../c-language/usual-arithmetic-conversions.md) and in the following sections:
-- [Conversions from Signed Integral Types](../c-language/conversions-from-signed-integral-types.md)
+- [Conversions from signed integral types](../c-language/conversions-from-signed-integral-types.md)
-- [Conversions from Unsigned Integral Types](../c-language/conversions-from-unsigned-integral-types.md)
+- [Conversions from unsigned integral types](../c-language/conversions-from-unsigned-integral-types.md)
-- [Conversions from Floating-Point Types](../c-language/conversions-from-floating-point-types.md)
+- [Conversions from floating-point types](../c-language/conversions-from-floating-point-types.md)
-- [Conversions to and from Pointer Types](../c-language/conversions-to-and-from-pointer-types.md)
+- [Conversions to and from pointer types](../c-language/conversions-to-and-from-pointer-types.md)
-- [Conversions from Other Types](../c-language/conversions-from-other-types.md)
+- [Conversions from other types](../c-language/conversions-from-other-types.md)
Type qualifiers do not affect the allowability of the conversion although a **const** l-value cannot be used on the left side of the assignment.
## See also
-[Type Conversions](../c-language/type-conversions-c.md)
+[Type conversions](../c-language/type-conversions-c.md)
diff --git a/docs/c-language/c-extended-storage-class-attributes.md b/docs/c-language/c-extended-storage-class-attributes.md
index 8685ad14e6..d03f05a1b4 100644
--- a/docs/c-language/c-extended-storage-class-attributes.md
+++ b/docs/c-language/c-extended-storage-class-attributes.md
@@ -17,13 +17,13 @@ The extended attribute syntax for specifying storage-class information uses the
## Syntax
*storage-class-specifier*:
- **__declspec (** *extended-decl-modifier-seq* **)** /\* Microsoft Specific \*/
+ **__declspec (** *extended-decl-modifier-seq* **)** /\* Microsoft-specific \*/
-*extended-decl-modifier-seq*: /\* Microsoft Specific \*/
+*extended-decl-modifier-seq*: /\* Microsoft-specific \*/
*extended-decl-modifier*opt
*extended-decl-modifier-seq* *extended-decl-modifier*
-*extended-decl-modifier*: /\* Microsoft Specific \*/
+*extended-decl-modifier*: /\* Microsoft-specific \*/
**thread**
**naked**
**dllimport**
diff --git a/docs/c-language/c-function-definitions.md b/docs/c-language/c-function-definitions.md
index 5b5543856f..22f5d8aec9 100644
--- a/docs/c-language/c-function-definitions.md
+++ b/docs/c-language/c-function-definitions.md
@@ -21,7 +21,7 @@ A function definition specifies the name of the function, the types and number o
*function-definition*:
*declaration-specifiers*opt *attribute-seq*opt *declarator* *declaration-list*opt *compound-statement*
-/\* *attribute-seq* is Microsoft Specific \*/
+/\* *attribute-seq* is Microsoft-specific \*/
Prototype parameters are:
diff --git a/docs/c-language/c-multiplicative-operators.md b/docs/c-language/c-multiplicative-operators.md
index aac3fc9f80..f49971f2a5 100644
--- a/docs/c-language/c-multiplicative-operators.md
+++ b/docs/c-language/c-multiplicative-operators.md
@@ -28,17 +28,15 @@ The C multiplicative operators are described below:
|Operator|Description|
|--------------|-----------------|
|\*|The multiplication operator causes its two operands to be multiplied.|
-|**/**|The division operator causes the first operand to be divided by the second. If two integer operands are divided and the result is not an integer, it is truncated according to the following rules:
- The result of division by 0 is undefined according to the ANSI C standard. The Microsoft C compiler generates an error at compile time or run time.
- If both operands are positive or unsigned, the result is truncated toward 0.
- If either operand is negative, whether the result of the operation is the largest integer less than or equal to the algebraic quotient or is the smallest integer greater than or equal to the algebraic quotient is implementation defined. (See the Microsoft Specific section below.)|
-|**%**|The result of the remainder operator is the remainder when the first operand is divided by the second. When the division is inexact, the result is determined by the following rules:
- If the right operand is zero, the result is undefined.
- If both operands are positive or unsigned, the result is positive.
- If either operand is negative and the result is inexact, the result is implementation defined. (See the Microsoft Specific section below.)|
+|**/**|The division operator causes the first operand to be divided by the second. If two integer operands are divided and the result is not an integer, it is truncated according to the following rules:
- The result of division by 0 is undefined according to the ANSI C standard. The Microsoft C compiler generates an error at compile time or run time.
- If both operands are positive or unsigned, the result is truncated toward 0.
- If either operand is negative, whether the result of the operation is the largest integer less than or equal to the algebraic quotient or is the smallest integer greater than or equal to the algebraic quotient is implementation defined. (See the Microsoft-specific section below.)|
+|**%**|The result of the remainder operator is the remainder when the first operand is divided by the second. When the division is inexact, the result is determined by the following rules:
- If the right operand is zero, the result is undefined.
- If both operands are positive or unsigned, the result is positive.
- If either operand is negative and the result is inexact, the result is implementation defined. (See the Microsoft-specific section below.)|
-**Microsoft Specific**
+### Microsoft-specific
In division where either operand is negative, the direction of truncation is toward 0.
If either operation is negative in division with the remainder operator, the result has the same sign as the dividend (the first operand in the expression).
-**END Microsoft Specific**
-
## Examples
The declarations shown below are used for the following examples:
diff --git a/docs/c-language/c-storage-classes.md b/docs/c-language/c-storage-classes.md
index a586c7126b..0bf995d0f7 100644
--- a/docs/c-language/c-storage-classes.md
+++ b/docs/c-language/c-storage-classes.md
@@ -20,7 +20,7 @@ C provides the following storage-class specifiers:
**static**
**extern**
**typedef**
- **__declspec (** *extended-decl-modifier-seq* **)** /\* Microsoft Specific \*/
+ **__declspec (** *extended-decl-modifier-seq* **)** /\* Microsoft-specific \*/
Except for `__declspec`, you can use only one *storage-class-specifier* in the *declaration-specifier* in a declaration. If no storage-class specification is made, declarations within a block create automatic objects.
diff --git a/docs/c-language/conversions-from-floating-point-types.md b/docs/c-language/conversions-from-floating-point-types.md
index 16cd60dbb1..6ffd261cd0 100644
--- a/docs/c-language/conversions-from-floating-point-types.md
+++ b/docs/c-language/conversions-from-floating-point-types.md
@@ -1,50 +1,65 @@
---
-title: "Conversions from Floating-Point Types"
-ms.date: "01/29/2018"
+title: "Conversions from floating-point types"
+ms.date: "10/02/2019"
helpviewer_keywords: ["converting floating point", "floating-point conversion"]
ms.assetid: 96804c8e-fa3b-4742-9006-0082ed9e57f2
---
# Conversions from floating-point types
-A **float** value converted to a **double** or **long double**, or a **double** converted to a **long double**, undergoes no change in value. A **double** value converted to a **float** value is represented exactly, if possible. Precision may be lost if the value cannot be represented exactly. If the result is out of range, the behavior is undefined. See [Limits on Floating-Point Constants](../c-language/limits-on-floating-point-constants.md) for the range of floating-point types.
+A floating-point value that's converted to another floating-point type undergoes no change in value if the original value is representable exactly in the result type. If the original value is numeric but isn't representable exactly, the result is either the next greater or next lower representable value. See [Limits on floating-point constants](../c-language/limits-on-floating-point-constants.md) for the range of floating-point types.
-A floating value is converted to an integral value by first converting to a **long**, then from the **long** value to the specific integral value. The decimal portion of the floating value is discarded in the conversion to a **long**. If the result is still too large to fit into a **long**, the result of the conversion is undefined.
+A floating-point value that is converted to an integral type is first truncated by discarding any fractional value. If this truncated value is representable in the result type, the result must be that value. When it isn't representable, the result value is undefined.
**Microsoft Specific**
-When converting a **double** or **long double** floating-point number to a smaller floating-point number, the value of the floating-point variable is truncated toward zero when an underflow occurs. An overflow causes a run-time error. Note that the Microsoft C compiler maps **long double** to type **double**.
+Microsoft compilers use IEEE-754 binary32 representation for **float** values, and binary64 representation for **long double** and **double**. Since **long double** and **double** use the same representation, they have the same range and precision.
+
+When the compiler converts a **double** or **long double** floating-point number to a **float**, it rounds the result according to the floating-point environment controls, which default to "round to nearest, ties to even." If a numeric value is too high or too low to be represented as a numeric **float** value, the conversion result is positive or negative infinity according to the sign of the original value, and an overflow exception is raised, if enabled.
+
+When converting to integer types, the result of a conversion to a type smaller than **long** is the result of converting the value to **long**, and then converting to the result type.
+
+For conversion to integer types at least as large as **long**, a conversion of a value that is too high or too low to represent in the result type may return any of the following values:
+
+- The result may be a *sentinel value*, which is the representable value farthest from zero. For signed types, it's the lowest representable value (0x800...0). For unsigned types, it's the highest representable value (0xFF...F).
+
+- The result may be *saturated*, where values too high to represent are converted to the highest representable value, and values too low to represent are converted to the lowest representable value. One of these two values is also used as the sentinel value.
+
+- For conversion to **unsigned long** or **unsigned long long**, the result of converting an out-of-range value may be some value other than the highest or lowest representable value. Whether the result is a sentinel or saturated value or not depends on the compiler options and target architecture. Future compiler releases may return a saturated or sentinel value instead.
**END Microsoft Specific**
The following table summarizes conversions from floating types.
-## Conversions from floating-point types
+## Table of conversions from floating-point types
|From|To|Method|
|----------|--------|------------|
|**float**|**char**|Convert to **long**; convert **long** to **char**|
|**float**|**short**|Convert to **long**; convert **long** to **short**|
+|**float**|**int**|Truncate at decimal point. If result is too large to be represented as **int**, result is undefined.|
|**float**|**long**|Truncate at decimal point. If result is too large to be represented as **long**, result is undefined.|
+|**float**|**long long**|Truncate at decimal point. If result is too large to be represented as **long long**, result is undefined.|
+|**float**|**unsigned char**|Convert to **long**; convert **long** to **unsigned char**|
|**float**|**unsigned short**|Convert to **long**; convert **long** to **unsigned short**|
-|**float**|**unsigned long**|Convert to **long**; convert **long** to **unsigned long**|
-|**float**|**double**|Change internal representation|
-|**float**|**long double**|Change internal representation|
+|**float**|**unsigned**|Truncate at decimal point. If result is too large to be represented as **unsigned**, result is undefined.|
+|**float**|**unsigned long**|Truncate at decimal point. If result is too large to be represented as **unsigned long**, result is undefined.|
+|**float**|**unsigned long long**|Truncate at decimal point. If result is too large to be represented as **unsigned long long**, result is undefined.|
+|**float**|**double**|Represent as a **double**.|
+|**float**|**long double**|Represent as a **long double**.|
|**double**|**char**|Convert to **float**; convert **float** to **char**|
|**double**|**short**|Convert to **float**; convert **float** to **short**|
+|**double**|**int**|Truncate at decimal point. If result is too large to be represented as **int**, result is undefined.|
|**double**|**long**|Truncate at decimal point. If result is too large to be represented as **long**, result is undefined.|
+|**double**|**unsigned char**|Convert to **long**; convert **long** to **unsigned char**|
|**double**|**unsigned short**|Convert to **long**; convert **long** to **unsigned short**|
-|**double**|**unsigned long**|Convert to **long**; convert **long** to **unsigned long**|
-|**double**|**float**|Represent as a **float**. If **double** value cannot be represented exactly as **float**, loss of precision occurs. If value is too large to be represented as **float**, the result is undefined.|
-|**long double**|**char**|Convert to **float**; convert **float** to **char**|
-|**long double**|**short**|Convert to **float**; convert **float** to **short**|
-|**long double**|**long**|Truncate at decimal point. If result is too large to be represented as **long**, result is undefined.|
-|**long double**|**unsigned short**|Convert to **long**; convert **long** to **unsigned short**|
-|**long double**|**unsigned long**|Convert to **long**; convert **long** to **unsigned long**|
-|**long double**|**float**|Represent as a **float**. If **double** value cannot be represented exactly as **float**, loss of precision occurs. If value is too large to be represented as **float**, the result is undefined.|
-|**long double**|**double**|The **long double** value is treated as **double**.|
-
-Conversions from **float**, **double**, or **long double** values to **unsigned long** are not accurate if the value being converted is larger than the maximum positive **long** value.
+|**double**|**unsigned**|Truncate at decimal point. If result is too large to be represented as **unsigned**, result is undefined.|
+|**double**|**unsigned long**|Truncate at decimal point. If result is too large to be represented as **unsigned long**, result is undefined.|
+|**double**|**unsigned long long**|Truncate at decimal point. If result is too large to be represented as **unsigned long long**, result is undefined.|
+|**double**|**float**|Represent as a **float**. If **double** value can't be represented exactly as **float**, loss of precision occurs. If value is too large to be represented as **float**, the result is undefined.|
+|**double**|**long double**|The **long double** value is treated as **double**.|
+
+Conversions from **long double** follow the same method as conversions from **double**.
## See also
-[Assignment Conversions](../c-language/assignment-conversions.md)
+[Assignment conversions](../c-language/assignment-conversions.md)
diff --git a/docs/c-language/conversions-from-signed-integral-types.md b/docs/c-language/conversions-from-signed-integral-types.md
index ca82b45c2e..5d2a34cd29 100644
--- a/docs/c-language/conversions-from-signed-integral-types.md
+++ b/docs/c-language/conversions-from-signed-integral-types.md
@@ -1,12 +1,14 @@
---
-title: "Conversions from Signed Integral Types"
-ms.date: "11/04/2016"
+title: "Conversions from signed integral types"
+ms.date: "10/02/2019"
helpviewer_keywords: ["integral conversions, from signed", "integers, converting", "conversions [C++], integral", "data type conversion [C++], signed and unsigned integers", "type conversion [C++], signed and unsigned integers"]
ms.assetid: 5eea32f8-8b14-413d-acac-c063b3d118d7
---
-# Conversions from Signed Integral Types
+# Conversions from signed integral types
-When a signed integer is converted to an unsigned integer with equal or greater size and the value of the signed integer is not negative, the value is unchanged. The conversion is made by sign-extending the signed integer. A signed integer is converted to a shorter signed integer by truncating the high-order bits. The result is interpreted as an unsigned value, as shown in this example.
+When a signed integer is converted to an integer or a floating-point type, if the original value is representable in the result type, the value is unchanged.
+
+When a signed integer is converted to an integer of greater size, the value is sign-extended. When converted to an integer of smaller size, the high-order bits are truncated. The result is interpreted using the result type, as shown in this example:
```C
int i = -3;
@@ -16,47 +18,65 @@ u = i;
printf_s( "%hu\n", u ); // Prints 65533
```
-No information is lost when a signed integer is converted to a floating value, except that some precision may be lost when a **long int** or **unsigned long int** value is converted to a **float** value.
+When converting a signed integer to a floating-point type, if the original value isn't representable exactly in the result type, the result is the next higher or lower representable value.
+
+For information about the sizes of integral and floating-point types, see [Storage of basic types](../c-language/storage-of-basic-types.md).
+
+The following table summarizes conversions from signed integral types. It assumes the **char** type is signed by default. If you use a compile-time option to change the default for the **char** type to unsigned, the conversions given in the [Conversions from unsigned integral types](../c-language/conversions-from-unsigned-integral-types.md) table for the **unsigned char** type apply, instead of the conversions in this table.
+
+**Microsoft Specific**
+
+In the Microsoft compiler, **int** and **long** are distinct but equivalent types. Conversion of an **int** value proceeds in the same way as conversion of a **long**.
-The following table summarizes conversions from signed integral types. This table assumes that the **char** type is signed by default. If you use a compile-time option to change the default for the **char** type to unsigned, the conversions given in the [Conversions from Unsigned Integral Types](../c-language/conversions-from-unsigned-integral-types.md) table for the **unsigned char** type apply instead of the conversions in the following table, Conversions from Signed Integral Types.
+**END Microsoft Specific**
-### Conversions from Signed Integral Types
+## Table of conversions from signed integral types
|From|To|Method|
|----------|--------|------------|
-|**char**1|**short**|Sign-extend|
+|**char**1|**short**|Sign-extend|
|**char**|**long**|Sign-extend|
+|**char**|**long long**|Sign-extend|
|**char**|**unsigned char**|Preserve pattern; high-order bit loses function as sign bit|
|**char**|**unsigned short**|Sign-extend to **short**; convert **short** to **unsigned short**|
|**char**|**unsigned long**|Sign-extend to **long**; convert **long** to **unsigned long**|
+|**char**|**unsigned long long**|Sign-extend to **long long**; convert **long long** to **unsigned long long**|
|**char**|**float**|Sign-extend to **long**; convert **long** to **float**|
|**char**|**double**|Sign-extend to **long**; convert **long** to **double**|
|**char**|**long double**|Sign-extend to **long**; convert **long** to **double**|
|**short**|**char**|Preserve low-order byte|
|**short**|**long**|Sign-extend|
+|**short**|**long long**|Sign-extend|
|**short**|**unsigned char**|Preserve low-order byte|
|**short**|**unsigned short**|Preserve bit pattern; high-order bit loses function as sign bit|
|**short**|**unsigned long**|Sign-extend to **long**; convert **long** to **unsigned long**|
+|**short**|**unsigned long long**|Sign-extend to **long long**; convert **long long** to **unsigned long long**|
|**short**|**float**|Sign-extend to **long**; convert **long** to **float**|
|**short**|**double**|Sign-extend to **long**; convert **long** to **double**|
|**short**|**long double**|Sign-extend to **long**; convert **long** to **double**|
|**long**|**char**|Preserve low-order byte|
|**long**|**short**|Preserve low-order word|
+|**long**|**long long**|Sign-extend|
|**long**|**unsigned char**|Preserve low-order byte|
|**long**|**unsigned short**|Preserve low-order word|
|**long**|**unsigned long**|Preserve bit pattern; high-order bit loses function as sign bit|
-|**long**|**float**|Represent as **float**. If **long** cannot be represented exactly, some precision is lost.|
-|**long**|**double**|Represent as **double**. If **long** cannot be represented exactly as a **double**, some precision is lost.|
-|**long**|**long double**|Represent as **double**. If **long** cannot be represented exactly as a **double**, some precision is lost.|
-
-1. All **char** entries assume that the **char** type is signed by default.
-
-**Microsoft Specific**
-
-For the Microsoft 32-bit C compiler, an integer is equivalent to a **long**. Conversion of an **int** value proceeds the same as for a **long**.
+|**long**|**unsigned long long**|Sign-extend to **long long**; convert **long long** to **unsigned long long**|
+|**long**|**float**|Represent as **float**. If **long** can't be represented exactly, some precision is lost.|
+|**long**|**double**|Represent as **double**. If **long** can't be represented exactly as a **double**, some precision is lost.|
+|**long**|**long double**|Represent as **double**. If **long** can't be represented exactly as a **double**, some precision is lost.|
+|**long long**|**char**|Preserve low-order byte|
+|**long long**|**short**|Preserve low-order word|
+|**long long**|**long**|Preserve low-order dword|
+|**long long**|**unsigned char**|Preserve low-order byte|
+|**long long**|**unsigned short**|Preserve low-order word|
+|**long long**|**unsigned long**|Preserve low-order dword|
+|**long long**|**unsigned long long**|Preserve bit pattern; high-order bit loses function as sign bit|
+|**long long**|**float**|Represent as **float**. If **long long** can't be represented exactly, some precision is lost.|
+|**long long**|**double**|Represent as **double**. If **long long** can't be represented exactly as a **double**, some precision is lost.|
+|**long long**|**long double**|Represent as **double**. If **long long** can't be represented exactly as a **double**, some precision is lost.|
-**END Microsoft Specific**
+1 All **char** entries assume that the **char** type is signed by default.
## See also
-[Assignment Conversions](../c-language/assignment-conversions.md)
+[Assignment conversions](../c-language/assignment-conversions.md)
diff --git a/docs/c-language/conversions-from-unsigned-integral-types.md b/docs/c-language/conversions-from-unsigned-integral-types.md
index 0094ff270d..82ce85d135 100644
--- a/docs/c-language/conversions-from-unsigned-integral-types.md
+++ b/docs/c-language/conversions-from-unsigned-integral-types.md
@@ -1,64 +1,80 @@
---
-title: "Conversions from Unsigned Integral Types"
-ms.date: "03/27/2019"
+title: "Conversions from unsigned integral types"
+ms.date: "10/02/2019"
helpviewer_keywords: ["integers, converting", "type casts, involving integers", "data type conversion [C++], signed and unsigned integers", "type conversion [C++], signed and unsigned integers", "integral conversions, from unsigned"]
ms.assetid: 60fb7e10-bff9-4a13-8a48-e19f25a36a02
---
-# Conversions from Unsigned Integral Types
+# Conversions from unsigned integral types
-An unsigned integer is converted to a shorter unsigned or signed integer by truncating the high-order bits, or to a longer unsigned or signed integer by zero-extending. For more information, see the [Conversions from unsigned integral types table](#conversions-from-unsigned-integral-types-table).
+When an unsigned integer is converted to an integer or floating-point type, if the original value is representable in the result type the value is unchanged.
-When the value with integral type is demoted to a signed integer with smaller size, or an unsigned integer is converted to its corresponding signed integer, the value is unchanged if it can be represented in the new type. However, the value it represents changes if the sign bit is set, as in the following example.
+When converting an unsigned integer to an integer of greater size, the value is zero-extended. When converting to an integer of smaller size, the high-order bits are truncated. The result is interpreted using the result type, as shown in this example.
```C
-int j;
-unsigned short k = 65533;
+unsigned k = 65533;
+short j;
j = k;
printf_s( "%hd\n", j ); // Prints -3
```
-If it cannot be represented, the result is implementation-defined. See [Type-Cast Conversions](../c-language/type-cast-conversions.md) for information on the Microsoft C compiler's handling of demotion of integers. The same behavior results from integer conversion or from type casting the integer.
+When converting an unsigned integer to a floating-point type, if the original value can't be represented exactly in the result type, the result is the next higher or lower representable value.
-Unsigned values are converted in a way that preserves their value and is not representable directly in C. The only exception is a conversion from **unsigned long** to **float**, which loses at most the low-order bits. Otherwise, value is preserved, signed or unsigned. When a value of integral type is converted to floating, and the value is outside the range representable, the result is undefined. (See [Storage of Basic Types](../c-language/storage-of-basic-types.md) for information about the range for integral and floating-point types.)
+See [Storage of basic types](../c-language/storage-of-basic-types.md) for information about the sizes of integral and floating-point types.
+
+**Microsoft Specific**
+
+In the Microsoft compiler, **unsigned** (or **unsigned int**) and **unsigned long** are distinct but equivalent types. Conversion of an **unsigned int** value proceeds in the same way as conversion of an **unsigned long**.
+
+**END Microsoft Specific**
The following table summarizes conversions from unsigned integral types.
-## Conversions from unsigned integral types table
+## Table of conversions from unsigned integral types
|From|To|Method|
|----------|--------|------------|
|**unsigned char**|**char**|Preserve bit pattern; high-order bit becomes sign bit|
|**unsigned char**|**short**|Zero-extend|
|**unsigned char**|**long**|Zero-extend|
+|**unsigned char**|**long long**|Zero-extend|
|**unsigned char**|**unsigned short**|Zero-extend|
|**unsigned char**|**unsigned long**|Zero-extend|
+|**unsigned char**|**unsigned long long**|Zero-extend|
|**unsigned char**|**float**|Convert to **long**; convert **long** to **float**|
|**unsigned char**|**double**|Convert to **long**; convert **long** to **double**|
|**unsigned char**|**long double**|Convert to **long**; convert **long** to **double**|
|**unsigned short**|**char**|Preserve low-order byte|
|**unsigned short**|**short**|Preserve bit pattern; high-order bit becomes sign bit|
|**unsigned short**|**long**|Zero-extend|
+|**unsigned short**|**long long**|Zero-extend|
|**unsigned short**|**unsigned char**|Preserve low-order byte|
|**unsigned short**|**unsigned long**|Zero-extend|
+|**unsigned short**|**unsigned long long**|Zero-extend|
|**unsigned short**|**float**|Convert to **long**; convert **long** to **float**|
|**unsigned short**|**double**|Convert to **long**; convert **long** to **double**|
|**unsigned short**|**long double**|Convert to **long**; convert **long** to **double**|
|**unsigned long**|**char**|Preserve low-order byte|
|**unsigned long**|**short**|Preserve low-order word|
|**unsigned long**|**long**|Preserve bit pattern; high-order bit becomes sign bit|
+|**unsigned long**|**long long**|Zero-extend|
|**unsigned long**|**unsigned char**|Preserve low-order byte|
|**unsigned long**|**unsigned short**|Preserve low-order word|
+|**unsigned long**|**unsigned long long**|Zero-extend|
|**unsigned long**|**float**|Convert to **long**; convert **long** to **float**|
|**unsigned long**|**double**|Convert directly to **double**|
|**unsigned long**|**long double**|Convert to **long**; convert **long** to **double**|
-
-**Microsoft Specific**
-
-For the Microsoft C compiler, the **unsigned int** type is equivalent to the **unsigned long** type. Conversion of an **unsigned int** value proceeds in the same way as conversion of an **unsigned long**. Conversions from **unsigned long** values to **float** are not accurate if the value being converted is larger than the maximum positive signed **long** value.
-
-**END Microsoft Specific**
+|**unsigned long long**|**char**|Preserve low-order byte|
+|**unsigned long long**|**short**|Preserve low-order word|
+|**unsigned long long**|**long**|Preserve low-order dword|
+|**unsigned long long**|**long long**|Preserve bit pattern; high-order bit becomes sign bit|
+|**unsigned long long**|**unsigned char**|Preserve low-order byte|
+|**unsigned long long**|**unsigned short**|Preserve low-order word|
+|**unsigned long long**|**unsigned long**|Preserve low-order dword|
+|**unsigned long long**|**float**|Convert to **long**; convert **long** to **float**|
+|**unsigned long long**|**double**|Convert directly to **double**|
+|**unsigned long long**|**long double**|Convert to **long**; convert **long** to **double**|
## See also
-[Assignment Conversions](../c-language/assignment-conversions.md)
+[Assignment conversions](../c-language/assignment-conversions.md)
diff --git a/docs/c-language/cpp-integer-limits.md b/docs/c-language/cpp-integer-limits.md
index e1c02be9a1..c400b4fad1 100644
--- a/docs/c-language/cpp-integer-limits.md
+++ b/docs/c-language/cpp-integer-limits.md
@@ -1,14 +1,16 @@
---
-title: "C++ Integer Limits"
-ms.date: "01/29/2018"
+title: "C and C++ Integer Limits"
+ms.date: "10/21/2019"
helpviewer_keywords: ["limits, integer", "limits, integer constants", "integer limits"]
ms.assetid: 0c23cbd6-29fb-4d9c-b689-5984e19748de
---
-# C++ Integer Limits
+# C and C++ Integer Limits
**Microsoft Specific**
-The limits for integer types are listed in the following table. These limits are defined in the standard header file LIMITS.H. Microsoft C also permits the declaration of sized integer variables, which are integral types of size 8-, 16-, or 32-bits. For more information on sized integers, see [Sized Integer Types](../c-language/c-sized-integer-types.md).
+The limits for integer types in C and C++ are listed in the following table. These limits are defined in the C standard header file ``. The C++ Standard Library header `` includes ``, which includes ``.
+
+Microsoft C also permits the declaration of sized integer variables, which are integral types of size 8-, 16-, 32- or 64-bits. For more information on sized integers in C, see [Sized Integer Types](../c-language/c-sized-integer-types.md).
## Limits on Integer Constants
@@ -30,6 +32,9 @@ The limits for integer types are listed in the following table. These limits are
|**LONG_MIN**|Minimum value for a variable of type **long**.|-2147483647 - 1|
|**LONG_MAX**|Maximum value for a variable of type **long**.|2147483647|
|**ULONG_MAX**|Maximum value for a variable of type **unsigned long**.|4294967295 (0xffffffff)|
+|**LLONG_MIN**|Minimum value for a variable of type **long long**.|-9,223,372,036,854,775,807 - 1|
+|**LLONG_MAX**|Maximum value for a variable of type **long long**.|9,223,372,036,854,775,807|
+|**ULLONG_MAX**|Maximum value for a variable of type **unsigned long long**.|18,446,744,073,709,551,615 (0xffffffffffffffff)|
If a value exceeds the largest integer representation, the Microsoft compiler generates an error.
diff --git a/docs/c-language/elements-of-c.md b/docs/c-language/elements-of-c.md
index 06f5ac8ec4..0f8d218748 100644
--- a/docs/c-language/elements-of-c.md
+++ b/docs/c-language/elements-of-c.md
@@ -26,7 +26,7 @@ The following topics are discussed:
- [Punctuation and special characters](../c-language/punctuation-and-special-characters.md)
-The section also includes reference tables for [Trigraphs](../c-language/trigraphs.md), [Limits on Floating-Point Constants](../c-language/limits-on-floating-point-constants.md), [C++ Integer Limits](../c-language/cpp-integer-limits.md), and [Escape Sequences](../c-language/escape-sequences.md).
+The section also includes reference tables for [Trigraphs](../c-language/trigraphs.md), [Limits on Floating-Point Constants](../c-language/limits-on-floating-point-constants.md), [C and C++ Integer Limits](../c-language/cpp-integer-limits.md), and [Escape Sequences](../c-language/escape-sequences.md).
Operators are symbols (both single characters and character combinations) that specify how values are to be manipulated. Each symbol is interpreted as a single unit, called a token. For more information, see [Operators](../c-language/c-operators.md).
diff --git a/docs/c-language/function-body.md b/docs/c-language/function-body.md
index 6fa6895279..2bd99a1a78 100644
--- a/docs/c-language/function-body.md
+++ b/docs/c-language/function-body.md
@@ -13,7 +13,7 @@ A *function body* is a compound statement containing the statements that specify
*function-definition*:
*declaration-specifiers*opt *attribute-seq*opt *declarator* *declaration-list*opt *compound-statement*
-/\* *attribute-seq* is Microsoft Specific \*/
+/\* *attribute-seq* is Microsoft-specific \*/
*compound-statement*: /\* The function body \*/
**{** *declaration-list*opt *statement-list*opt **}**
diff --git a/docs/c-language/function-prototypes.md b/docs/c-language/function-prototypes.md
index a2a3dc3e95..54c8afe467 100644
--- a/docs/c-language/function-prototypes.md
+++ b/docs/c-language/function-prototypes.md
@@ -13,7 +13,7 @@ A function declaration precedes the function definition and specifies the name,
*declaration*:
*declaration-specifiers* *attribute-seq*opt *init-declarator-list*opt **;**
-/\* *attribute-seq*opt is Microsoft Specific \*/
+/\* *attribute-seq*opt is Microsoft-specific \*/
*declaration-specifiers*:
*storage-class-specifier* *declaration-specifiers*opt
diff --git a/docs/c-language/goto-and-labeled-statements-c.md b/docs/c-language/goto-and-labeled-statements-c.md
index f6ba3a0f2b..d0355ce2a5 100644
--- a/docs/c-language/goto-and-labeled-statements-c.md
+++ b/docs/c-language/goto-and-labeled-statements-c.md
@@ -29,7 +29,7 @@ It is good programming style to use the **break**, **continue**, and `return` st
This example demonstrates the `goto` statement:
-```
+```c
// goto.c
#include
diff --git a/docs/c-language/main-function-and-program-execution.md b/docs/c-language/main-function-and-program-execution.md
index acc29a7479..03b2241ee4 100644
--- a/docs/c-language/main-function-and-program-execution.md
+++ b/docs/c-language/main-function-and-program-execution.md
@@ -26,5 +26,5 @@ See [Using wmain](../c-language/using-wmain.md) for a description of the wide-ch
## See also
-[main: Program Startup](../cpp/main-program-startup.md)
+[main function and command-line arguments (C++)](../cpp/main-function-command-line-args.md)\
[Parsing C Command-Line Arguments](../c-language/parsing-c-command-line-arguments.md)
diff --git a/docs/c-language/one-dimensional-arrays.md b/docs/c-language/one-dimensional-arrays.md
index 7445edaf0d..f005a6dc06 100644
--- a/docs/c-language/one-dimensional-arrays.md
+++ b/docs/c-language/one-dimensional-arrays.md
@@ -14,7 +14,7 @@ postfix-expression [ expression ]
Usually, the value represented by *postfix-expression* is a pointer value, such as an array identifier, and *expression* is an integral value. However, all that is required syntactically is that one of the expressions be of pointer type and the other be of integral type. Thus the integral value could be in the *postfix-expression* position and the pointer value could be in the brackets in the *expression*, or "subscript," position. For example, this code is legal:
-```
+```c
// one_dimensional_arrays.c
int sum, *ptr, a[10];
int main() {
diff --git a/docs/c-language/overview-of-c-statements.md b/docs/c-language/overview-of-c-statements.md
index f9746f94fd..081766d34e 100644
--- a/docs/c-language/overview-of-c-statements.md
+++ b/docs/c-language/overview-of-c-statements.md
@@ -23,9 +23,9 @@ C statements consist of tokens, expressions, and other statements. A statement t
[jump-statement](../c-language/break-statement-c.md)
-[try-except-statement](../c-language/try-except-statement-c.md)
+[try-except-statement](../c-language/try-except-statement-c.md) /* Microsoft-specific \*/
-/* Microsoft Specific \*/[try-finally-statement](../c-language/try-finally-statement-c.md) /\* Microsoft Specific \*/
+[try-finally-statement](../c-language/try-finally-statement-c.md) /\* Microsoft-specific \*/
Frequently the statement body is a "compound statement." A compound statement consists of other statements that can include keywords. The compound statement is delimited by braces (**{ }**). All other C statements end with a semicolon (**;**). The semicolon is a statement terminator.
diff --git a/docs/c-language/overview-of-declarations.md b/docs/c-language/overview-of-declarations.md
index 16d48591e2..f2675108cb 100644
--- a/docs/c-language/overview-of-declarations.md
+++ b/docs/c-language/overview-of-declarations.md
@@ -13,7 +13,7 @@ A "declaration" specifies the interpretation and attributes of a set of identifi
*declaration*:
*declaration-specifiers* *attribute-seq*opt *init-declarator-list*opt**;**
-/\* *attribute-seq*opt is Microsoft specific */
+/\* *attribute-seq*opt is Microsoft-specific */
*declaration-specifiers*:
*storage-class-specifier* *declaration-specifiers*opt
diff --git a/docs/c-language/parameters.md b/docs/c-language/parameters.md
index 4bcb37b7ca..6208a30edc 100644
--- a/docs/c-language/parameters.md
+++ b/docs/c-language/parameters.md
@@ -13,7 +13,7 @@ Arguments are names of values passed to a function by a function call. Parameter
*function-definition*:
*declaration-specifiers*opt *attribute-seq*opt *declarator* *declaration-list*opt *compound-statement*
-/\* *attribute-seq* is Microsoft Specific \*/
+/\* *attribute-seq* is Microsoft-specific \*/
*declarator*:
*pointer*opt *direct-declarator*
diff --git a/docs/c-language/parsing-c-command-line-arguments.md b/docs/c-language/parsing-c-command-line-arguments.md
index c4ec0ee9a9..d5ee2f12f9 100644
--- a/docs/c-language/parsing-c-command-line-arguments.md
+++ b/docs/c-language/parsing-c-command-line-arguments.md
@@ -36,7 +36,7 @@ This list illustrates the rules above by showing the interpreted result passed t
### Code
-```
+```c
// Parsing_C_Commandline_args.c
// ARGS.C illustrates the following variables used for accessing
// command-line arguments and environment variables:
diff --git a/docs/c-language/pragmas.md b/docs/c-language/pragmas.md
index cf85a7c9a7..fd7edf3f7d 100644
--- a/docs/c-language/pragmas.md
+++ b/docs/c-language/pragmas.md
@@ -1,6 +1,6 @@
---
title: "Pragmas"
-ms.date: "11/04/2016"
+ms.date: "11/11/2019"
helpviewer_keywords: ["pragmas, about pragmas"]
ms.assetid: 3ce8aced-53ee-4524-87d0-f998d6977ff5
---
@@ -12,11 +12,11 @@ The following [C Pragmas](../c-language/c-pragmas.md) are defined for the Micros
|||||
|-|-|-|-|
-|**alloc_text**|**data_seg**|**include_alias**|`setlocale`|
-|**auto_inline**|**function**|**intrinsic**|**warning**|
-|**check_stack**|**hdrstop**|**message**||
-|**code_seg**|**inline_depth**|**optimize**||
-|**comment**|**inline_recursion**|`pack`||
+|[alloc_text](../preprocessor/alloc-text.md)|[data_seg](../preprocessor/data-seg.md)|[include_alias](../preprocessor/include-alias.md)|[setlocale](../preprocessor/setlocale.md)|
+|[auto_inline](../preprocessor/auto-inline.md)|[function](../preprocessor/function-c-cpp.md)|[intrinsic](../preprocessor/intrinsic.md)|[warning](../preprocessor/warning.md)|
+|[check_stack](../preprocessor/check-stack.md)|[hdrstop](../preprocessor/hdrstop.md)|[message](../preprocessor/message.md)||
+|[code_seg](../preprocessor/code-seg.md)|[inline_depth](../preprocessor/inline-depth.md)|[optimize](../preprocessor/optimize.md)||
+|[comment](../preprocessor/comment-c-cpp.md)|[inline_recursion](../preprocessor/inline-recursion.md)|[pack](../preprocessor/pack.md)||
## See also
diff --git a/docs/c-language/return-type.md b/docs/c-language/return-type.md
index 9441f156df..22267cef01 100644
--- a/docs/c-language/return-type.md
+++ b/docs/c-language/return-type.md
@@ -13,7 +13,7 @@ The return type of a function establishes the size and type of the value returne
*function-definition*:
*declaration-specifiers*opt *attribute-seq*opt *declarator* *declaration-list*opt *compound-statement*
-/\* *attribute-seq* is Microsoft Specific \*/
+/\* *attribute-seq* is Microsoft-specific \*/
*declaration-specifiers*:
*storage-class-specifier* *declaration-specifiers*opt
@@ -25,10 +25,10 @@ The return type of a function establishes the size and type of the value returne
**char**
**short**
**int**
- **__int8** /\* Microsoft Specific \*/
- **__int16** /\* Microsoft Specific \*/
- **__int32** /\* Microsoft Specific \*/
- **__int64** /\* Microsoft Specific \*/
+ **__int8** /\* Microsoft-specific \*/
+ **__int16** /\* Microsoft-specific \*/
+ **__int32** /\* Microsoft-specific \*/
+ **__int64** /\* Microsoft-specific \*/
**long**
**float**
**double**
diff --git a/docs/c-language/storage-class.md b/docs/c-language/storage-class.md
index d6a355b9b0..a468c0b54c 100644
--- a/docs/c-language/storage-class.md
+++ b/docs/c-language/storage-class.md
@@ -13,7 +13,7 @@ The storage-class specifier in a function definition gives the function either `
*function-definition*:
*declaration-specifiers*opt *attribute-seq*opt *declarator* *declaration-list*opt *compound-statement*
-/\* *attribute-seq* is Microsoft Specific \*/
+/\* *attribute-seq* is Microsoft-specific \*/
*declaration-specifiers*:
*storage-class-specifier* *declaration-specifiers*opt
diff --git a/docs/c-language/storage-of-basic-types.md b/docs/c-language/storage-of-basic-types.md
index 626133a5e8..327db234aa 100644
--- a/docs/c-language/storage-of-basic-types.md
+++ b/docs/c-language/storage-of-basic-types.md
@@ -1,27 +1,28 @@
---
-title: "Storage of Basic Types"
-ms.date: "11/04/2016"
+title: "Storage of basic types"
+ms.date: "10/02/2019"
helpviewer_keywords: ["specifiers [C++], type", "integral types, storage", "storage [C++], types", "floating-point numbers, storage", "type specifiers [C++], sizes", "arithmetic operations [C++], types", "int data type", "short data type", "signed types [C++], storage", "long double keyword [C], storage", "long keyword [C]", "double data type, storage", "types [C], arithmetic", "integral types", "data types [C], specifiers", "storing types [C++]", "unsigned types [C++], storage", "data types [C], storage"]
ms.assetid: bd1f33c1-c6b9-4558-8a72-afb21aef3318
---
-# Storage of Basic Types
+# Storage of basic types
The following table summarizes the storage associated with each basic type.
-### Sizes of Fundamental Types
+## Sizes of fundamental types
|Type|Storage|
|----------|-------------|
-|`char`, `unsigned char`, **signed char**|1 byte|
+|**char**, **unsigned char**, **signed char**|1 byte|
|**short**, **unsigned short**|2 bytes|
-|`int`, `unsigned int`|4 bytes|
-|**long**, `unsigned long`|4 bytes|
+|**int**, **unsigned int**|4 bytes|
+|**long**, **unsigned long**|4 bytes|
+|**long long**, **unsigned long long**|8 bytes|
|**float**|4 bytes|
|**double**|8 bytes|
-|`long double`|8 bytes|
+|**long double**|8 bytes|
-The C data types fall into general categories. The "integral types" include `char`, `int`, **short**, **long**, **signed**, `unsigned`, and `enum`. The "floating types" include **float**, **double**, and `long double`. The "arithmetic types" include all floating and integral types.
+The C data types fall into general categories. The *integral types* include **int**, **char**, **short**, **long**, and **long long**. These types can be qualified with **signed** or **unsigned**, and **unsigned** by itself can be used as shorthand for **unsigned int**. Enumeration types (**enum**) are also treated as integral types for most purposes. The *floating types* include **float**, **double**, and **long double**. The *arithmetic types* include all floating and integral types.
## See also
-[Declarations and Types](../c-language/declarations-and-types.md)
+[Declarations and types](../c-language/declarations-and-types.md)
diff --git a/docs/c-language/summary-of-declarations.md b/docs/c-language/summary-of-declarations.md
index f2bebd402f..a83d7d6c7e 100644
--- a/docs/c-language/summary-of-declarations.md
+++ b/docs/c-language/summary-of-declarations.md
@@ -13,10 +13,10 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329
*type-specifier* *declaration-specifiers*opt
*type-qualifier* *declaration-specifiers*opt
-*attribute-seq* : /\* Microsoft Specific \*/
+*attribute-seq* : /\* Microsoft-specific \*/
*attribute* *attribute-seq*opt
-*attribute* : one of /\* Microsoft Specific \*/
+*attribute* : one of /\* Microsoft-specific \*/
[__asm](../assembler/inline/asm.md) [__clrcall](../cpp/clrcall.md) [__stdcall](../cpp/stdcall.md) [__based](../cpp/based-grammar.md) [__fastcall](../cpp/fastcall.md) [__thiscall](../cpp/thiscall.md) [__cdecl](../cpp/cdecl.md) [__inline](../cpp/inline-functions-cpp.md) [__vectorcall](../cpp/vectorcall.md)
*init-declarator-list*:
@@ -33,17 +33,17 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329
**static**
**extern**
**typedef**
- **__declspec (** *extended-decl-modifier-seq* **)** /\* Microsoft Specific \*/
+ **__declspec (** *extended-decl-modifier-seq* **)** /\* Microsoft-specific \*/
*type-specifier*:
**void**
**char**
**short**
**int**
- **__int8** /\* Microsoft Specific \*/
- **__int16** /\* Microsoft Specific \*/
- **__int32** /\* Microsoft Specific \*/
- **__int64** /\* Microsoft Specific \*/
+ **__int8** /\* Microsoft-specific \*/
+ **__int16** /\* Microsoft-specific \*/
+ **__int32** /\* Microsoft-specific \*/
+ **__int64** /\* Microsoft-specific \*/
**long**
**float**
**double**
@@ -156,11 +156,11 @@ ms.assetid: 53a5e9e5-1a33-40b5-9dea-7f669b479329
*typedef-name*:
*identifier*
-*extended-decl-modifier-seq*: /\* Microsoft Specific \*/
+*extended-decl-modifier-seq*: /\* Microsoft-specific \*/
*extended-decl-modifier*opt
*extended-decl-modifier-seq* *extended-decl-modifier*
-*extended-decl-modifier*: /\* Microsoft Specific \*/
+*extended-decl-modifier*: /\* Microsoft-specific \*/
**thread**
**naked**
**dllimport**
diff --git a/docs/c-language/summary-of-lifetime-and-visibility.md b/docs/c-language/summary-of-lifetime-and-visibility.md
index c1d2d78402..0350db4eda 100644
--- a/docs/c-language/summary-of-lifetime-and-visibility.md
+++ b/docs/c-language/summary-of-lifetime-and-visibility.md
@@ -28,7 +28,7 @@ The following example illustrates blocks, nesting, and visibility of variables:
### Code
-```
+```c
// Lifetime_and_Visibility.c
#include
diff --git a/docs/c-language/summary-of-statements.md b/docs/c-language/summary-of-statements.md
index fb10a3a1e0..0f10f6b107 100644
--- a/docs/c-language/summary-of-statements.md
+++ b/docs/c-language/summary-of-statements.md
@@ -12,8 +12,8 @@ ms.assetid: ce45d2fe-ec0e-459f-afb1-80ab6a7f0239
*selection-statement*
*iteration-statement*
*jump-statement*
- *try-except-statement* /\* Microsoft Specific \*/
- *try-finally-statement* /\* Microsoft Specific \*/
+ *try-except-statement* /\* Microsoft-specific \*/
+ *try-finally-statement* /\* Microsoft-specific \*/
*jump-statement*:
**goto** *identifier* **;**
@@ -50,10 +50,10 @@ ms.assetid: ce45d2fe-ec0e-459f-afb1-80ab6a7f0239
**case** *constant-expression* **:** *statement*
**default :** *statement*
-*try-except-statement*: /\* Microsoft Specific \*/
+*try-except-statement*: /\* Microsoft-specific \*/
**__try** *compound-statement* **__except (** *expression* **)** *compound-statement*
-*try-finally-statement*: /\* Microsoft Specific \*/
+*try-finally-statement*: /\* Microsoft-specific \*/
**__try** *compound-statement* **__finally** *compound-statement*
## See also
diff --git a/docs/c-language/type-int.md b/docs/c-language/type-int.md
index 12d1d44794..ca13557b49 100644
--- a/docs/c-language/type-int.md
+++ b/docs/c-language/type-int.md
@@ -12,7 +12,7 @@ The type specifiers `int` and `unsigned int` (or simply `unsigned`) define certa
**Microsoft Specific**
-Signed integers are represented in two's-complement form. The most-significant bit holds the sign: 1 for negative, 0 for positive and zero. The range of values is given in [C++ Integer Limits](../c-language/cpp-integer-limits.md), which is taken from the LIMITS.H header file.
+Signed integers are represented in two's-complement form. The most-significant bit holds the sign: 1 for negative, 0 for positive and zero. The range of values is given in [C and C++ Integer Limits](../c-language/cpp-integer-limits.md), which is taken from the LIMITS.H header file.
**END Microsoft Specific**
diff --git a/docs/c-runtime-library/abnormal-termination.md b/docs/c-runtime-library/abnormal-termination.md
index 04c8d850a4..d61c4f00dc 100644
--- a/docs/c-runtime-library/abnormal-termination.md
+++ b/docs/c-runtime-library/abnormal-termination.md
@@ -1,9 +1,10 @@
---
title: "_abnormal_termination"
ms.date: "11/04/2016"
-apiname: ["_abnormal_termination"]
-apilocation: ["msvcr110.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr120.dll", "msvcrt.dll", "msvcr80.dll", "msvcr100.dll"]
-apitype: "DLLExport"
+api_name: ["_abnormal_termination"]
+api_location: ["msvcr110.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr120.dll", "msvcrt.dll", "msvcr80.dll", "msvcr100.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_abnormal_termination"]
helpviewer_keywords: ["_abnormal_termination"]
ms.assetid: 952970a4-9586-4c3d-807a-db729448c91c
diff --git a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md
index a8272979c1..eced673f2a 100644
--- a/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md
+++ b/docs/c-runtime-library/acmdln-tcmdln-wcmdln.md
@@ -1,9 +1,10 @@
---
title: "_acmdln, _tcmdln, _wcmdln"
ms.date: "11/04/2016"
-apiname: ["_wcmdln", "_acmdln"]
-apilocation: ["msvcrt.dll"]
-apitype: "DLLExport"
+api_name: ["_wcmdln", "_acmdln"]
+api_location: ["msvcrt.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_acmdln", "acmdln", "_wcmdln", "wcmdln", "_tcmdln", "tcmdln"]
helpviewer_keywords: ["_wcmdln global variable", "wcmdln global variable", "_acmdln global variable", "_tcmdln global variable", "tcmdln global variable", "acmdln global variable"]
ms.assetid: 4fc0a6a0-3f93-420a-a19f-5276061ba539
diff --git a/docs/c-runtime-library/argc-argv-wargv.md b/docs/c-runtime-library/argc-argv-wargv.md
index aa32c54d98..6d44656f92 100644
--- a/docs/c-runtime-library/argc-argv-wargv.md
+++ b/docs/c-runtime-library/argc-argv-wargv.md
@@ -1,12 +1,15 @@
---
title: "__argc, __argv, __wargv"
+description: "Describes the Microsoft C runtime library global constants __argc, __argv, and __wargv."
ms.date: "11/04/2016"
-apiname: ["__wargv", "__argv", "__argc"]
-apilocation: ["msvcrt120.dll"]
-apitype: "DLLExport"
+api_name: ["__wargv", "__argv", "__argc"]
+api_location: ["msvcrt120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__argv", "__argc", "__wargv"]
helpviewer_keywords: ["__argv", "__wargv", "__argc"]
ms.assetid: 17001b0a-04ad-4762-b3a6-c54847f02d7c
+no-loc: [__argc, __argv, __wargv, main, wmain]
---
# __argc, __argv, __wargv
@@ -14,7 +17,7 @@ The `__argc` global variable is a count of the number of command-line arguments
## Syntax
-```
+```C
extern int __argc;
extern char ** __argv;
extern wchar_t ** __wargv;
@@ -26,7 +29,7 @@ In a program that uses the `main` function, `__argc` and `__argv` are initializ
For portable code, we recommend you use the arguments passed to `main` to get the command-line arguments in your program.
-### Generic-Text Routine Mappings
+### Generic-text routine mappings
|Tchar.h routine|_UNICODE not defined|_UNICODE defined|
|---------------------|---------------------------|-----------------------|
@@ -42,6 +45,6 @@ For portable code, we recommend you use the arguments passed to `main` to get th
## See also
-[Global Variables](../c-runtime-library/global-variables.md)
-[main: Program Startup](../cpp/main-program-startup.md)
+[Global variables](../c-runtime-library/global-variables.md)\
+[main function and command-line arguments (C++)](../cpp/main-function-command-line-args.md)\
[Using wmain Instead of main](../cpp/using-wmain-instead-of-main.md)
diff --git a/docs/c-runtime-library/cgets-cgetws.md b/docs/c-runtime-library/cgets-cgetws.md
index 219bb2e6f6..151047387c 100644
--- a/docs/c-runtime-library/cgets-cgetws.md
+++ b/docs/c-runtime-library/cgets-cgetws.md
@@ -1,9 +1,10 @@
---
title: "_cgets, _cgetws"
ms.date: "11/04/2016"
-apiname: ["_cgetws", "_cgets"]
-apilocation: ["msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_cgetws", "_cgets"]
+api_location: ["msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cgetws", "_cgetws", "_cgets"]
helpviewer_keywords: ["_cgetws function", "strings [C++], getting from console", "console, getting strings from", "_cgets function", "cgetws function", "cgets function"]
ms.assetid: 4d5e134a-58c3-4f62-befd-5d235b0212f4
@@ -71,7 +72,7 @@ For more compatibility information, see [Compatibility](../c-runtime-library/com
## Example
-```
+```c
// crt_cgets.c
// compile with: /c /W3
// This program creates a buffer and initializes
diff --git a/docs/c-runtime-library/ciatan.md b/docs/c-runtime-library/ciatan.md
index 51363860c5..ef275e6e6c 100644
--- a/docs/c-runtime-library/ciatan.md
+++ b/docs/c-runtime-library/ciatan.md
@@ -1,9 +1,10 @@
---
title: "_CIatan"
ms.date: "11/04/2016"
-apiname: ["_CIatan"]
-apilocation: ["msvcr120.dll", "msvcr110.dll", "msvcrt.dll", "msvcr80.dll", "msvcr100.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIatan"]
+api_location: ["msvcr120.dll", "msvcr110.dll", "msvcrt.dll", "msvcr80.dll", "msvcr100.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CIatan", "CIatan"]
helpviewer_keywords: ["CIatan intrinsic", "_CIatan intrinsic"]
ms.assetid: 3baa0429-fe46-4bab-8b00-868e2186dc8c
diff --git a/docs/c-runtime-library/ciatan2.md b/docs/c-runtime-library/ciatan2.md
index f26ade1e1a..5840801582 100644
--- a/docs/c-runtime-library/ciatan2.md
+++ b/docs/c-runtime-library/ciatan2.md
@@ -1,9 +1,10 @@
---
title: "_CIatan2"
ms.date: "11/04/2016"
-apiname: ["_CIatan2"]
-apilocation: ["msvcr80.dll", "msvcrt.dll", "msvcr120.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr100.dll", "msvcr90.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIatan2"]
+api_location: ["msvcr80.dll", "msvcrt.dll", "msvcr120.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr100.dll", "msvcr90.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CIatan2", "_CIatan2"]
helpviewer_keywords: ["_CIatan2 intrinsic", "CIatan2 intrinsic"]
ms.assetid: 31f8cc78-b79f-4576-b73b-8add18e08680
diff --git a/docs/c-runtime-library/cicos.md b/docs/c-runtime-library/cicos.md
index eb17f95696..4e25a093e4 100644
--- a/docs/c-runtime-library/cicos.md
+++ b/docs/c-runtime-library/cicos.md
@@ -1,9 +1,10 @@
---
title: "_CIcos"
ms.date: "04/11/2018"
-apiname: ["_CIcos"]
-apilocation: ["msvcr90.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIcos"]
+api_location: ["msvcr90.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CIcos", "_CIcos"]
helpviewer_keywords: ["_CIcos intrinsic", "CIcos intrinsic"]
ms.assetid: 6fc203fb-66f3-4ead-9784-f85833c26f1b
diff --git a/docs/c-runtime-library/ciexp.md b/docs/c-runtime-library/ciexp.md
index b6876fc382..939a53bef2 100644
--- a/docs/c-runtime-library/ciexp.md
+++ b/docs/c-runtime-library/ciexp.md
@@ -1,9 +1,10 @@
---
title: "_CIexp"
ms.date: "11/04/2016"
-apiname: ["_CIexp"]
-apilocation: ["msvcr120.dll", "msvcr80.dll", "msvcr110.dll", "msvcr100.dll", "msvcrt.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIexp"]
+api_location: ["msvcr120.dll", "msvcr80.dll", "msvcr110.dll", "msvcr100.dll", "msvcrt.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CIexp", "_CIexp"]
helpviewer_keywords: ["CIexp intrinsic", "_CIexp intrinsic"]
ms.assetid: f8a3e3b7-fa57-41a3-9983-6c81914cbb55
diff --git a/docs/c-runtime-library/cifmod.md b/docs/c-runtime-library/cifmod.md
index c2137c6d0d..029a2b5a3f 100644
--- a/docs/c-runtime-library/cifmod.md
+++ b/docs/c-runtime-library/cifmod.md
@@ -1,9 +1,10 @@
---
title: "_CIfmod"
ms.date: "11/04/2016"
-apiname: ["_CIfmod"]
-apilocation: ["msvcrt.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcr80.dll", "msvcr90.dll", "msvcr120.dll", "msvcr110.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIfmod"]
+api_location: ["msvcrt.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcr80.dll", "msvcr90.dll", "msvcr120.dll", "msvcr110.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CIfmod", "CIfmod"]
helpviewer_keywords: ["CIfmod intrinsic", "_CIfmod intrinsic"]
ms.assetid: 7c050653-7ec6-4810-b3a7-7a0057ea65ed
diff --git a/docs/c-runtime-library/cilog.md b/docs/c-runtime-library/cilog.md
index 82c3a65a2a..128b55d5ed 100644
--- a/docs/c-runtime-library/cilog.md
+++ b/docs/c-runtime-library/cilog.md
@@ -1,9 +1,10 @@
---
title: "_CIlog"
ms.date: "11/04/2016"
-apiname: ["_CIlog"]
-apilocation: ["msvcr90.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcrt.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIlog"]
+api_location: ["msvcr90.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcrt.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CIlog", "CIlog"]
helpviewer_keywords: ["_CIlog intrinsic", "CIlog intrinsic"]
ms.assetid: 23503854-ddaa-4fe0-a4a3-7fbb3a43bdec
diff --git a/docs/c-runtime-library/cilog10.md b/docs/c-runtime-library/cilog10.md
index 91f78c35fc..3a44cfb6b1 100644
--- a/docs/c-runtime-library/cilog10.md
+++ b/docs/c-runtime-library/cilog10.md
@@ -1,9 +1,10 @@
---
title: "_CIlog10"
ms.date: "11/04/2016"
-apiname: ["_CIlog10"]
-apilocation: ["msvcr100.dll", "msvcr120.dll", "msvcr80.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr110.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIlog10"]
+api_location: ["msvcr100.dll", "msvcr120.dll", "msvcr80.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr110.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CIlog10", "_CIlog10"]
helpviewer_keywords: ["_CIlog10 intrinsic", "CIlog10 intrinsic"]
ms.assetid: 05d7fcaa-3cff-4cc5-8d44-015e7cacba24
diff --git a/docs/c-runtime-library/cipow.md b/docs/c-runtime-library/cipow.md
index f8bc536b3a..babddde76b 100644
--- a/docs/c-runtime-library/cipow.md
+++ b/docs/c-runtime-library/cipow.md
@@ -1,9 +1,10 @@
---
title: "_CIpow"
ms.date: "11/04/2016"
-apiname: ["_CIpow"]
-apilocation: ["msvcr100.dll", "msvcr110.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr90.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIpow"]
+api_location: ["msvcr100.dll", "msvcr110.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr90.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CIpow", "_CIpow"]
helpviewer_keywords: ["CIpow intrinsic", "_CIpow intrinsic"]
ms.assetid: 477aaf0c-ac58-4252-89dd-9f3e35d47536
diff --git a/docs/c-runtime-library/cisin.md b/docs/c-runtime-library/cisin.md
index 6c399b37f8..1af6031a2f 100644
--- a/docs/c-runtime-library/cisin.md
+++ b/docs/c-runtime-library/cisin.md
@@ -1,9 +1,10 @@
---
title: "_CIsin"
ms.date: "04/10/2018"
-apiname: ["_CIsin"]
-apilocation: ["msvcr80.dll", "msvcr100.dll", "msvcrt.dll", "msvcr110.dll", "msvcr120.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIsin"]
+api_location: ["msvcr80.dll", "msvcr100.dll", "msvcrt.dll", "msvcr110.dll", "msvcr120.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CIsin", "_CIsin"]
helpviewer_keywords: ["_CIsin intrinsic", "CIsin intrinsic"]
ms.assetid: f215f39a-2341-4f1c-ba8e-cb522451ceb2
diff --git a/docs/c-runtime-library/cisqrt.md b/docs/c-runtime-library/cisqrt.md
index fc7fd10252..a5a57f081c 100644
--- a/docs/c-runtime-library/cisqrt.md
+++ b/docs/c-runtime-library/cisqrt.md
@@ -1,9 +1,10 @@
---
title: "_CIsqrt"
ms.date: "11/04/2016"
-apiname: ["_CIsqrt"]
-apilocation: ["msvcr90.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcrt.dll", "msvcr110.dll", "msvcr100.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CIsqrt"]
+api_location: ["msvcr90.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcrt.dll", "msvcr110.dll", "msvcr100.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CIsqrt", "CIsqrt"]
helpviewer_keywords: ["CIsqrt intrinsic", "_CIsqrt intrinsic"]
ms.assetid: 663548ea-398c-48ee-8397-a787c6ebb937
diff --git a/docs/c-runtime-library/citan.md b/docs/c-runtime-library/citan.md
index 7de542db78..da6ed93eee 100644
--- a/docs/c-runtime-library/citan.md
+++ b/docs/c-runtime-library/citan.md
@@ -1,9 +1,10 @@
---
title: "_CItan"
ms.date: "04/11/2018"
-apiname: ["_CItan"]
-apilocation: ["msvcr100.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcrt.dll", "msvcr110.dll", "msvcr90.dll", "msvcr120.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_CItan"]
+api_location: ["msvcr100.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcrt.dll", "msvcr110.dll", "msvcr90.dll", "msvcr120.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CItan", "CItan"]
helpviewer_keywords: ["CItan intrinsic", "_CItan intrinsic"]
ms.assetid: d1ea3113-50a2-45a6-b6bc-680fcdcc0928
diff --git a/docs/c-runtime-library/compatibility.md b/docs/c-runtime-library/compatibility.md
index 2653fa0a99..f3c9a0908b 100644
--- a/docs/c-runtime-library/compatibility.md
+++ b/docs/c-runtime-library/compatibility.md
@@ -1,27 +1,28 @@
---
title: "Compatibility"
-ms.date: "11/04/2016"
+description: "Describes the compatibility of the Microsoft Universal C runtime library (UCRT) with the Standard C library, POSIX, the Safe CRT, and Store apps."
+ms.date: "12/06/2019"
f1_keywords: ["c.programs"]
helpviewer_keywords: ["CRT, compatibility", "compatibility, C run-time libraries", "compatibility"]
ms.assetid: 346709cb-edda-4909-9a19-3d253eddb6b7
---
# Compatibility
-The Universal C Run-Time Library (UCRT) supports most of the C standard library required for C++ conformance. It implements the C99 (ISO/IEC 9899:1999) library, with the exceptions of the type-generic macros defined in \, and strict type compatibility in \. The UCRT also implements a large subset of the POSIX.1 (ISO/IEC 9945-1:1996, the POSIX System Application Program Interface) C library, but is not fully conformant to any specific POSIX standard. In addition, the UCRT implements several Microsoft-specific functions and macros that are not part of a standard.
+The Universal C Run-Time Library (UCRT) supports most of the C standard library required for C++ conformance. It implements the C99 (ISO/IEC 9899:1999) library, with certain exceptions: The type-generic macros defined in \, and strict type compatibility in \. The UCRT also implements a large subset of the POSIX.1 (ISO/IEC 9945-1:1996, the POSIX System Application Program Interface) C library. However, it's not fully conformant to any specific POSIX standard. The UCRT also implements several Microsoft-specific functions and macros that aren't part of a standard.
-Functions specific to the Microsoft implementation of Visual C++ are found in the vcruntime library. Many of these functions are for internal use and cannot be called by user code. Some are documented for use in debugging and implementation compatibility.
+Functions specific to the Microsoft implementation of Visual C++ are found in the vcruntime library. Many of these functions are for internal use and can't be called by user code. Some are documented for use in debugging and implementation compatibility.
-The C++ standard reserves names that begin with an underscore in the global namespace to the implementation. Because the POSIX functions are in the global namespace, but are not part of the standard C runtime library, the Microsoft-specific implementations of these functions have a leading underscore. For portability, the UCRT also supports the default names, but the Microsoft C++ compiler issues a deprecation warning when code that uses them is compiled. Only the default POSIX names are deprecated, not the functions. To suppress the warning, define `_CRT_NONSTDC_NO_WARNINGS` before including any headers in code that uses the original POSIX names.
+The C++ standard reserves names that begin with an underscore in the global namespace to the implementation. Both the POSIX functions and Microsoft-specific runtime library functions are in the global namespace, but aren't part of the standard C runtime library. That's why the preferred Microsoft implementations of these functions have a leading underscore. For portability, the UCRT also supports the default names, but the Microsoft C++ compiler issues a deprecation warning when code that uses them is compiled. Only the default names are deprecated, not the functions themselves. To suppress the warning, define `_CRT_NONSTDC_NO_WARNINGS` before including any headers in code that uses the original POSIX names.
-Certain functions in the standard C library have a history of unsafe usage, because of misused parameters and unchecked buffers. These functions are often the source of security issues in code. Microsoft created a set of safer versions of these functions that verify parameter usage and invoke the invalid parameter handler when an issue is detected at runtime. By default, the Microsoft C++ compiler issues a deprecation warning when a function is used that has a safer variant available. When you compile your code as C++ , you can define `_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES` as 1 to eliminate most warnings. This uses template overloads to call the safer variants while maintaining portable source code. To suppress the warning, define `_CRT_SECURE_NO_WARNINGS` before including any headers in code that uses these functions. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md).
+Certain functions in the standard C library have a history of unsafe usage, because of misused parameters and unchecked buffers. These functions are often the source of security issues in code. Microsoft created a set of safer versions of these functions that verify parameter usage. They invoke the invalid parameter handler when an issue is detected at runtime. By default, the Microsoft C++ compiler issues a deprecation warning when a function is used that has a safer variant available. When you compile your code as C++, you can define `_CRT_SECURE_CPP_OVERLOAD_STANDARD_NAMES` as 1 to eliminate most warnings. This macro enables template overloads to call the safer variants while maintaining portable source code. To suppress the warning, define `_CRT_SECURE_NO_WARNINGS` before including any headers in code that uses these functions. For more information, see [Security Features in the CRT](../c-runtime-library/security-features-in-the-crt.md).
-Except as noted within the documentation for specific functions, the UCRT is compatible with the Windows API. Certain functions are not supported in Windows 8 Store apps or in Universal Windows Platform (UWP) apps on Windows 10. These functions are listed in [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md), which enumerates the functions not supported by the Windows Runtime and [UWP](/uwp).
+Except as noted within the documentation for specific functions, the UCRT is compatible with the Windows API. Certain functions aren't supported in Windows Store or Universal Windows Platform ([UWP](/uwp)) apps. These functions are listed in [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
## Related Articles
|Title|Description|
|-----------|-----------------|
-|[UWP Apps, the Windows Runtime, and the C Run-Time](../c-runtime-library/windows-store-apps-the-windows-runtime-and-the-c-run-time.md)|Describes when UCRT routines are not compatible with Universal Windows apps or Microsoft Store apps.|
+|[UWP Apps, the Windows Runtime, and the C Run-Time](../c-runtime-library/windows-store-apps-the-windows-runtime-and-the-c-run-time.md)|Describes when UCRT routines aren't compatible with Universal Windows apps or Microsoft Store apps.|
|[ANSI C Compliance](../c-runtime-library/ansi-c-compliance.md)|Describes standard-compliant naming in the UCRT.|
|[UNIX](../c-runtime-library/unix.md)|Provides guidelines for porting programs to UNIX.|
|[Windows Platforms (CRT)](../c-runtime-library/windows-platforms-crt.md)|Lists the operating systems that are the CRT supports.|
diff --git a/docs/c-runtime-library/crtlcmapstringw.md b/docs/c-runtime-library/crtlcmapstringw.md
index ff75b7b003..a81508dab3 100644
--- a/docs/c-runtime-library/crtlcmapstringw.md
+++ b/docs/c-runtime-library/crtlcmapstringw.md
@@ -1,9 +1,10 @@
---
title: "__crtLCMapStringW"
ms.date: "11/04/2016"
-apiname: ["__crtLCMapStringW"]
-apilocation: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcrt.dll", "msvcr120.dll", "msvcr110.dll", "msvcr80.dll"]
-apitype: "DLLExport"
+api_name: ["__crtLCMapStringW"]
+api_location: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcrt.dll", "msvcr120.dll", "msvcr110.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__crtLCMapStringW"]
helpviewer_keywords: ["__crtLCMapStringW"]
ms.assetid: 45b4ac0e-438c-4fa3-b4d1-34195f4467d9
diff --git a/docs/c-runtime-library/cxxframehandler.md b/docs/c-runtime-library/cxxframehandler.md
index 00eeb7640d..ca162aa431 100644
--- a/docs/c-runtime-library/cxxframehandler.md
+++ b/docs/c-runtime-library/cxxframehandler.md
@@ -1,9 +1,10 @@
---
title: "__CxxFrameHandler"
ms.date: "11/04/2016"
-apiname: ["__CxxFrameHandler"]
-apilocation: ["msvcr110.dll", "msvcrt.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_name: ["__CxxFrameHandler"]
+api_location: ["msvcr110.dll", "msvcrt.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__CxxFrameHandler"]
helpviewer_keywords: ["__CxxFrameHandler"]
ms.assetid: b79ac97f-425a-42ae-9b91-8beaef935333
diff --git a/docs/c-runtime-library/delete-operator-crt.md b/docs/c-runtime-library/delete-operator-crt.md
index b6d8a87155..d616406ced 100644
--- a/docs/c-runtime-library/delete-operator-crt.md
+++ b/docs/c-runtime-library/delete-operator-crt.md
@@ -1,8 +1,9 @@
---
title: "operator delete(CRT)"
ms.date: "11/04/2016"
-apilocation: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr120.dll", "msvcr100.dll", "msvcr80.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr120.dll", "msvcr100.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["delete[]"]
helpviewer_keywords: ["operator delete[]", "vector delete"]
ms.assetid: e91bd0df-3815-40ca-950a-67b470518aed
diff --git a/docs/c-runtime-library/dllonexit.md b/docs/c-runtime-library/dllonexit.md
index 7e2261e2db..2190ce196d 100644
--- a/docs/c-runtime-library/dllonexit.md
+++ b/docs/c-runtime-library/dllonexit.md
@@ -1,9 +1,10 @@
---
title: "__dllonexit"
ms.date: "11/04/2016"
-apiname: ["__dllonexit"]
-apilocation: ["msvcrt.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcr120_clr0400.dll"]
-apitype: "DLLExport"
+api_name: ["__dllonexit"]
+api_location: ["msvcrt.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcr120_clr0400.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__dllonexit"]
helpviewer_keywords: ["__dllonexit"]
ms.assetid: 708f2ceb-f95c-46b0-a58d-d68b3fa36f12
diff --git a/docs/c-runtime-library/errno-constants.md b/docs/c-runtime-library/errno-constants.md
index f8a17d1988..2184763d8e 100644
--- a/docs/c-runtime-library/errno-constants.md
+++ b/docs/c-runtime-library/errno-constants.md
@@ -44,7 +44,7 @@ The following **errno** values are supported:
|**EXDEV**|Cross-device link. An attempt was made to move a file to a different device (using the **rename** function).|
|**STRUNCATE**|A string copy or concatenation resulted in a truncated string. See [_TRUNCATE](../c-runtime-library/truncate.md).
-The following values are supported for compatibility with Posix. They are required values on non-Posix systems.
+The following values are supported for compatibility with POSIX. They are required values on non-POSIX systems.
```C
#define E2BIG /* argument list too long */
diff --git a/docs/c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md b/docs/c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md
index 1f000857be..5766160b5b 100644
--- a/docs/c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md
+++ b/docs/c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md
@@ -1,9 +1,10 @@
---
title: "errno, _doserrno, _sys_errlist, and _sys_nerr"
ms.date: "11/04/2016"
-apiname: ["_errno"]
-apilocation: ["msvcrt.dll"]
-apitype: "DLLExport"
+api_name: ["_errno"]
+api_location: ["msvcrt.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_sys_errlist", "errno", "_sys_nerr", "_doserrno"]
helpviewer_keywords: ["error codes, printing", "sys_errlist global variable", "doserrno global variable", "errno global variable", "_doserrno global variable", "_sys_errlist global variable", "_sys_nerr global variable", "sys_nerr global variable"]
ms.assetid: adbec641-6d91-4e19-8398-9a34046bd369
diff --git a/docs/c-runtime-library/except-handler3.md b/docs/c-runtime-library/except-handler3.md
index 252d05d418..712204e87f 100644
--- a/docs/c-runtime-library/except-handler3.md
+++ b/docs/c-runtime-library/except-handler3.md
@@ -1,9 +1,10 @@
---
title: "_except_handler3"
ms.date: "11/04/2016"
-apiname: ["_except_handler3"]
-apilocation: ["msvcrt.dll", "msvcr90.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110.dll"]
-apitype: "DLLExport"
+api_name: ["_except_handler3"]
+api_location: ["msvcrt.dll", "msvcr90.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_except_handler3", "except_handler3"]
helpviewer_keywords: ["_except_handler3 function", "except_handler3 function"]
ms.assetid: b0c64898-0ae5-48b7-9724-80135a0813e2
diff --git a/docs/c-runtime-library/exec-wexec-functions.md b/docs/c-runtime-library/exec-wexec-functions.md
index d5c4884fa2..1b186e15ab 100644
--- a/docs/c-runtime-library/exec-wexec-functions.md
+++ b/docs/c-runtime-library/exec-wexec-functions.md
@@ -1,8 +1,9 @@
---
title: "_exec, _wexec Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr110_clr0400.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr100.dll", "msvcr110.dll", "msvcr80.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr110_clr0400.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr100.dll", "msvcr110.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_texecve", "texecl", "_texeclpe", "texecve", "texecv", "texeclp", "texecle", "exec", "texeclpe", "_texecvp", "_texecl", "_texecle", "wexec", "_exec", "_texeclp", "_texecvpe", "texecvpe", "_texecv", "_wexec"]
helpviewer_keywords: ["_texecle function", "_texecv function", "texeclpe function", "texecle function", "_texecl function", "texecv function", "_texeclp function", "_texecve function", "texecl function", "texecve function", "exec function", "texeclp function", "texecvp function", "texecvpe function", "processes, executing new", "_texecvp function", "_texeclpe function", "_wexec functions", "wexec functions", "_exec function", "_texecvpe function"]
ms.assetid: a261df93-206a-4fdc-b8ac-66aa7db83bc6
@@ -70,7 +71,7 @@ The `_exec` calls do not preserve the translation modes of open files. If the ne
## Example
-```
+```c
// crt_args.c
// Illustrates the following variables used for accessing
// command-line arguments and environment variables:
@@ -101,7 +102,7 @@ char **envp ) // Array of environment variable strings
Run the following program to execute Crt_args.exe:
-```
+```c
// crt_exec.c
// Illustrates the different versions of exec, including
// _execl _execle _execlp _execlpe
diff --git a/docs/c-runtime-library/execute-onexit-table-initialize-onexit-table-register-onexit-function.md b/docs/c-runtime-library/execute-onexit-table-initialize-onexit-table-register-onexit-function.md
index cf24c2f267..035ecb160e 100644
--- a/docs/c-runtime-library/execute-onexit-table-initialize-onexit-table-register-onexit-function.md
+++ b/docs/c-runtime-library/execute-onexit-table-initialize-onexit-table-register-onexit-function.md
@@ -1,9 +1,10 @@
---
title: "_execute_onexit_table, _initialize_onexit_table, _register_onexit_function"
ms.date: "11/04/2016"
-apiname: ["_execute_onexit_table", "_initialize_onexit_table", "_register_onexit_function"]
-apilocation: ["api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_execute_onexit_table", "_initialize_onexit_table", "_register_onexit_function"]
+api_location: ["api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_execute_onexit_table", "process/_execute_onexit_table", "_initialize_onexit_table", "process/_initialize_onexit_table", "_register_onexit_function", "process/_register_onexit_function"]
helpviewer_keywords: ["_execute_onexit_table function", "_initialize_onexit_table function", "_register_onexit_function function"]
ms.assetid: ad9e4149-d4ad-4fdf-aaaf-cf786fcb4473
@@ -57,7 +58,7 @@ The `_execute_onexit_table` function executes all of the functions in the onexit
|-------------|---------------------|
|`_initialize_onexit_table function`, `_register_onexit_function`, `_execute_onexit_table`|C, C++: \|
-The `_initialize_onexit_table`, `_register_onexit_function`, and `_execute_onexit_table` functions are Microsoft specific. For compatibility information, see [Compatibility](../c-runtime-library/compatibility.md).
+The `_initialize_onexit_table`, `_register_onexit_function`, and `_execute_onexit_table` functions are Microsoft-specific. For compatibility information, see [Compatibility](../c-runtime-library/compatibility.md).
## See also
diff --git a/docs/c-runtime-library/filename-search-functions.md b/docs/c-runtime-library/filename-search-functions.md
index dcf3aaf1a2..2c5fb6803d 100644
--- a/docs/c-runtime-library/filename-search-functions.md
+++ b/docs/c-runtime-library/filename-search-functions.md
@@ -1,8 +1,9 @@
---
title: "Filename Search Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr100.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr100.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
helpviewer_keywords: ["file names [C++], searching for", "_find function", "wfind function", "find function", "_wfind function"]
ms.assetid: 2bc2f8ef-44e4-4271-b3e8-666d36fde828
---
@@ -88,7 +89,7 @@ Functions `_findfirst32i64`, `_findnext32i64`, `_wfindfirst32i64`, and `_wfindne
## Example
-```
+```c
// crt_find.c
// This program uses the 32-bit _find functions to print
// a list of all files (and their attributes) with a .C extension
diff --git a/docs/c-runtime-library/floating-point-support.md b/docs/c-runtime-library/floating-point-support.md
index 276743658e..5430a9270b 100644
--- a/docs/c-runtime-library/floating-point-support.md
+++ b/docs/c-runtime-library/floating-point-support.md
@@ -62,7 +62,7 @@ Previous 16-bit versions of Microsoft C/C++ and Microsoft Visual C++ supported t
[floor, floorf, floorl](../c-runtime-library/reference/floor-floorf-floorl.md)|Computes the floor
[fma, fmaf, fmal](../c-runtime-library/reference/fma-fmaf-fmal.md)|Computes a fused multiply-add
[fmax, fmaxf, fmaxl](../c-runtime-library/reference/fmax-fmaxf-fmaxl.md)|Computes the maximum of the arguments
-[fmin, fminf, fminl](../c-runtime-library/reference/fmin-fminf-fminl.md)|Computes the minumum of the arguments
+[fmin, fminf, fminl](../c-runtime-library/reference/fmin-fminf-fminl.md)|Computes the minimum of the arguments
[fmod, fmodf, fmodl](../c-runtime-library/reference/fmod-fmodf.md)|Computes the floating-point remainder
[_fpclass, _fpclassf](../c-runtime-library/reference/fpclass-fpclassf.md)|Returns the classification of a floating-point value
[fpclassify](../c-runtime-library/reference/fpclassify.md)|Returns the classification of a floating-point value
diff --git a/docs/c-runtime-library/format-specification-fields-scanf-and-wscanf-functions.md b/docs/c-runtime-library/format-specification-fields-scanf-and-wscanf-functions.md
index d7638f797b..346647b743 100644
--- a/docs/c-runtime-library/format-specification-fields-scanf-and-wscanf-functions.md
+++ b/docs/c-runtime-library/format-specification-fields-scanf-and-wscanf-functions.md
@@ -1,8 +1,9 @@
---
title: "Format Specification Fields: scanf and wscanf Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr80.dll", "msvcr110.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr80.dll", "msvcr110.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wscanf", "scanf"]
helpviewer_keywords: ["width, specifications in scanf function", "scanf format specifications", "scanf width specifications", "scanf type field characters", "type fields, scanf function", "format specification fields for scanf function", "type fields"]
ms.assetid: 7e95de1b-0b71-4de3-9f81-c9560c78e039
diff --git a/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md b/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md
index 533646f31c..ada4572ba7 100644
--- a/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md
+++ b/docs/c-runtime-library/format-specification-syntax-printf-and-wprintf-functions.md
@@ -1,12 +1,12 @@
---
title: "Format Specification Syntax: printf and wprintf Functions"
-ms.date: "07/30/2019"
+ms.date: "10/21/2019"
helpviewer_keywords: ["format specification fields for printf function", "printf function format specification fields", "flag directives, printf function", "type fields, printf function", "width fields, printf function", "precision fields, printf function"]
ms.assetid: 664b1717-2760-4c61-bd9c-22eee618d825
---
# Format specification syntax: printf and wprintf functions
-The various `printf` and `wprintf` functions take a format string and optional arguments and produce a formatted sequence of characters for output. The format string contains zero or more *directives*, which are either literal characters for output or encoded *conversion specifications* that describe how to format an argument in the output. This article describes the syntax used to encode conversion specifications in the format string. For a listing of these functions, see [Stream I/O](../c-runtime-library/stream-i-o.md).
+The various `printf` and `wprintf` functions take a format string and optional arguments and produce a formatted sequence of characters for output. The format string contains zero or more *directives*, which are either literal characters for output or encoded *conversion specifications* that describe how to format an argument in the output. This article describes the syntax used to encode conversion specifications in the format string. For a listing of these functions, see [Stream I/O](../c-runtime-library/stream-i-o.md).
A conversion specification consists of optional and required fields in this form:
@@ -27,16 +27,19 @@ A basic conversion specification contains only the percent sign and a *type* cha
+> [!NOTE]
+> In Visual Studio 2015 The `printf` and `scanf` family of functions were declared as **inline** and moved to the `` and `` headers. If you are migrating older code you might see *LNK2019* in connection with these functions. For more information, see [Visual C++ change history 2003 - 2015](../porting/visual-cpp-change-history-2003-2015.md#stdio_and_conio).
+
## Type conversion specifier
The *type* conversion specifier character specifies whether to interpret the corresponding argument as a character, a string, a pointer, an integer, or a floating-point number. The *type* character is the only required conversion specification field, and it appears after any optional fields.
-The arguments that follow the format string are interpreted according to the corresponding *type* character and the optional [size](#size) prefix. Conversions for character types `char` and `wchar_t` are specified by using **c** or **C**, and single-byte and multi-byte or wide character strings are specified by using **s** or **S**, depending on which formatting function is being used. Character and string arguments that are specified by using **c** and **s** are interpreted as `char` and `char*` by `printf` family functions, or as `wchar_t` and `wchar_t*` by `wprintf` family functions. Character and string arguments that are specified by using **C** and **S** are interpreted as `wchar_t` and `wchar_t*` by `printf` family functions, or as `char` and `char*` by `wprintf` family functions. This behavior is Microsoft specific.
+The arguments that follow the format string are interpreted according to the corresponding *type* character and the optional [size](#size) prefix. Conversions for character types `char` and `wchar_t` are specified by using **c** or **C**, and single-byte and multi-byte or wide character strings are specified by using **s** or **S**, depending on which formatting function is being used. Character and string arguments that are specified by using **c** and **s** are interpreted as `char` and `char*` by `printf` family functions, or as `wchar_t` and `wchar_t*` by `wprintf` family functions. Character and string arguments that are specified by using **C** and **S** are interpreted as `wchar_t` and `wchar_t*` by `printf` family functions, or as `char` and `char*` by `wprintf` family functions. This behavior is Microsoft-specific.
Integer types such as `short`, `int`, `long`, `long long`, and their `unsigned` variants, are specified by using **d**, **i**, **o**, **u**, **x**, and **X**. Floating-point types such as `float`, `double`, and `long double`, are specified by using **a**, **A**, **e**, **E**, **f**, **F**, **g**, and **G**. By default, unless they are modified by a *size* prefix, integer arguments are coerced to `int` type, and floating-point arguments are coerced to `double`. On 64-bit systems, an `int` is a 32-bit value; therefore, 64-bit integers will be truncated when they are formatted for output unless a *size* prefix of **ll** or **I64** is used. Pointer types that are specified by **p** use the default pointer size for the platform.
> [!NOTE]
-> **Microsoft Specific**
+> **Microsoft-specific:**
> The **Z** type character, and the behavior of the **c**, **C**, **s**, and **S** type characters when they are used with the `printf` and `wprintf` functions, are Microsoft extensions. The ISO C standard uses **c** and **s** consistently for narrow characters and strings, and **C** and **S** for wide characters and strings, in all formatting functions.
### Type field characters
@@ -190,7 +193,7 @@ In Visual C++, although `long double` is a distinct type, it has the same intern
An **hc** or **hC** type specifier is synonymous with **c** in `printf` functions and with **C** in `wprintf` functions. An **lc**, **lC**, **wc**, or **wC** type specifier is synonymous with **C** in `printf` functions and with **c** in `wprintf` functions. An **hs** or **hS** type specifier is synonymous with **s** in `printf` functions and with **S** in `wprintf` functions. An **ls**, **lS**, **ws** or **wS** type specifier is synonymous with **S** in `printf` functions and with **s** in `wprintf` functions.
> [!NOTE]
-> **Microsoft Specific**
+> **Microsoft-specific:**
> The **I** (uppercase i), **I32**, **I64**, and **w** argument size modifier prefixes are Microsoft extensions and are not ISO C-compatible. The **h** prefix when it's used with data of type `char` and the **l** (lowercase L) prefix when it's used with data of type `double` are Microsoft extensions.
## See also
diff --git a/docs/c-runtime-library/get-output-format.md b/docs/c-runtime-library/get-output-format.md
index d2c2b706ed..6f2167627a 100644
--- a/docs/c-runtime-library/get-output-format.md
+++ b/docs/c-runtime-library/get-output-format.md
@@ -1,9 +1,10 @@
---
title: "_get_output_format"
ms.date: "11/04/2016"
-apiname: ["_get_output_format"]
-apilocation: ["msvcr110_clr0400.dll", "msvcr100.dll", "msvcr80.dll", "msvcrt.dll", "msvcr90.dll", "msvcr120.dll", "msvcr110.dll"]
-apitype: "DLLExport"
+api_name: ["_get_output_format"]
+api_location: ["msvcr110_clr0400.dll", "msvcr100.dll", "msvcr80.dll", "msvcrt.dll", "msvcr90.dll", "msvcr120.dll", "msvcr110.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_output_format", "_get_output_format"]
helpviewer_keywords: ["output formatting", "get_output_format function", "_get_output_format function"]
ms.assetid: 0ce42f3b-3479-41c4-bcbf-1d21f7ee37e7
diff --git a/docs/c-runtime-library/getmainargs-wgetmainargs.md b/docs/c-runtime-library/getmainargs-wgetmainargs.md
index 308560f68f..b5527394ef 100644
--- a/docs/c-runtime-library/getmainargs-wgetmainargs.md
+++ b/docs/c-runtime-library/getmainargs-wgetmainargs.md
@@ -1,9 +1,10 @@
---
title: "__getmainargs, __wgetmainargs"
ms.date: "11/04/2016"
-apiname: ["__wgetmainargs", "__getmainargs"]
-apilocation: ["msvcr100.dll", "msvcrt.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr110.dll", "msvcr90.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_name: ["__wgetmainargs", "__getmainargs"]
+api_location: ["msvcr100.dll", "msvcrt.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr110.dll", "msvcr90.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__wgetmainargs", "__getmainargs"]
helpviewer_keywords: ["__wgetmainargs", "__getmainargs"]
ms.assetid: f72f54eb-9509-4bdf-8752-40fc49055439
diff --git a/docs/c-runtime-library/gets-getws.md b/docs/c-runtime-library/gets-getws.md
index 7d3d56b9df..8c581e3763 100644
--- a/docs/c-runtime-library/gets-getws.md
+++ b/docs/c-runtime-library/gets-getws.md
@@ -1,9 +1,10 @@
---
title: "gets, _getws"
ms.date: "11/04/2016"
-apiname: ["_getws", "gets"]
-apilocation: ["msvcr80.dll", "msvcr90.dll", "msvcr120.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr100.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getws", "gets"]
+api_location: ["msvcr80.dll", "msvcr90.dll", "msvcr120.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr100.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getts", "gets", "_getws"]
helpviewer_keywords: ["getws function", "getts function", "_getws function", "lines, getting", "streams, getting lines", "_getts function", "gets function", "standard input, reading from"]
ms.assetid: 1ec2dd4b-f801-48ea-97c2-892590f16024
@@ -72,7 +73,7 @@ For additional compatibility information, see [Compatibility](../c-runtime-libra
## Example
-```
+```c
// crt_gets.c
// compile with: /WX /W3
diff --git a/docs/c-runtime-library/heapadd.md b/docs/c-runtime-library/heapadd.md
index 4eb1dedbe1..385f873bc4 100644
--- a/docs/c-runtime-library/heapadd.md
+++ b/docs/c-runtime-library/heapadd.md
@@ -1,9 +1,10 @@
---
title: "_heapadd"
ms.date: "11/04/2016"
-apiname: ["_heapadd"]
-apilocation: ["msvcr100.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr80.dll", "msvcrt.dll", "msvcr110.dll", "msvcr90.dll"]
-apitype: "DLLExport"
+api_name: ["_heapadd"]
+api_location: ["msvcr100.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr80.dll", "msvcrt.dll", "msvcr110.dll", "msvcr90.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["heapadd", "_heapadd"]
helpviewer_keywords: ["_heapadd function", "memory, adding to heaps", "heaps, adding memory", "heapadd function"]
ms.assetid: 4d691fe2-2763-49f4-afb1-62738b7cd3ff
diff --git a/docs/c-runtime-library/heapset.md b/docs/c-runtime-library/heapset.md
index bc37222428..78f0c65003 100644
--- a/docs/c-runtime-library/heapset.md
+++ b/docs/c-runtime-library/heapset.md
@@ -1,9 +1,10 @@
---
title: "_heapset"
ms.date: "11/04/2016"
-apiname: ["_heapset"]
-apilocation: ["msvcr90.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll"]
-apitype: "DLLExport"
+api_name: ["_heapset"]
+api_location: ["msvcr90.dll", "msvcr80.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_heapset", "heapset"]
helpviewer_keywords: ["checking heap", "heapset function", "heaps, checking", "debugging [CRT], heap-related problems", "_heapset function"]
ms.assetid: 9667eeb0-55bc-4c19-af5f-d1fd0a142b3c
@@ -57,7 +58,7 @@ For more compatibility information, see [Compatibility](../c-runtime-library/com
## Example
-```
+```c
// crt_heapset.c
// This program checks the heap and
// fills in free entries with the character 'Z'.
diff --git a/docs/c-runtime-library/huge-val-huge.md b/docs/c-runtime-library/huge-val-huge.md
index 09115bebe6..f6554941fc 100644
--- a/docs/c-runtime-library/huge-val-huge.md
+++ b/docs/c-runtime-library/huge-val-huge.md
@@ -1,9 +1,10 @@
---
title: "HUGE_VAL, _HUGE"
ms.date: "11/04/2016"
-apiname: ["_HUGE"]
-apilocation: ["msvcrt.dll"]
-apitype: "DLLExport"
+api_name: ["_HUGE"]
+api_location: ["msvcrt.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_HUGE", "HUGE_VAL"]
helpviewer_keywords: ["_HUGE constant", "HUGE_VAL constant", "double value"]
ms.assetid: 3f044b45-02cd-46b2-b1de-87fd0441dd6a
diff --git a/docs/c-runtime-library/inp-inpw-inpd.md b/docs/c-runtime-library/inp-inpw-inpd.md
index a5a03e556e..e6ff25472b 100644
--- a/docs/c-runtime-library/inp-inpw-inpd.md
+++ b/docs/c-runtime-library/inp-inpw-inpd.md
@@ -1,26 +1,26 @@
---
-title: "_inp, _inpw, _inpd"
-ms.date: "11/04/2016"
-apiname: ["_inp", "_inpw", "_inpd"]
-apilocation: ["msvcrt.dll", "msvcr120.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll", "msvcr100.dll", "msvcr90.dll"]
-apitype: "DLLExport"
-f1_keywords: ["inpd", "_inp", "_inpw", "_inpd"]
+title: "inp, _inp, inpw, _inpw, _inpd"
+description: "Describes the obsolete and removed inp, _inp, inpw, _inpw, and _inpd functions of the Microsoft C runtime library (CRT)."
+ms.date: "12/09/2019"
+api_name: ["inp", "inpw", "_inp", "_inpw", "_inpd"]
+api_location: ["msvcrt.dll", "msvcr120.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll", "msvcr100.dll", "msvcr90.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
+f1_keywords: ["inp", "inpw", "_inp", "_inpw", "_inpd"]
helpviewer_keywords: ["inp function", "inpw function", "ports, I/O routines", "inpd function", "_inp function", "_inpd function", "I/O [CRT], port", "_inpw function"]
ms.assetid: 5d9c2e38-fc85-4294-86d5-7282cc02d1b3
---
-# _inp, _inpw, _inpd
+# inp, _inp, inpw, _inpw, _inpd
-Inputs, from a port, a byte (`_inp`), a word (`_inpw`), or a double word (`_inpd`).
+Inputs, from a port, a byte (`inp`, `_inp`), a word (`inpw`, `_inpw`), or a double word (`_inpd`).
> [!IMPORTANT]
-> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT.
-
-> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
+> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT.
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
## Syntax
-```
+```cpp
int _inp(
unsigned short port
);
@@ -32,9 +32,9 @@ unsigned long _inpd(
);
```
-#### Parameters
+### Parameters
-*port*
+*port*\
I/O port number.
## Return Value
@@ -47,6 +47,8 @@ The `_inp`, `_inpw`, and `_inpd` functions read a byte, a word, and a double wor
Because these functions read directly from an I/O port, they cannot be used in user code.
+The `inp` and `inpw` names are older, deprecated names for the `_inp` and `_inpw` functions. For more information, see [POSIX function names](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
+
## Requirements
|Routine|Required header|
@@ -63,5 +65,5 @@ All versions of the [C run-time libraries](../c-runtime-library/crt-library-feat
## See also
-[Console and Port I/O](../c-runtime-library/console-and-port-i-o.md)
-[_outp, _outpw, _outpd](../c-runtime-library/outp-outpw-outpd.md)
+[Console and Port I/O](../c-runtime-library/console-and-port-i-o.md)\
+[outp, outpw, _outp, _outpw, _outpd](../c-runtime-library/outp-outpw-outpd.md)
diff --git a/docs/c-runtime-library/inp-inpw.md b/docs/c-runtime-library/inp-inpw.md
deleted file mode 100644
index 6ced447fd0..0000000000
--- a/docs/c-runtime-library/inp-inpw.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: "inp, inpw"
-ms.date: "11/04/2016"
-apiname: ["inp", "inpw"]
-apilocation: ["msvcr110_clr0400.dll", "msvcr80.dll", "msvcr110.dll", "msvcr120.dll", "msvcr100.dll", "msvcr90.dll", "msvcrt.dll"]
-apitype: "DLLExport"
-f1_keywords: ["inpw", "inp"]
-helpviewer_keywords: ["inp function", "inpw function"]
-ms.assetid: c7e1eeac-77cd-47ff-b843-4095b4c31d3b
----
-# inp, inpw
-
-These POSIX functions are deprecated. Use the ISO C++ conformant [_inp, _inpw, _inpd](../c-runtime-library/inp-inpw-inpd.md) instead.
-
-> [!IMPORTANT]
-> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT.
-
-> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
diff --git a/docs/c-runtime-library/internal-crt-globals-and-functions.md b/docs/c-runtime-library/internal-crt-globals-and-functions.md
index 6b762d8220..c55bf020a4 100644
--- a/docs/c-runtime-library/internal-crt-globals-and-functions.md
+++ b/docs/c-runtime-library/internal-crt-globals-and-functions.md
@@ -1,9 +1,10 @@
---
title: "Internal CRT Globals and Functions"
ms.date: "01/22/2019"
-apiname: ["__acrt_iob_func", "__AdjustPointer", "_assert", "__badioinfo", "__BuildCatchObject", "__BuildCatchObjectHelper", "__C_specific_handler", "_calloc_base", "_chkesp", "__chkstk", "_chkstk", "_chvalidator", "_chvalidator_l", "_CIacos", "_CIasin", "_CIcosh", "_CIsinh", "_CItanh", "__clean_type_info_names_internal", "_commode", "_configure_narrow_argv", "_configure_wide_argv", "__conio_common_vcprintf", "__conio_common_vcprintf_p", "__conio_common_vcprintf_s", "__conio_common_vcscanf", "__conio_common_vcwprintf", "__conio_common_vcwprintf_p", "__conio_common_vcwprintf_s", "__conio_common_vcwscanf", "__CppXcptFilter", "__create_locale", "_crt_at_quick_exit", "_crt_atexit", "_crtAssertBusy", "_crtBreakAlloc", "__crtCompareStringA", "__crtCompareStringEx", "__crtCompareStringW", "__crtCreateEventExW", "__crtCreateSemaphoreExW", "__crtCreateSymbolicLinkW", "_crt_debugger_hook", "__crtEnumSystemLocalesEx", "__crtFlsAlloc", "__crtFlsFree", "__crtFlsGetValue", "__crtFlsSetValue", "_CrtGetCheckCount", "__crtGetDateFormatEx", "__crtGetFileInformationByHandleEx", "__crtGetLocaleInfoEx", "__crtGetShowWindowMode", "__crtGetTickCount64", "__crtGetTimeFormatEx", "__crtGetUserDefaultLocaleName", "__crtInitializeCriticalSectionEx", "__crtIsPackagedApp", "__crtIsValidLocaleName", "__crtLCMapStringA", "__crtLCMapStringEx", "_CrtSetCheckCount", "_CrtSetDbgBlockType", "__crtSetFileInformationByHandle", "__crtSetThreadStackGuarantee", "__crtSetUnhandledExceptionFilter", "__crtSleep", "__crtTerminateProcess", "__crtUnhandledException", "__CxxDetectRethrow", "__CxxExceptionFilter", "__CxxFrameHandler2", "__CxxFrameHandler3", "__CxxLongjmpUnwind", "__CxxQueryExceptionSize", "__CxxRegisterExceptionObject", "_CxxThrowException", "__CxxUnregisterExceptionObject", "__daylight", "_dclass", "__DestructExceptionObject", "__doserrno", "_dosmaperr", "_dpcomp", "_dsign", "__dstbias", "_dtest", "_EH_prolog", "_errno", "_except_handler2", "_except_handler4_common", "_except1", "_fdclass", "_fdpcomp", "_fdsign", "_fdtest", "_filbuf", "_FindAndUnlinkFrame", "_flsbuf", "__fpe_flt_rounds", "_FPE_Raise", "__fpecode", "__FrameUnwindFilter", "_fread_nolock_s", "_free_base", "__free_locale", "_freea_s", "_freefls", "_ftol", "__get_current_locale", "__get_flsindex", "_get_initial_narrow_environment", "_get_initial_wide_environment", "_get_narrow_winmain_command_line", "_get_stream_buffer_pointers", "__get_tlsindex", "_get_wide_winmain_command_line", "_Getdays", "_Getmonths", "__GetPlatformExceptionInfo", "_getptd", "_Gettnames", "_global_unwind2", "_inconsistency", "__initenv", "_initialize_lconv_for_unsigned_char", "_initialize_narrow_environment", "_initialize_wide_environment", "_initptd", "_invalid_parameter", "_invoke_watson", "__iob_func", "_IsExceptionObjectToBeDestroyed", "__lconv", "__lconv_init", "_ldclass", "_ldpcomp", "_ldsign", "_ldtest", "__libm_sse2_acos", "_libm_sse2_acos_precise", "__libm_sse2_acosf", "__libm_sse2_asin", "_libm_sse2_asin_precise", "__libm_sse2_asinf", "__libm_sse2_atan", "_libm_sse2_atan_precise", "__libm_sse2_atan2", "__libm_sse2_atanf", "__libm_sse2_cos", "_libm_sse2_cos_precise", "__libm_sse2_cosf", "__libm_sse2_exp", "_libm_sse2_exp_precise", "__libm_sse2_expf", "__libm_sse2_log", "_libm_sse2_log_precise", "__libm_sse2_log10", "_libm_sse2_log10_precise", "__libm_sse2_log10f", "__libm_sse2_logf", "__libm_sse2_pow", "_libm_sse2_pow_precise", "__libm_sse2_powf", "__libm_sse2_sin", "_libm_sse2_sin_precise", "__libm_sse2_sinf", "_libm_sse2_sqrt_precise", "__libm_sse2_tan", "_libm_sse2_tan_precise", "__libm_sse2_tanf", "_local_unwind4", "_lock_locales", "_longjmpex", "_malloc_base", "_mbctype", "_NLG_Dispatch2", "_NLG_Return", "_NLG_Return2", "__p___argc", "__p___argv", "__p___initenv", "__p___wargv", "__p___winitenv", "__p__acmdln", "__p__crtAssertBusy", "__p__crtBreakAlloc", "__p__crtDbgFlag", "__p__daylight", "__p__dstbias", "__p__environ", "__p__iob", "__p__mbcasemap", "__p__mbctype", "__p__pctype", "__p__pgmptr", "__p__pwctype", "__p__timezone", "__p__tzname", "__p__wcmdln", "__p__wenviron", "__p__wpgmptr", "_pctype", "__pioinfo", "_pwctype", "__pwctype_func", "__pxcptinfoptrs", "_query_app_type", "_realloc_base", "_register_thread_local_exe_atexit_callback", "__report_gsfailure", "__RTCastToVoid", "__RTtypeid", "_seh_filter_dll", "_seh_filter_exe", "_seh_longjmp_unwind", "_seh_longjmp_unwind4", "_set_malloc_crt_max_wait", "__setlc_active", "_SetWinRTOutOfMemoryExceptionCallback", "_sopen_dispatch", "__std_exception_copy", "__std_exception_destroy", "__std_type_info_destroy_list", "__stdio_common_vfprintf", "__stdio_common_vfprintf_p", "__stdio_common_vfprintf_s", "__stdio_common_vfscanf", "__stdio_common_vfwprintf", "__stdio_common_vfwprintf_p", "__stdio_common_vfwprintf_s", "__stdio_common_vfwscanf", "__stdio_common_vsnprintf_s", "__stdio_common_vsnwprintf_s", "__stdio_common_vsprintf", "__stdio_common_vsprintf_p", "__stdio_common_vsprintf_s", "__stdio_common_vsscanf", "__stdio_common_vswprintf", "__stdio_common_vswprintf_p", "__stdio_common_vswprintf_s", "__stdio_common_vswscanf", "_Strftime", "__STRINGTOLD", "__STRINGTOLD_L", "__strncnt", "__sys_errlist", "__sys_nerr", "__threadhandle", "__threadid", "__timezone", "__TypeMatch", "__tzname", "__unDName", "__unDNameEx", "__unDNameHelper", "__unguarded_readlc_active", "_unloaddll", "_unlock_locales", "_vacopy", "_ValidateExecute", "_ValidateRead", "_ValidateWrite", "_VCrtDbgReportA", "_VCrtDbgReportW", "_W_Getdays", "_W_Getmonths", "_W_Getnames", "_wassert", "_Wcsftime", "__wcsncnt", "__winitenv", "_wsopen_dispatch", "_Xbad_alloc", "_Xlength_error"]
-apilocation: ["api-ms-win-crt-math-l1-1-0.dll", "api-ms-win-crt-heap-l1-1-0.dll", "api-ms-win-crt-runtime-l1-1-0.dll", "api-ms-win-crt-stdio-l1-1-0.dll", "api-ms-win-crt-locale-l1-1-0.dll", "api-ms-win-core-crt-l1-1-0.dll", "api-ms-win-crt-time-l1-1-0.dll", "api-ms-win-crt-process-l1-1-0.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-private-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "api-ms-win-crt-conio-l1-1-0.dll", "vcruntime140_app.dll", "msvcp140_app.dll", "ntdll.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["__acrt_iob_func", "__AdjustPointer", "_assert", "__badioinfo", "__BuildCatchObject", "__BuildCatchObjectHelper", "__C_specific_handler", "_calloc_base", "_chkesp", "__chkstk", "_chkstk", "_chvalidator", "_chvalidator_l", "_CIacos", "_CIasin", "_CIcosh", "_CIsinh", "_CItanh", "__clean_type_info_names_internal", "_commode", "_configure_narrow_argv", "_configure_wide_argv", "__conio_common_vcprintf", "__conio_common_vcprintf_p", "__conio_common_vcprintf_s", "__conio_common_vcscanf", "__conio_common_vcwprintf", "__conio_common_vcwprintf_p", "__conio_common_vcwprintf_s", "__conio_common_vcwscanf", "__CppXcptFilter", "__create_locale", "_crt_at_quick_exit", "_crt_atexit", "_crtAssertBusy", "_crtBreakAlloc", "__crtCompareStringA", "__crtCompareStringEx", "__crtCompareStringW", "__crtCreateEventExW", "__crtCreateSemaphoreExW", "__crtCreateSymbolicLinkW", "_crt_debugger_hook", "__crtEnumSystemLocalesEx", "__crtFlsAlloc", "__crtFlsFree", "__crtFlsGetValue", "__crtFlsSetValue", "_CrtGetCheckCount", "__crtGetDateFormatEx", "__crtGetFileInformationByHandleEx", "__crtGetLocaleInfoEx", "__crtGetShowWindowMode", "__crtGetTickCount64", "__crtGetTimeFormatEx", "__crtGetUserDefaultLocaleName", "__crtInitializeCriticalSectionEx", "__crtIsPackagedApp", "__crtIsValidLocaleName", "__crtLCMapStringA", "__crtLCMapStringEx", "_CrtSetCheckCount", "_CrtSetDbgBlockType", "__crtSetFileInformationByHandle", "__crtSetThreadStackGuarantee", "__crtSetUnhandledExceptionFilter", "__crtSleep", "__crtTerminateProcess", "__crtUnhandledException", "__CxxDetectRethrow", "__CxxExceptionFilter", "__CxxFrameHandler2", "__CxxFrameHandler3", "__CxxLongjmpUnwind", "__CxxQueryExceptionSize", "__CxxRegisterExceptionObject", "_CxxThrowException", "__CxxUnregisterExceptionObject", "__daylight", "_dclass", "__DestructExceptionObject", "__doserrno", "_dosmaperr", "_dpcomp", "_dsign", "__dstbias", "_dtest", "_EH_prolog", "_errno", "_except_handler2", "_except_handler4_common", "_except1", "_fdclass", "_fdpcomp", "_fdsign", "_fdtest", "_filbuf", "_FindAndUnlinkFrame", "_flsbuf", "__fpe_flt_rounds", "_FPE_Raise", "__fpecode", "__FrameUnwindFilter", "_fread_nolock_s", "_free_base", "__free_locale", "_freea_s", "_freefls", "_ftol", "__get_current_locale", "__get_flsindex", "_get_initial_narrow_environment", "_get_initial_wide_environment", "_get_narrow_winmain_command_line", "_get_stream_buffer_pointers", "__get_tlsindex", "_get_wide_winmain_command_line", "_Getdays", "_Getmonths", "__GetPlatformExceptionInfo", "_getptd", "_Gettnames", "_global_unwind2", "_inconsistency", "__initenv", "_initialize_lconv_for_unsigned_char", "_initialize_narrow_environment", "_initialize_wide_environment", "_initptd", "_invalid_parameter", "_invoke_watson", "__iob_func", "_IsExceptionObjectToBeDestroyed", "__lconv", "__lconv_init", "_ldclass", "_ldpcomp", "_ldsign", "_ldtest", "__libm_sse2_acos", "_libm_sse2_acos_precise", "__libm_sse2_acosf", "__libm_sse2_asin", "_libm_sse2_asin_precise", "__libm_sse2_asinf", "__libm_sse2_atan", "_libm_sse2_atan_precise", "__libm_sse2_atan2", "__libm_sse2_atanf", "__libm_sse2_cos", "_libm_sse2_cos_precise", "__libm_sse2_cosf", "__libm_sse2_exp", "_libm_sse2_exp_precise", "__libm_sse2_expf", "__libm_sse2_log", "_libm_sse2_log_precise", "__libm_sse2_log10", "_libm_sse2_log10_precise", "__libm_sse2_log10f", "__libm_sse2_logf", "__libm_sse2_pow", "_libm_sse2_pow_precise", "__libm_sse2_powf", "__libm_sse2_sin", "_libm_sse2_sin_precise", "__libm_sse2_sinf", "_libm_sse2_sqrt_precise", "__libm_sse2_tan", "_libm_sse2_tan_precise", "__libm_sse2_tanf", "_local_unwind4", "_lock_locales", "_longjmpex", "_malloc_base", "_mbctype", "_NLG_Dispatch2", "_NLG_Return", "_NLG_Return2", "__p___argc", "__p___argv", "__p___initenv", "__p___wargv", "__p___winitenv", "__p__acmdln", "__p__crtAssertBusy", "__p__crtBreakAlloc", "__p__crtDbgFlag", "__p__daylight", "__p__dstbias", "__p__environ", "__p__iob", "__p__mbcasemap", "__p__mbctype", "__p__pctype", "__p__pgmptr", "__p__pwctype", "__p__timezone", "__p__tzname", "__p__wcmdln", "__p__wenviron", "__p__wpgmptr", "_pctype", "__pioinfo", "_pwctype", "__pwctype_func", "__pxcptinfoptrs", "_query_app_type", "_realloc_base", "_register_thread_local_exe_atexit_callback", "__report_gsfailure", "__RTCastToVoid", "__RTtypeid", "_seh_filter_dll", "_seh_filter_exe", "_seh_longjmp_unwind", "_seh_longjmp_unwind4", "_set_malloc_crt_max_wait", "__setlc_active", "_SetWinRTOutOfMemoryExceptionCallback", "_sopen_dispatch", "__std_exception_copy", "__std_exception_destroy", "__std_type_info_destroy_list", "__stdio_common_vfprintf", "__stdio_common_vfprintf_p", "__stdio_common_vfprintf_s", "__stdio_common_vfscanf", "__stdio_common_vfwprintf", "__stdio_common_vfwprintf_p", "__stdio_common_vfwprintf_s", "__stdio_common_vfwscanf", "__stdio_common_vsnprintf_s", "__stdio_common_vsnwprintf_s", "__stdio_common_vsprintf", "__stdio_common_vsprintf_p", "__stdio_common_vsprintf_s", "__stdio_common_vsscanf", "__stdio_common_vswprintf", "__stdio_common_vswprintf_p", "__stdio_common_vswprintf_s", "__stdio_common_vswscanf", "_Strftime", "__STRINGTOLD", "__STRINGTOLD_L", "__strncnt", "__sys_errlist", "__sys_nerr", "__threadhandle", "__threadid", "__timezone", "__TypeMatch", "__tzname", "__unDName", "__unDNameEx", "__unDNameHelper", "__unguarded_readlc_active", "_unloaddll", "_unlock_locales", "_vacopy", "_ValidateExecute", "_ValidateRead", "_ValidateWrite", "_VCrtDbgReportA", "_VCrtDbgReportW", "_W_Getdays", "_W_Getmonths", "_W_Getnames", "_wassert", "_Wcsftime", "__wcsncnt", "__winitenv", "_wsopen_dispatch", "_Xbad_alloc", "_Xlength_error"]
+api_location: ["api-ms-win-crt-math-l1-1-0.dll", "api-ms-win-crt-heap-l1-1-0.dll", "api-ms-win-crt-runtime-l1-1-0.dll", "api-ms-win-crt-stdio-l1-1-0.dll", "api-ms-win-crt-locale-l1-1-0.dll", "api-ms-win-core-crt-l1-1-0.dll", "api-ms-win-crt-time-l1-1-0.dll", "api-ms-win-crt-process-l1-1-0.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-private-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "api-ms-win-crt-conio-l1-1-0.dll", "vcruntime140_app.dll", "msvcp140_app.dll", "ntdll.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__acrt_iob_func", "__AdjustPointer", "_assert", "__badioinfo", "__BuildCatchObject", "__BuildCatchObjectHelper", "__C_specific_handler", "_calloc_base", "_chkesp", "__chkstk", "_chkstk", "_chvalidator", "_chvalidator_l", "_CIacos", "_CIasin", "_CIcosh", "_CIsinh", "_CItanh", "__clean_type_info_names_internal", "_commode", "_configure_narrow_argv", "_configure_wide_argv", "__conio_common_vcprintf", "__conio_common_vcprintf_p", "__conio_common_vcprintf_s", "__conio_common_vcscanf", "__conio_common_vcwprintf", "__conio_common_vcwprintf_p", "__conio_common_vcwprintf_s", "__conio_common_vcwscanf", "__CppXcptFilter", "__create_locale", "_crt_at_quick_exit", "_crt_atexit", "_crtAssertBusy", "_crtBreakAlloc", "__crtCompareStringA", "__crtCompareStringEx", "__crtCompareStringW", "__crtCreateEventExW", "__crtCreateSemaphoreExW", "__crtCreateSymbolicLinkW", "_crt_debugger_hook", "__crtEnumSystemLocalesEx", "__crtFlsAlloc", "__crtFlsFree", "__crtFlsGetValue", "__crtFlsSetValue", "_CrtGetCheckCount", "__crtGetDateFormatEx", "__crtGetFileInformationByHandleEx", "__crtGetLocaleInfoEx", "__crtGetShowWindowMode", "__crtGetTickCount64", "__crtGetTimeFormatEx", "__crtGetUserDefaultLocaleName", "__crtInitializeCriticalSectionEx", "__crtIsPackagedApp", "__crtIsValidLocaleName", "__crtLCMapStringA", "__crtLCMapStringEx", "_CrtSetCheckCount", "_CrtSetDbgBlockType", "__crtSetFileInformationByHandle", "__crtSetThreadStackGuarantee", "__crtSetUnhandledExceptionFilter", "__crtSleep", "__crtTerminateProcess", "__crtUnhandledException", "__CxxDetectRethrow", "__CxxExceptionFilter", "__CxxFrameHandler2", "__CxxFrameHandler3", "__CxxLongjmpUnwind", "__CxxQueryExceptionSize", "__CxxRegisterExceptionObject", "_CxxThrowException", "__CxxUnregisterExceptionObject", "__daylight", "_dclass", "__DestructExceptionObject", "__doserrno", "_dosmaperr", "_dpcomp", "_dsign", "__dstbias", "_dtest", "_EH_prolog", "_errno", "_except_handler2", "_except_handler4_common", "_except1", "_fdclass", "_fdpcomp", "_fdsign", "_fdtest", "_filbuf", "_FindAndUnlinkFrame", "_flsbuf", "__fpe_flt_rounds", "_FPE_Raise", "__fpecode", "__FrameUnwindFilter", "_fread_nolock_s", "_free_base", "__free_locale", "_freea_s", "_freefls", "_ftol", "__get_current_locale", "__get_flsindex", "_get_initial_narrow_environment", "_get_initial_wide_environment", "_get_narrow_winmain_command_line", "_get_stream_buffer_pointers", "__get_tlsindex", "_get_wide_winmain_command_line", "_Getdays", "_Getmonths", "__GetPlatformExceptionInfo", "_getptd", "_Gettnames", "_global_unwind2", "_inconsistency", "__initenv", "_initialize_lconv_for_unsigned_char", "_initialize_narrow_environment", "_initialize_wide_environment", "_initptd", "_invalid_parameter", "_invoke_watson", "__iob_func", "_IsExceptionObjectToBeDestroyed", "__lconv", "__lconv_init", "_ldclass", "_ldpcomp", "_ldsign", "_ldtest", "__libm_sse2_acos", "_libm_sse2_acos_precise", "__libm_sse2_acosf", "__libm_sse2_asin", "_libm_sse2_asin_precise", "__libm_sse2_asinf", "__libm_sse2_atan", "_libm_sse2_atan_precise", "__libm_sse2_atan2", "__libm_sse2_atanf", "__libm_sse2_cos", "_libm_sse2_cos_precise", "__libm_sse2_cosf", "__libm_sse2_exp", "_libm_sse2_exp_precise", "__libm_sse2_expf", "__libm_sse2_log", "_libm_sse2_log_precise", "__libm_sse2_log10", "_libm_sse2_log10_precise", "__libm_sse2_log10f", "__libm_sse2_logf", "__libm_sse2_pow", "_libm_sse2_pow_precise", "__libm_sse2_powf", "__libm_sse2_sin", "_libm_sse2_sin_precise", "__libm_sse2_sinf", "_libm_sse2_sqrt_precise", "__libm_sse2_tan", "_libm_sse2_tan_precise", "__libm_sse2_tanf", "_local_unwind4", "_lock_locales", "_longjmpex", "_malloc_base", "_mbctype", "_NLG_Dispatch2", "_NLG_Return", "_NLG_Return2", "__p___argc", "__p___argv", "__p___initenv", "__p___wargv", "__p___winitenv", "__p__acmdln", "__p__crtAssertBusy", "__p__crtBreakAlloc", "__p__crtDbgFlag", "__p__daylight", "__p__dstbias", "__p__environ", "__p__iob", "__p__mbcasemap", "__p__mbctype", "__p__pctype", "__p__pgmptr", "__p__pwctype", "__p__timezone", "__p__tzname", "__p__wcmdln", "__p__wenviron", "__p__wpgmptr", "_pctype", "__pioinfo", "_pwctype", "__pwctype_func", "__pxcptinfoptrs", "_query_app_type", "_realloc_base", "_register_thread_local_exe_atexit_callback", "__report_gsfailure", "__RTCastToVoid", "__RTtypeid", "_seh_filter_dll", "_seh_filter_exe", "_seh_longjmp_unwind", "_seh_longjmp_unwind4", "_set_malloc_crt_max_wait", "__setlc_active", "_SetWinRTOutOfMemoryExceptionCallback", "_sopen_dispatch", "__std_exception_copy", "__std_exception_destroy", "__std_type_info_destroy_list", "__stdio_common_vfprintf", "__stdio_common_vfprintf_p", "__stdio_common_vfprintf_s", "__stdio_common_vfscanf", "__stdio_common_vfwprintf", "__stdio_common_vfwprintf_p", "__stdio_common_vfwprintf_s", "__stdio_common_vfwscanf", "__stdio_common_vsnprintf_s", "__stdio_common_vsnwprintf_s", "__stdio_common_vsprintf", "__stdio_common_vsprintf_p", "__stdio_common_vsprintf_s", "__stdio_common_vsscanf", "__stdio_common_vswprintf", "__stdio_common_vswprintf_p", "__stdio_common_vswprintf_s", "__stdio_common_vswscanf", "_Strftime", "__STRINGTOLD", "__STRINGTOLD_L", "__strncnt", "__sys_errlist", "__sys_nerr", "__threadhandle", "__threadid", "__timezone", "__TypeMatch", "__tzname", "__unDName", "__unDNameEx", "__unDNameHelper", "__unguarded_readlc_active", "_unloaddll", "_unlock_locales", "_vacopy", "_ValidateExecute", "_ValidateRead", "_ValidateWrite", "_VCrtDbgReportA", "_VCrtDbgReportW", "_W_Getdays", "_W_Getmonths", "_W_Getnames", "_wassert", "_Wcsftime", "__wcsncnt", "__winitenv", "_wsopen_dispatch", "_Xbad_alloc", "_Xlength_error"]
helpviewer_keywords: ["__acrt_iob_func", "__AdjustPointer", "_assert", "__badioinfo", "__BuildCatchObject", "__BuildCatchObjectHelper", "__C_specific_handler", "_calloc_base", "_chkesp", "__chkstk", "_chkstk", "_chvalidator", "_chvalidator_l", "_CIacos", "_CIasin", "_CIcosh", "_CIsinh", "_CItanh", "__clean_type_info_names_internal", "_commode", "_configure_narrow_argv", "_configure_wide_argv", "__conio_common_vcprintf", "__conio_common_vcprintf_p", "__conio_common_vcprintf_s", "__conio_common_vcscanf", "__conio_common_vcwprintf", "__conio_common_vcwprintf_p", "__conio_common_vcwprintf_s", "__conio_common_vcwscanf", "__CppXcptFilter", "__create_locale", "_crt_at_quick_exit", "_crt_atexit", "_crtAssertBusy", "_crtBreakAlloc", "__crtCompareStringA", "__crtCompareStringEx", "__crtCompareStringW", "__crtCreateEventExW", "__crtCreateSemaphoreExW", "__crtCreateSymbolicLinkW", "_crt_debugger_hook", "__crtEnumSystemLocalesEx", "__crtFlsAlloc", "__crtFlsFree", "__crtFlsGetValue", "__crtFlsSetValue", "_CrtGetCheckCount", "__crtGetDateFormatEx", "__crtGetFileInformationByHandleEx", "__crtGetLocaleInfoEx", "__crtGetShowWindowMode", "__crtGetTickCount64", "__crtGetTimeFormatEx", "__crtGetUserDefaultLocaleName", "__crtInitializeCriticalSectionEx", "__crtIsPackagedApp", "__crtIsValidLocaleName", "__crtLCMapStringA", "__crtLCMapStringEx", "_CrtSetCheckCount", "_CrtSetDbgBlockType", "__crtSetFileInformationByHandle", "__crtSetThreadStackGuarantee", "__crtSetUnhandledExceptionFilter", "__crtSleep", "__crtTerminateProcess", "__crtUnhandledException", "__CxxDetectRethrow", "__CxxExceptionFilter", "__CxxFrameHandler2", "__CxxFrameHandler3", "__CxxLongjmpUnwind", "__CxxQueryExceptionSize", "__CxxRegisterExceptionObject", "_CxxThrowException", "__CxxUnregisterExceptionObject", "__daylight", "_dclass", "__DestructExceptionObject", "__doserrno", "_dosmaperr", "_dpcomp", "_dsign", "__dstbias", "_dtest", "_EH_prolog", "_errno", "_except_handler2", "_except_handler4_common", "_except1", "_fdclass", "_fdpcomp", "_fdsign", "_fdtest", "_filbuf", "_FindAndUnlinkFrame", "_flsbuf", "__fpe_flt_rounds", "_FPE_Raise", "__fpecode", "__FrameUnwindFilter", "_fread_nolock_s", "_free_base", "__free_locale", "_freea_s", "_freefls", "_ftol", "__get_current_locale", "__get_flsindex", "_get_initial_narrow_environment", "_get_initial_wide_environment", "_get_narrow_winmain_command_line", "_get_stream_buffer_pointers", "__get_tlsindex", "_get_wide_winmain_command_line", "_Getdays", "_Getmonths", "__GetPlatformExceptionInfo", "_getptd", "_Gettnames", "_global_unwind2", "_inconsistency", "__initenv", "_initialize_lconv_for_unsigned_char", "_initialize_narrow_environment", "_initialize_wide_environment", "_initptd", "_invalid_parameter", "_invoke_watson", "__iob_func", "_IsExceptionObjectToBeDestroyed", "__lconv", "__lconv_init", "_ldclass", "_ldpcomp", "_ldsign", "_ldtest", "__libm_sse2_acos", "_libm_sse2_acos_precise", "__libm_sse2_acosf", "__libm_sse2_asin", "_libm_sse2_asin_precise", "__libm_sse2_asinf", "__libm_sse2_atan", "_libm_sse2_atan_precise", "__libm_sse2_atan2", "__libm_sse2_atanf", "__libm_sse2_cos", "_libm_sse2_cos_precise", "__libm_sse2_cosf", "__libm_sse2_exp", "_libm_sse2_exp_precise", "__libm_sse2_expf", "__libm_sse2_log", "_libm_sse2_log_precise", "__libm_sse2_log10", "_libm_sse2_log10_precise", "__libm_sse2_log10f", "__libm_sse2_logf", "__libm_sse2_pow", "_libm_sse2_pow_precise", "__libm_sse2_powf", "__libm_sse2_sin", "_libm_sse2_sin_precise", "__libm_sse2_sinf", "_libm_sse2_sqrt_precise", "__libm_sse2_tan", "_libm_sse2_tan_precise", "__libm_sse2_tanf", "_local_unwind4", "_lock_locales", "_longjmpex", "_malloc_base", "_mbctype", "_NLG_Dispatch2", "_NLG_Return", "_NLG_Return2", "__p___argc", "__p___argv", "__p___initenv", "__p___wargv", "__p___winitenv", "__p__acmdln", "__p__crtAssertBusy", "__p__crtBreakAlloc", "__p__crtDbgFlag", "__p__daylight", "__p__dstbias", "__p__environ", "__p__iob", "__p__mbcasemap", "__p__mbctype", "__p__pctype", "__p__pgmptr", "__p__pwctype", "__p__timezone", "__p__tzname", "__p__wcmdln", "__p__wenviron", "__p__wpgmptr", "_pctype", "__pioinfo", "_pwctype", "__pwctype_func", "__pxcptinfoptrs", "_query_app_type", "_realloc_base", "_register_thread_local_exe_atexit_callback", "__report_gsfailure", "__RTCastToVoid", "__RTtypeid", "_seh_filter_dll", "_seh_filter_exe", "_seh_longjmp_unwind", "_seh_longjmp_unwind4", "_set_malloc_crt_max_wait", "__setlc_active", "_SetWinRTOutOfMemoryExceptionCallback", "_sopen_dispatch", "__std_exception_copy", "__std_exception_destroy", "__std_type_info_destroy_list", "__stdio_common_vfprintf", "__stdio_common_vfprintf_p", "__stdio_common_vfprintf_s", "__stdio_common_vfscanf", "__stdio_common_vfwprintf", "__stdio_common_vfwprintf_p", "__stdio_common_vfwprintf_s", "__stdio_common_vfwscanf", "__stdio_common_vsnprintf_s", "__stdio_common_vsnwprintf_s", "__stdio_common_vsprintf", "__stdio_common_vsprintf_p", "__stdio_common_vsprintf_s", "__stdio_common_vsscanf", "__stdio_common_vswprintf", "__stdio_common_vswprintf_p", "__stdio_common_vswprintf_s", "__stdio_common_vswscanf", "_Strftime", "__STRINGTOLD", "__STRINGTOLD_L", "__strncnt", "__sys_errlist", "__sys_nerr", "__threadhandle", "__threadid", "__timezone", "__TypeMatch", "__tzname", "__unDName", "__unDNameEx", "__unDNameHelper", "__unguarded_readlc_active", "_unloaddll", "_unlock_locales", "_vacopy", "_ValidateExecute", "_ValidateRead", "_ValidateWrite", "_VCrtDbgReportA", "_VCrtDbgReportW", "_W_Getdays", "_W_Getmonths", "_W_Getnames", "_wassert", "_Wcsftime", "__wcsncnt", "__winitenv", "_wsopen_dispatch", "_Xbad_alloc", "_Xlength_error"]
ms.assetid: 99a27f11-fa5a-449e-bfbb-aab578d1cc4f
diff --git a/docs/c-runtime-library/internal-set-app-type.md b/docs/c-runtime-library/internal-set-app-type.md
index cd30dd85ac..1219c451ca 100644
--- a/docs/c-runtime-library/internal-set-app-type.md
+++ b/docs/c-runtime-library/internal-set-app-type.md
@@ -1,9 +1,10 @@
---
title: "__set_app_type"
ms.date: "11/04/2016"
-apiname: ["__set_app_type", "_set_app_type"]
-apilocation: ["msvcr90.dll", "msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcrt.dll", "msvcr120.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["__set_app_type", "_set_app_type"]
+api_location: ["msvcr90.dll", "msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcrt.dll", "msvcr120.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__set_app_type"]
helpviewer_keywords: ["__set_app_type"]
ms.assetid: f0ac0f4d-70e6-4e96-9e43-eb9d1515490c
diff --git a/docs/c-runtime-library/interpretation-of-multibyte-character-sequences.md b/docs/c-runtime-library/interpretation-of-multibyte-character-sequences.md
index 2bf7aa0347..ae45f31a08 100644
--- a/docs/c-runtime-library/interpretation-of-multibyte-character-sequences.md
+++ b/docs/c-runtime-library/interpretation-of-multibyte-character-sequences.md
@@ -1,15 +1,15 @@
---
-title: "Interpretation of Multibyte-Character Sequences"
-ms.date: "04/11/2018"
+title: "Interpretation of multibyte-character sequences"
+ms.date: "10/22/2019"
f1_keywords: ["c.character.multibyte"]
helpviewer_keywords: ["MBCS [C++], locale code page"]
ms.assetid: da9150de-70ea-4d2f-90e6-ddb9202dd80b
---
-# Interpretation of Multibyte-Character Sequences
+# Interpretation of multibyte-character sequences
-Most multibyte-character routines in the Microsoft run-time library recognize multibyte-character sequences relating to a multibyte code page. The output value is affected by the setting of the **LC_CTYPE** category setting of the locale; see [setlocale](../c-runtime-library/reference/setlocale-wsetlocale.md) for more information. The versions of these functions without the **_l** suffix use the current locale for this locale-dependent behavior; the versions with the **_l** suffix are identical except that they use the locale parameter passed in instead.
+Most multibyte-character routines in the Microsoft run-time library recognize multibyte-character sequences relating to a multibyte code page. The output value is affected by the setting of the **LC_CTYPE** category setting of the locale. For more information, see [setlocale](../c-runtime-library/reference/setlocale-wsetlocale.md). The versions of these functions without the **_l** suffix use the current locale for this locale-dependent behavior. The versions with the **_l** suffix are identical, except they use the locale parameter instead of the current locale.
-## Locale-Dependent Multibyte Routines
+## Locale-dependent multibyte routines
|Routine|Use|
|-------------|---------|
@@ -19,10 +19,15 @@ Most multibyte-character routines in the Microsoft run-time library recognize mu
|[mbtowc, _mbtowc_l](../c-runtime-library/reference/mbtowc-mbtowc-l.md)|Convert multibyte character to corresponding wide character|
|[wcstombs, _wcstombs_l](../c-runtime-library/reference/wcstombs-wcstombs-l.md), [wcstombs_s, _wcstombs_s_l](../c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md)|Convert sequence of wide characters to corresponding sequence of multibyte characters|
|[wctomb, _wctomb_l](../c-runtime-library/reference/wctomb-wctomb-l.md), [wctomb_s, _wctomb_s_l](../c-runtime-library/reference/wctomb-s-wctomb-s-l.md)|Convert wide character to corresponding multibyte character|
-|[mbrtoc16, mbrtoc32](../c-runtime-library/reference/mbrtoc16-mbrtoc323.md)|Convert multibyte character to equivalent UTF-16 or UTF-32 character|
-|[c16rtomb, c32rtomb](../c-runtime-library/reference/c16rtomb-c32rtomb1.md)|Convert UTF-16 or UTF-32 character to equivalent multibyte character|
+
+## Locale-independent multibyte routines
+
+|Routine|Use|
+|-------------|---------|
+|[mbrtoc16, mbrtoc32](../c-runtime-library/reference/mbrtoc16-mbrtoc323.md)|Convert multibyte UTF-8 character to equivalent UTF-16 or UTF-32 character|
+|[c16rtomb, c32rtomb](../c-runtime-library/reference/c16rtomb-c32rtomb1.md)|Convert UTF-16 or UTF-32 character to equivalent UTF-8 multibyte character|
## See also
-[Internationalization](../c-runtime-library/internationalization.md)
-[Universal C runtime routines by category](../c-runtime-library/run-time-routines-by-category.md)
+[Internationalization](../c-runtime-library/internationalization.md)\
+[Universal C runtime routines by category](../c-runtime-library/run-time-routines-by-category.md)
diff --git a/docs/c-runtime-library/iob.md b/docs/c-runtime-library/iob.md
index 609e4d88e4..333fbcf81a 100644
--- a/docs/c-runtime-library/iob.md
+++ b/docs/c-runtime-library/iob.md
@@ -1,9 +1,10 @@
---
title: "_iob"
ms.date: "11/04/2016"
-apiname: ["_iob"]
-apilocation: ["msvcrt.dll"]
-apitype: "DLLExport"
+api_name: ["_iob"]
+api_location: ["msvcrt.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_iob", "iob"]
helpviewer_keywords: ["_iob global variable", "iob global variable"]
ms.assetid: 008ed376-8078-4bbd-bc6c-0677c63d0ff1
diff --git a/docs/c-runtime-library/is-isw-routines.md b/docs/c-runtime-library/is-isw-routines.md
index 89951199fd..dcedef2081 100644
--- a/docs/c-runtime-library/is-isw-routines.md
+++ b/docs/c-runtime-library/is-isw-routines.md
@@ -1,8 +1,9 @@
---
title: "is, isw Routines"
ms.date: "11/04/2016"
-apilocation: ["msvcr110_clr0400.dll", "msvcr90.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr110_clr0400.dll", "msvcr90.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["isw", "is"]
helpviewer_keywords: ["is routines", "isw routines"]
ms.assetid: 1e171a57-2cde-41f6-a75f-a080fa3c12e5
diff --git a/docs/c-runtime-library/ismbb-routines.md b/docs/c-runtime-library/ismbb-routines.md
index c99588f1b2..255a405fa8 100644
--- a/docs/c-runtime-library/ismbb-routines.md
+++ b/docs/c-runtime-library/ismbb-routines.md
@@ -1,8 +1,9 @@
---
title: "_ismbb Routines"
ms.date: "11/04/2016"
-apilocation: ["msvcr110.dll", "msvcrt.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr110.dll", "msvcrt.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbb", "ismbb"]
helpviewer_keywords: ["ismbb routines", "_ismbb routines"]
ms.assetid: d63c232e-3fe4-4844-aafd-2133846ece4b
diff --git a/docs/c-runtime-library/ismbc-routines.md b/docs/c-runtime-library/ismbc-routines.md
index 714d0bfd45..40fc158f97 100644
--- a/docs/c-runtime-library/ismbc-routines.md
+++ b/docs/c-runtime-library/ismbc-routines.md
@@ -1,8 +1,9 @@
---
title: "_ismbc Routines"
ms.date: "11/04/2016"
-apilocation: ["msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcrt.dll", "msvcr90.dll", "msvcr120.dll", "msvcr80.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcrt.dll", "msvcr90.dll", "msvcr120.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbc"]
helpviewer_keywords: ["ismbc routines", "_ismbc routines"]
ms.assetid: b8995391-7857-4ac3-9a1e-de946eb4464d
diff --git a/docs/c-runtime-library/lc-codepage-func.md b/docs/c-runtime-library/lc-codepage-func.md
index 9b1dcbb9d9..b10aadce31 100644
--- a/docs/c-runtime-library/lc-codepage-func.md
+++ b/docs/c-runtime-library/lc-codepage-func.md
@@ -1,9 +1,10 @@
---
title: "___lc_codepage_func"
ms.date: "11/04/2016"
-apiname: ["___lc_codepage_func"]
-apilocation: ["msvcr120.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr100.dll", "msvcr90.dll", "msvcr110.dll", "msvcrt.dll"]
-apitype: "DLLExport"
+api_name: ["___lc_codepage_func"]
+api_location: ["msvcr120.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr100.dll", "msvcr90.dll", "msvcr110.dll", "msvcrt.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lc_codepage_func", "___lc_codepage_func"]
helpviewer_keywords: ["___lc_codepage_func"]
ms.assetid: 6a663bd0-5a63-4a2f-9507-872ec1582aae
diff --git a/docs/c-runtime-library/lc-collate-cp-func.md b/docs/c-runtime-library/lc-collate-cp-func.md
index da300cffae..24ef697fab 100644
--- a/docs/c-runtime-library/lc-collate-cp-func.md
+++ b/docs/c-runtime-library/lc-collate-cp-func.md
@@ -1,9 +1,10 @@
---
title: "___lc_collate_cp_func"
ms.date: "11/04/2016"
-apiname: ["___lc_collate_cp_func"]
-apilocation: ["msvcr120.dll", "msvcrt.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr90.dll"]
-apitype: "DLLExport"
+api_name: ["___lc_collate_cp_func"]
+api_location: ["msvcr120.dll", "msvcrt.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr90.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["___lc_collate_cp_func"]
helpviewer_keywords: ["___lc_collate_cp_func"]
ms.assetid: 46ccc084-7ac9-4e5d-9138-e12cb5845615
diff --git a/docs/c-runtime-library/lc-locale-name-func.md b/docs/c-runtime-library/lc-locale-name-func.md
index a558adb316..a2ec8171c3 100644
--- a/docs/c-runtime-library/lc-locale-name-func.md
+++ b/docs/c-runtime-library/lc-locale-name-func.md
@@ -1,9 +1,10 @@
---
title: "___lc_locale_name_func"
ms.date: "11/04/2016"
-apiname: ["___lc_locale_name_func"]
-apilocation: ["msvcrt.dll", "msvcr110.dll", "msvcr100.dll", "msvcr90.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110_clr0400.dll"]
-apitype: "DLLExport"
+api_name: ["___lc_locale_name_func"]
+api_location: ["msvcrt.dll", "msvcr110.dll", "msvcr100.dll", "msvcr90.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110_clr0400.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["___lc_locale_name_func"]
helpviewer_keywords: ["___lc_locale_name_func"]
ms.assetid: ef858308-872e-43de-95e0-9b1b4084343e
diff --git a/docs/c-runtime-library/local-unwind2.md b/docs/c-runtime-library/local-unwind2.md
index 14683257be..77d01fe40c 100644
--- a/docs/c-runtime-library/local-unwind2.md
+++ b/docs/c-runtime-library/local-unwind2.md
@@ -1,9 +1,10 @@
---
title: "_local_unwind2"
ms.date: "11/04/2016"
-apiname: ["_local_unwind2"]
-apilocation: ["msvcr110_clr0400.dll", "msvcrt.dll", "msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcr90.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_name: ["_local_unwind2"]
+api_location: ["msvcr110_clr0400.dll", "msvcrt.dll", "msvcr100.dll", "msvcr110.dll", "msvcr80.dll", "msvcr90.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_local_unwind2", "local_unwind2"]
helpviewer_keywords: ["_local_unwind2 function", "local_unwind2 function"]
ms.assetid: 44f1fa82-e01e-490f-a6e6-18fc6811c28c
diff --git a/docs/c-runtime-library/lock.md b/docs/c-runtime-library/lock.md
index ce434e6376..266ef8b2f1 100644
--- a/docs/c-runtime-library/lock.md
+++ b/docs/c-runtime-library/lock.md
@@ -1,9 +1,10 @@
---
title: "_lock"
ms.date: "11/04/2016"
-apiname: ["_lock"]
-apilocation: ["msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "msvcr90.dll", "msvcr80.dll", "msvcr110.dll", "msvcrt.dll", "msvcr120_clr0400.dll"]
-apitype: "DLLExport"
+api_name: ["_lock"]
+api_location: ["msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "msvcr90.dll", "msvcr80.dll", "msvcr110.dll", "msvcrt.dll", "msvcr120_clr0400.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lock", "_lock"]
helpviewer_keywords: ["lock function", "_lock function"]
ms.assetid: 29f77c37-30de-4b3d-91b6-030216e645a6
diff --git a/docs/c-runtime-library/mb-cur-max-func-mb-cur-max-l-func-p-mb-cur-max-mb-cur-max.md b/docs/c-runtime-library/mb-cur-max-func-mb-cur-max-l-func-p-mb-cur-max-mb-cur-max.md
index b0b31748df..d17e86c5e7 100644
--- a/docs/c-runtime-library/mb-cur-max-func-mb-cur-max-l-func-p-mb-cur-max-mb-cur-max.md
+++ b/docs/c-runtime-library/mb-cur-max-func-mb-cur-max-l-func-p-mb-cur-max-mb-cur-max.md
@@ -1,9 +1,10 @@
---
title: "___mb_cur_max_func, ___mb_cur_max_l_func, __p___mb_cur_max, __mb_cur_max"
ms.date: "11/04/2016"
-apiname: ["___mb_cur_max_l_func", "__p___mb_cur_max", "___mb_cur_max_func", "__mb_cur_max"]
-apilocation: ["msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll", "msvcr100.dll", "msvcrt.dll", "msvcr90.dll", "msvcr120.dll", "api-ms-win-crt-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["___mb_cur_max_l_func", "__p___mb_cur_max", "___mb_cur_max_func", "__mb_cur_max"]
+api_location: ["msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll", "msvcr100.dll", "msvcrt.dll", "msvcr90.dll", "msvcr120.dll", "api-ms-win-crt-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["___mb_cur_max_func", "___mb_cur_max_l_func", "__p___mb_cur_max", "__mb_cur_max"]
helpviewer_keywords: ["__mb_cur_max", "___mb_cur_max_func", "___mb_cur_max_l_func", "__p___mb_cur_max"]
ms.assetid: 60d36108-1ca7-45a6-8ce7-68a91f13e3a1
diff --git a/docs/c-runtime-library/new-operator-crt.md b/docs/c-runtime-library/new-operator-crt.md
index 8af948b83c..5892bd3cb1 100644
--- a/docs/c-runtime-library/new-operator-crt.md
+++ b/docs/c-runtime-library/new-operator-crt.md
@@ -1,8 +1,9 @@
---
title: "operator new(CRT)"
ms.date: "11/04/2016"
-apilocation: ["msvcr110_clr0400.dll", "msvcr100.dll", "msvcr120.dll", "msvcr110.dll", "msvcr80.dll", "msvcr90.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr110_clr0400.dll", "msvcr100.dll", "msvcr120.dll", "msvcr110.dll", "msvcr80.dll", "msvcr90.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["new[]"]
helpviewer_keywords: ["operator new[]", "vector new"]
ms.assetid: 79682f85-6889-40f6-b8f7-9eed5176ea35
diff --git a/docs/c-runtime-library/obsolete-functions.md b/docs/c-runtime-library/obsolete-functions.md
index 85e5c7810c..a60347f268 100644
--- a/docs/c-runtime-library/obsolete-functions.md
+++ b/docs/c-runtime-library/obsolete-functions.md
@@ -1,16 +1,18 @@
---
-title: "Obsolete Functions"
-ms.date: "01/22/2019"
-apiname: ["_beep", "_sleep", "_loaddll", "_getdllprocaddr", "_seterrormode", "is_wctype", "_getsystime", "_setsystime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll", "api-ms-win-crt-runtime-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+title: "Obsolete functions"
+description: "Lists the obsolete functions that have been deprecated and removed from the Microsoft C runtime library (CRT)."
+ms.date: "12/09/2019"
+api_name: ["_beep", "_sleep", "_loaddll", "_getdllprocaddr", "_seterrormode", "is_wctype", "_getsystime", "_setsystime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll", "api-ms-win-crt-runtime-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["is_wctype", "_loaddll", "_unloaddll", "_getdllprocaddr", "_seterrormode", "_beep", "_sleep", "_getsystime", "corecrt_wctype/is_wctype", "process/_loaddll", "process/_unloaddll", "process/_getdllprocaddr", "stdlib/_seterrormode", "stdlib/_beep", "stdlib/_sleep", "time/_getsystime", "time/_setsystime"]
helpviewer_keywords: ["obsolete functions", "_beep function", "_sleep function", "_seterrormode function"]
ms.assetid: 8e14c2d4-1481-4240-8586-47eb43db02b0
---
# Obsolete Functions
-Certain library functions are obsolete and have more recent equivalents. We recommend you change these to the updated versions. Other obsolete functions have been removed from the CRT. This topic lists the functions deprecated as obsolete, and the functions removed in a particular version of Visual Studio.
+Certain library functions are obsolete and have more recent equivalents. We recommend you change these functions to the updated versions. Other obsolete functions have been removed from the CRT. This article lists the functions deprecated as obsolete, and the functions removed in a particular version of Visual Studio.
## Deprecated as obsolete in Visual Studio 2015
@@ -35,14 +37,12 @@ Certain library functions are obsolete and have more recent equivalents. We reco
|[_get_output_format](../c-runtime-library/get-output-format.md)|None|
|[_heapadd](../c-runtime-library/heapadd.md)|None|
|[_heapset](../c-runtime-library/heapset.md)|None|
-|[inp, inpw](../c-runtime-library/inp-inpw.md)|None|
-|[_inp, _inpw, _inpd](../c-runtime-library/inp-inpw-inpd.md)|None|
-|[outp, outpw](../c-runtime-library/outp-outpw.md)|None|
-|[_outp, _outpw, _outpd](../c-runtime-library/outp-outpw-outpd.md)|None|
+|[inp, inpw, _inp, _inpw, _inpd](../c-runtime-library/inp-inpw-inpd.md)|None|
+|[outp, outpw, _outp, _outpw, _outpd](../c-runtime-library/outp-outpw-outpd.md)|None|
|[_set_output_format](../c-runtime-library/set-output-format.md)|None|
## Removed from the CRT in earlier versions of Visual Studio
[_lock](../c-runtime-library/lock.md)
-[_unlock](../c-runtime-library/unlock.md)
\ No newline at end of file
+[_unlock](../c-runtime-library/unlock.md)
diff --git a/docs/c-runtime-library/operator-delete-crt.md b/docs/c-runtime-library/operator-delete-crt.md
index 16b6051d15..9469221754 100644
--- a/docs/c-runtime-library/operator-delete-crt.md
+++ b/docs/c-runtime-library/operator-delete-crt.md
@@ -1,8 +1,9 @@
---
title: "operator delete (CRT)"
ms.date: "11/04/2016"
-apilocation: ["msvcr80.dll", "msvcr90.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110.dll", "msvcr110_clr0400.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr80.dll", "msvcr90.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110.dll", "msvcr110_clr0400.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["delete"]
helpviewer_keywords: ["scalar delete", "operator delete"]
ms.assetid: bcd0066a-0022-45f5-af4c-9007c64a6b89
diff --git a/docs/c-runtime-library/operator-new-crt.md b/docs/c-runtime-library/operator-new-crt.md
index d41e89d0b1..a9b1e25a05 100644
--- a/docs/c-runtime-library/operator-new-crt.md
+++ b/docs/c-runtime-library/operator-new-crt.md
@@ -1,8 +1,9 @@
---
title: "operator new (CRT)"
ms.date: "11/04/2016"
-apilocation: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
helpviewer_keywords: ["operator new", "scalar new"]
ms.assetid: 4ae51618-a4e6-4172-b324-b99d86d1bdca
---
diff --git a/docs/c-runtime-library/outp-outpw-outpd.md b/docs/c-runtime-library/outp-outpw-outpd.md
index d10fa3ab9a..006575c2f8 100644
--- a/docs/c-runtime-library/outp-outpw-outpd.md
+++ b/docs/c-runtime-library/outp-outpw-outpd.md
@@ -1,46 +1,46 @@
---
-title: "_outp, _outpw, _outpd"
-ms.date: "11/04/2016"
-apiname: ["_outpd", "_outp", "_outpw"]
-apilocation: ["msvcrt.dll", "msvcr100.dll", "msvcr120.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll"]
-apitype: "DLLExport"
-f1_keywords: ["_outpw", "_outpd", "_outp", "outpd"]
+title: "outp, outpw, _outp, _outpw, _outpd"
+description: "Describes the obsolete and removed outp, outpw, _outp, _outpw, and _outpd functions of the Microsoft C runtime library (CRT)."
+ms.date: "12/09/2019"
+api_name: ["_outpd", "_outp", "_outpw", "outp", "outpw"]
+api_location: ["msvcrt.dll", "msvcr100.dll", "msvcr120.dll", "msvcr90.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
+f1_keywords: ["_outpw", "_outpd", "_outp", "outp", "outpw", "outpd"]
helpviewer_keywords: ["outpw function", "words", "_outpd function", "outpd function", "outp function", "ports, writing bytes at", "bytes, writing to ports", "words, writing to ports", "double words", "double words, writing to ports", "_outpw function", "_outp function"]
ms.assetid: c200fe22-41f6-46fd-b0be-ebb805b35181
---
-# _outp, _outpw, _outpd
+# outp, outpw, _outp, _outpw, _outpd
-Outputs, at a port, a byte (`_outp`), a word (`_outpw`), or a double word (`_outpd`).
+Outputs, at a port, a byte (`outp`, `_outp`), a word (`outpw`, `_outpw`), or a double word (`_outpd`).
> [!IMPORTANT]
-> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT.
-
-> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
+> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT.
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
## Syntax
-```
-
- int _outp(
-unsigned short port,
-int databyte
+```cpp
+int _outp(
+ unsigned short port,
+ int databyte
);
unsigned short _outpw(
-unsigned short port,
-unsigned short dataword
+ unsigned short port,
+ unsigned short dataword
);
unsigned long _outpd(
-unsigned short port,
-unsigned long dataword
+ unsigned short port,
+ unsigned long dataword
);
```
-#### Parameters
-*port*
+### Parameters
+
+*port*\
Port number.
-*databyte, dataword*
+*databyte, dataword*\
Output values.
## Return Value
@@ -53,6 +53,8 @@ The `_outp`, `_outpw`, and `_outpd` functions write a byte, a word, and a double
Because these functions write directly to an I/O port, they cannot be used in user code. For information about using I/O ports in these operating systems, search for "Serial Communications in Win32" at MSDN.
+The `outp` and `outpw` names are older, deprecated names for the `_outp` and `_outpw` functions. For more information, see [POSIX function names](../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
+
## Requirements
|Routine|Required header|
@@ -69,5 +71,5 @@ All versions of the [C run-time libraries](../c-runtime-library/crt-library-feat
## See also
-[Console and Port I/O](../c-runtime-library/console-and-port-i-o.md)
-[_inp, _inpw, _inpd](../c-runtime-library/inp-inpw-inpd.md)
+[Console and Port I/O](../c-runtime-library/console-and-port-i-o.md)\
+[inp, inpw, _inp, _inpw, _inpd](../c-runtime-library/inp-inpw-inpd.md)
diff --git a/docs/c-runtime-library/outp-outpw.md b/docs/c-runtime-library/outp-outpw.md
deleted file mode 100644
index 00fd06aebf..0000000000
--- a/docs/c-runtime-library/outp-outpw.md
+++ /dev/null
@@ -1,19 +0,0 @@
----
-title: "outp, outpw"
-ms.date: "11/04/2016"
-apiname: ["outpw", "outp"]
-apilocation: ["msvcr100.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr90.dll", "msvcr110.dll", "msvcr120.dll", "msvcr80.dll"]
-apitype: "DLLExport"
-f1_keywords: ["outp", "outpw"]
-helpviewer_keywords: ["outpw function", "outp function"]
-ms.assetid: ab29dc04-e440-4c3f-83b1-420e65b5df75
----
-# outp, outpw
-
-These POSIX functions are deprecated. Use the ISO C++ conformant [_outp, _outpw, _outpd](../c-runtime-library/outp-outpw-outpd.md) instead.
-
-> [!IMPORTANT]
-> These functions are obsolete. Beginning in Visual Studio 2015, they are not available in the CRT.
-
-> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
diff --git a/docs/c-runtime-library/p-commode.md b/docs/c-runtime-library/p-commode.md
index cb5c8d4ce3..413c1f00d5 100644
--- a/docs/c-runtime-library/p-commode.md
+++ b/docs/c-runtime-library/p-commode.md
@@ -1,9 +1,10 @@
---
title: "__p__commode"
ms.date: "11/04/2016"
-apiname: ["__p__commode"]
-apilocation: ["msvcr110.dll", "msvcrt.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["__p__commode"]
+api_location: ["msvcr110.dll", "msvcrt.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__p__commode"]
helpviewer_keywords: ["__p__commode"]
ms.assetid: 4380acb8-e3e4-409c-a60f-6205ac5189ce
diff --git a/docs/c-runtime-library/p-fmode.md b/docs/c-runtime-library/p-fmode.md
index e18d40bc76..efeb3f7aea 100644
--- a/docs/c-runtime-library/p-fmode.md
+++ b/docs/c-runtime-library/p-fmode.md
@@ -1,9 +1,10 @@
---
title: "__p__fmode"
ms.date: "11/04/2016"
-apiname: ["__p__fmode"]
-apilocation: ["msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["__p__fmode"]
+api_location: ["msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__p__fmode"]
helpviewer_keywords: ["__p__fmode"]
ms.assetid: 1daa1394-81eb-43aa-a71b-4cc6acf3207b
diff --git a/docs/c-runtime-library/pctype-func.md b/docs/c-runtime-library/pctype-func.md
index 5ff160699f..7494979344 100644
--- a/docs/c-runtime-library/pctype-func.md
+++ b/docs/c-runtime-library/pctype-func.md
@@ -1,9 +1,10 @@
---
title: "__pctype_func"
ms.date: "11/04/2016"
-apiname: ["__pctype_func"]
-apilocation: ["msvcrt.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll", "msvcr80.dll"]
-apitype: "DLLExport"
+api_name: ["__pctype_func"]
+api_location: ["msvcrt.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__pctype_func"]
helpviewer_keywords: ["__pctype_func"]
ms.assetid: d52b8add-d07d-4516-a22f-e836cde0c57f
diff --git a/docs/c-runtime-library/pctype-pwctype-wctype-mbctype-mbcasemap.md b/docs/c-runtime-library/pctype-pwctype-wctype-mbctype-mbcasemap.md
index a6a8aac630..0ef55fc5a2 100644
--- a/docs/c-runtime-library/pctype-pwctype-wctype-mbctype-mbcasemap.md
+++ b/docs/c-runtime-library/pctype-pwctype-wctype-mbctype-mbcasemap.md
@@ -1,9 +1,10 @@
---
title: "_pctype, _pwctype, _wctype, _mbctype, _mbcasemap"
ms.date: "11/04/2016"
-apiname: ["_pctype", "_pwctype", "_wctype", "_mbctype", "_mbcasemap"]
-apilocation: ["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-string-l1-1-0.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_pctype", "_pwctype", "_wctype", "_mbctype", "_mbcasemap"]
+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-string-l1-1-0.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["pwctype", "pctype", "mbctype", "mbcasemap", "_mbcasemap", "_mbctype", "_pctype", "_wctype", "_pcwtype"]
helpviewer_keywords: ["_wctype function", "_pwctype function", "_pctype function", "_mbctype function", "wctype function", "pwctype function", "pctype function", "mbcasemap function", "mbctype function", "_mbcasemap function"]
ms.assetid: 7f5e1107-c43b-4b9b-b387-781e6d2373cb
diff --git a/docs/c-runtime-library/pgmptr-wpgmptr.md b/docs/c-runtime-library/pgmptr-wpgmptr.md
index e0354ea9f2..240df6dc2b 100644
--- a/docs/c-runtime-library/pgmptr-wpgmptr.md
+++ b/docs/c-runtime-library/pgmptr-wpgmptr.md
@@ -44,7 +44,7 @@ When a program is not run from the command line, `_pgmptr` might be initialized
The following program demonstrates the use of `_pgmptr`.
-```
+```c
// crt_pgmptr.c
// compile with: /W3
// The following program demonstrates the use of _pgmptr.
diff --git a/docs/c-runtime-library/printf-p-positional-parameters.md b/docs/c-runtime-library/printf-p-positional-parameters.md
index c7032876af..41e088e9ba 100644
--- a/docs/c-runtime-library/printf-p-positional-parameters.md
+++ b/docs/c-runtime-library/printf-p-positional-parameters.md
@@ -1,8 +1,9 @@
---
title: "printf_p Positional Parameters"
ms.date: "11/04/2016"
-apilocation: ["msvcr120.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr80.dll", "msvcr100.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr120.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr80.dll", "msvcr100.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
helpviewer_keywords: ["_printf_p function, positional parameters", "printf_p function, positional parameters"]
ms.assetid: beb4fd85-a7aa-4665-9085-2c907a5b9ab0
---
diff --git a/docs/c-runtime-library/reference/abort.md b/docs/c-runtime-library/reference/abort.md
index 4f64e8146a..28d459c04f 100644
--- a/docs/c-runtime-library/reference/abort.md
+++ b/docs/c-runtime-library/reference/abort.md
@@ -1,9 +1,10 @@
---
title: "abort"
-ms.date: "1/02/2018"
-apiname: ["abort"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "01/02/2018"
+api_name: ["abort"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["Abort"]
helpviewer_keywords: ["aborting current process", "abort function", "processes, aborting"]
---
diff --git a/docs/c-runtime-library/reference/abs-labs-llabs-abs64.md b/docs/c-runtime-library/reference/abs-labs-llabs-abs64.md
index 07710ab283..db3e0a9632 100644
--- a/docs/c-runtime-library/reference/abs-labs-llabs-abs64.md
+++ b/docs/c-runtime-library/reference/abs-labs-llabs-abs64.md
@@ -1,9 +1,10 @@
---
title: "abs, labs, llabs, _abs64"
ms.date: "04/05/2018"
-apiname: ["abs", "_abs64", "labs", "llabs"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["abs", "_abs64", "labs", "llabs"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["stdlib/_abs64", "math/abs", "_abs64", "abs", "labs", "math/labs", "llabs", "math/llabs", "cmath/abs"]
helpviewer_keywords: ["absolute values", "abs function", "abs64 function", "_abs64 function", "calculating absolute values"]
ms.assetid: 60f789d1-4a1e-49f5-9e4e-0bdb277ea26a
@@ -42,7 +43,7 @@ The **abs**, **labs**, **llabs** and **_abs64** functions return the absolute va
Because C++ allows overloading, you can call overloads of **abs** that take and return **long**, **long** **long**, **float**, **double**, and **long** **double** values. These overloads are defined in the \ header. In a C program, **abs** always takes and returns an **int**.
-**Microsoft Specific**: Because the range of negative integers that can be represented by using any integral type is larger than the range of positive integers that can be represented by using that type, it's possible to supply an argument to these functions that can’t be converted. If the absolute value of the argument cannot be represented by the return type, the **abs** functions return the argument value unchanged. Specifically, `abs(INT_MIN)` returns `INT_MIN`, `labs(LONG_MIN)` returns `LONG_MIN`, `llabs(LLONG_MIN)` returns `LLONG_MIN`, and `_abs64(_I64_MIN)` returns `_I64_MIN`. This means that the **abs** functions cannot be used to guarantee a positive value.
+**Microsoft-specific**: Because the range of negative integers that can be represented by using any integral type is larger than the range of positive integers that can be represented by using that type, it's possible to supply an argument to these functions that can’t be converted. If the absolute value of the argument cannot be represented by the return type, the **abs** functions return the argument value unchanged. Specifically, `abs(INT_MIN)` returns `INT_MIN`, `labs(LONG_MIN)` returns `LONG_MIN`, `llabs(LLONG_MIN)` returns `LLONG_MIN`, and `_abs64(_I64_MIN)` returns `_I64_MIN`. This means that the **abs** functions cannot be used to guarantee a positive value.
## Requirements
diff --git a/docs/c-runtime-library/reference/access-crt.md b/docs/c-runtime-library/reference/access-crt.md
index 0c22662e4e..98b21b63a0 100644
--- a/docs/c-runtime-library/reference/access-crt.md
+++ b/docs/c-runtime-library/reference/access-crt.md
@@ -1,13 +1,16 @@
---
title: "access (CRT)"
-ms.date: "11/04/2016"
-apiname: ["access"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["access"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["access"]
helpviewer_keywords: ["access function"]
ms.assetid: 65197793-bd0a-41c3-9c29-18de2d95d9a6
---
# access (CRT)
-This POSIX function is deprecated. Use the ISO C++ conformant [_access](access-waccess.md) or security-enhanced [_access_s](access-s-waccess-s.md) instead.
+The Microsoft-implemented POSIX function name `access` is a deprecated alias for the [_access](access-waccess.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_access](access-waccess.md) or the security-enhanced [_access_s](access-s-waccess-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/access-s-waccess-s.md b/docs/c-runtime-library/reference/access-s-waccess-s.md
index fc4861495d..b7b8069674 100644
--- a/docs/c-runtime-library/reference/access-s-waccess-s.md
+++ b/docs/c-runtime-library/reference/access-s-waccess-s.md
@@ -1,9 +1,10 @@
---
title: "_access_s, _waccess_s"
ms.date: "11/04/2016"
-apiname: ["_access_s", "_waccess_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_access_s", "_waccess_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["waccess_s", "access_s", "_waccess_s", "_access_s"]
helpviewer_keywords: ["access_s function", "taccess_s function", "_taccess_s function", "waccess_s function", "_access_s function", "_waccess_s function"]
ms.assetid: fb3004fc-dcd3-4569-8b27-d817546e947e
diff --git a/docs/c-runtime-library/reference/access-waccess.md b/docs/c-runtime-library/reference/access-waccess.md
index c3fdfff66c..7cb602abfb 100644
--- a/docs/c-runtime-library/reference/access-waccess.md
+++ b/docs/c-runtime-library/reference/access-waccess.md
@@ -1,9 +1,10 @@
---
title: "_access, _waccess"
ms.date: "11/04/2016"
-apiname: ["_access", "_waccess"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_access", "_waccess"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_waccess", "_access", "taccess", "waccess", "_taccess"]
helpviewer_keywords: ["access function", "_taccess function", "waccess function", "_access function", "_waccess function", "taccess function"]
ms.assetid: ba34f745-85c3-49e5-a7d4-3590bd249dd3
diff --git a/docs/c-runtime-library/reference/acos-acosf-acosl.md b/docs/c-runtime-library/reference/acos-acosf-acosl.md
index 2ca96fe1cf..4b40949991 100644
--- a/docs/c-runtime-library/reference/acos-acosf-acosl.md
+++ b/docs/c-runtime-library/reference/acos-acosf-acosl.md
@@ -1,9 +1,10 @@
---
title: "acos, acosf, acosl"
ms.date: "04/05/2018"
-apiname: ["acosf", "acos", "acosl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["acosf", "acos", "acosl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["acos", "acosl", "acosf", "math/acosf", "math/acosl"]
helpviewer_keywords: ["acos function", "acosl function", "acosf function", "trigonometric functions", "arccosine function"]
ms.assetid: 00b89c48-8faf-4824-aa95-fa4349a4975d
diff --git a/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md b/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md
index 3cc3deb1b1..cdc4265273 100644
--- a/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md
+++ b/docs/c-runtime-library/reference/acosh-acoshf-acoshl.md
@@ -1,9 +1,10 @@
---
title: "acosh, acoshf, acoshl"
ms.date: "04/05/2018"
-apiname: ["acoshf", "acosh", "acoshl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["acoshf", "acosh", "acoshl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["acosh", "acoshf", "acoshl", "math/acosh", "math/acoshf", "math/acoshl"]
helpviewer_keywords: ["acoshf function", "acosh function", "acoshl function"]
ms.assetid: 6985c4d7-9e2a-44ce-9a9b-5a43015f15f7
diff --git a/docs/c-runtime-library/reference/aligned-free-dbg.md b/docs/c-runtime-library/reference/aligned-free-dbg.md
index 48b14ba827..9d809f0893 100644
--- a/docs/c-runtime-library/reference/aligned-free-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-free-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_free_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_free_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_free_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_free_dbg", "aligned_free_dbg"]
helpviewer_keywords: ["_aligned_free_dbg function", "aligned_free_dbg function"]
ms.assetid: eb0cb3c8-0992-4db8-bac3-65f1b8311ca6
diff --git a/docs/c-runtime-library/reference/aligned-free.md b/docs/c-runtime-library/reference/aligned-free.md
index cf4f74e8f9..51abf94218 100644
--- a/docs/c-runtime-library/reference/aligned-free.md
+++ b/docs/c-runtime-library/reference/aligned-free.md
@@ -1,9 +1,10 @@
---
title: "_aligned_free"
ms.date: "11/04/2016"
-apiname: ["_aligned_free"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_aligned_free"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["aligned_free", "_aligned_free"]
helpviewer_keywords: ["_aligned_free function", "aligned_free function"]
ms.assetid: ed1ce952-cdfc-4682-85cc-f75d4101603d
diff --git a/docs/c-runtime-library/reference/aligned-malloc-dbg.md b/docs/c-runtime-library/reference/aligned-malloc-dbg.md
index a8fec8be59..7ab9229f8e 100644
--- a/docs/c-runtime-library/reference/aligned-malloc-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-malloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_malloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_malloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_malloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_malloc_dbg", "aligned_malloc_dbg"]
helpviewer_keywords: ["aligned_malloc_dbg function", "_aligned_malloc_dbg function"]
ms.assetid: fb0429c3-685d-4826-9075-2515c5bdc5c6
diff --git a/docs/c-runtime-library/reference/aligned-malloc.md b/docs/c-runtime-library/reference/aligned-malloc.md
index 76e02ce74c..7aa863d209 100644
--- a/docs/c-runtime-library/reference/aligned-malloc.md
+++ b/docs/c-runtime-library/reference/aligned-malloc.md
@@ -1,9 +1,10 @@
---
title: "_aligned_malloc"
-ms.date: "11/04/2016"
-apiname: ["_aligned_malloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+ms.date: "12/11/2019"
+api_name: ["_aligned_malloc"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_malloc", "alligned_malloc"]
helpviewer_keywords: ["aligned_malloc function", "_aligned_malloc function"]
ms.assetid: fb788d40-ee94-4039-aa4d-97d73dab1ca0
@@ -41,6 +42,8 @@ A pointer to the memory block that was allocated or NULL if the operation failed
This function sets `errno` to `ENOMEM` if the memory allocation failed or if the requested size was greater than `_HEAP_MAXREQ`. For more information about `errno`, see [errno, _doserrno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md). Also, **_aligned_malloc** validates its parameters. If *alignment* is not a power of 2 or *size* is zero, this function invokes the invalid parameter handler, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, this function returns NULL and sets `errno` to `EINVAL`.
+Use [_aligned_free](aligned-free.md) to deallocate memory obtained by both **_aligned_malloc** and `_aligned_offset_malloc`. Don't use `free`, which doesn't reclaim the aligned memory correctly and can lead to hard-to-diagnose bugs.
+
## Requirements
|Routine|Required header|
@@ -131,4 +134,4 @@ This pointer, 3280891, is offset by 5 on alignment of 16
## See also
-[Data Alignment](../../c-runtime-library/data-alignment.md)
\ No newline at end of file
+[Data Alignment](../../c-runtime-library/data-alignment.md)
diff --git a/docs/c-runtime-library/reference/aligned-msize-dbg.md b/docs/c-runtime-library/reference/aligned-msize-dbg.md
index 1c8e3a7532..2c5545ea78 100644
--- a/docs/c-runtime-library/reference/aligned-msize-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-msize-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_msize_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_msize_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_msize_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_msize_dbg"]
helpviewer_keywords: ["_aligned_msize_dbg"]
ms.assetid: f1c44af0-3f66-4033-81d1-d71d3afecba0
diff --git a/docs/c-runtime-library/reference/aligned-msize.md b/docs/c-runtime-library/reference/aligned-msize.md
index 3c5472d119..998f94bcef 100644
--- a/docs/c-runtime-library/reference/aligned-msize.md
+++ b/docs/c-runtime-library/reference/aligned-msize.md
@@ -1,9 +1,10 @@
---
title: "_aligned_msize"
ms.date: "11/04/2016"
-apiname: ["_aligned_msize"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_aligned_msize"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_msize", "aligned_msize"]
helpviewer_keywords: ["aligned_msize function", "_aligned_msize function"]
ms.assetid: 10995edc-2110-4212-9ca9-5e0220a464f4
diff --git a/docs/c-runtime-library/reference/aligned-offset-malloc-dbg.md b/docs/c-runtime-library/reference/aligned-offset-malloc-dbg.md
index dacec82168..b18e0b149f 100644
--- a/docs/c-runtime-library/reference/aligned-offset-malloc-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-offset-malloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_offset_malloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_offset_malloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_offset_malloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_offset_malloc_dbg", "aligned_offset_malloc_dbg"]
helpviewer_keywords: ["_aligned_offset_malloc_dbg function", "aligned_offset_malloc_dbg function"]
ms.assetid: 6c242307-c59e-4d63-aae5-d8cbec8e021c
diff --git a/docs/c-runtime-library/reference/aligned-offset-malloc.md b/docs/c-runtime-library/reference/aligned-offset-malloc.md
index 5b0bca70c1..a5fe4286fa 100644
--- a/docs/c-runtime-library/reference/aligned-offset-malloc.md
+++ b/docs/c-runtime-library/reference/aligned-offset-malloc.md
@@ -1,9 +1,10 @@
---
title: "_aligned_offset_malloc"
ms.date: "11/04/2016"
-apiname: ["_aligned_offset_malloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_aligned_offset_malloc"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_offset_malloc", "aligned_offset_malloc"]
helpviewer_keywords: ["_aligned_offset_malloc function", "aligned_offset_malloc function"]
ms.assetid: 447681a3-7c95-4655-86ba-fa3a4ca4c521
diff --git a/docs/c-runtime-library/reference/aligned-offset-realloc-dbg.md b/docs/c-runtime-library/reference/aligned-offset-realloc-dbg.md
index d719b2c7d6..7a9010acc0 100644
--- a/docs/c-runtime-library/reference/aligned-offset-realloc-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-offset-realloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_offset_realloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_offset_realloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_offset_realloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["aligned_offset_realloc_dbg", "_aligned_offset_realloc_dbg"]
helpviewer_keywords: ["aligned_offset_realloc_dbg function", "_aligned_offset_realloc_dbg function"]
ms.assetid: 64e30a12-887e-453b-aea8-aed793fca9d8
diff --git a/docs/c-runtime-library/reference/aligned-offset-realloc.md b/docs/c-runtime-library/reference/aligned-offset-realloc.md
index 950363e0db..4ec936f497 100644
--- a/docs/c-runtime-library/reference/aligned-offset-realloc.md
+++ b/docs/c-runtime-library/reference/aligned-offset-realloc.md
@@ -1,9 +1,10 @@
---
title: "_aligned_offset_realloc"
ms.date: "11/04/2016"
-apiname: ["_aligned_offset_realloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_aligned_offset_realloc"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["aligned_offset_realloc", "_aligned_offset_realloc"]
helpviewer_keywords: ["aligned_offset_realloc function", "_aligned_offset_realloc function"]
ms.assetid: e0263533-991e-41b0-acc9-1b8a51ab9ecd
diff --git a/docs/c-runtime-library/reference/aligned-offset-recalloc-dbg.md b/docs/c-runtime-library/reference/aligned-offset-recalloc-dbg.md
index 462804b042..863f6e9b1d 100644
--- a/docs/c-runtime-library/reference/aligned-offset-recalloc-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-offset-recalloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_offset_recalloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_offset_recalloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_offset_recalloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["aligned_offset_recalloc_dbg", "_aligned_offset_recalloc_dbg"]
helpviewer_keywords: ["aligned_offset_recalloc_dbg function", "_aligned_offset_recalloc_dbg function"]
ms.assetid: 7ab719c3-77e0-4d2e-934f-01529d062fbf
diff --git a/docs/c-runtime-library/reference/aligned-offset-recalloc.md b/docs/c-runtime-library/reference/aligned-offset-recalloc.md
index 57485b22ac..aa2af4bf7a 100644
--- a/docs/c-runtime-library/reference/aligned-offset-recalloc.md
+++ b/docs/c-runtime-library/reference/aligned-offset-recalloc.md
@@ -1,9 +1,10 @@
---
title: "_aligned_offset_recalloc"
ms.date: "11/04/2016"
-apiname: ["_aligned_offset_recalloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_aligned_offset_recalloc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["aligned_offset_recalloc", "_aligned_offset_recalloc"]
helpviewer_keywords: ["aligned_offset_recalloc function", "_aligned_offset_recalloc function"]
ms.assetid: a258f54e-eeb4-4853-96fc-007d710f98e9
diff --git a/docs/c-runtime-library/reference/aligned-realloc-dbg.md b/docs/c-runtime-library/reference/aligned-realloc-dbg.md
index a5e133e5b6..a8b3bd0783 100644
--- a/docs/c-runtime-library/reference/aligned-realloc-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-realloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_realloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_realloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_realloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["aligned_realloc_dbg", "_aligned_realloc_dbg"]
helpviewer_keywords: ["_aligned_realloc_dbg function", "aligned_realloc_dbg function"]
ms.assetid: 8aede920-991e-44cd-867f-83dc2165db47
diff --git a/docs/c-runtime-library/reference/aligned-realloc.md b/docs/c-runtime-library/reference/aligned-realloc.md
index e3209289ea..767e56fc97 100644
--- a/docs/c-runtime-library/reference/aligned-realloc.md
+++ b/docs/c-runtime-library/reference/aligned-realloc.md
@@ -1,9 +1,10 @@
---
title: "_aligned_realloc"
ms.date: "11/04/2016"
-apiname: ["_aligned_realloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_aligned_realloc"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_realloc", "aligned_realloc"]
helpviewer_keywords: ["aligned_realloc function", "_aligned_realloc function"]
ms.assetid: 80ce96e8-6087-416f-88aa-4dbb8cb1d218
diff --git a/docs/c-runtime-library/reference/aligned-recalloc-dbg.md b/docs/c-runtime-library/reference/aligned-recalloc-dbg.md
index eebc9ccc6e..4779b29964 100644
--- a/docs/c-runtime-library/reference/aligned-recalloc-dbg.md
+++ b/docs/c-runtime-library/reference/aligned-recalloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_aligned_recalloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_aligned_recalloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_aligned_recalloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_aligned_recalloc_dbg", "aligned_recalloc_dbg"]
helpviewer_keywords: ["aligned_recalloc_dbg function", "_aligned_recalloc_dbg function"]
ms.assetid: 55c3c27e-561c-4d6b-9bf9-1e34cc556e4b
diff --git a/docs/c-runtime-library/reference/aligned-recalloc.md b/docs/c-runtime-library/reference/aligned-recalloc.md
index 0f74cca761..1fb6f43491 100644
--- a/docs/c-runtime-library/reference/aligned-recalloc.md
+++ b/docs/c-runtime-library/reference/aligned-recalloc.md
@@ -1,9 +1,10 @@
---
title: "_aligned_recalloc"
ms.date: "11/04/2016"
-apiname: ["_aligned_recalloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_aligned_recalloc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["aligned_recalloc", "_aligned_recalloc"]
helpviewer_keywords: ["aligned_recalloc function", "_aligned_recalloc function"]
ms.assetid: d3da3dcc-79ef-4273-8af5-ac7469420142
diff --git a/docs/c-runtime-library/reference/alloca.md b/docs/c-runtime-library/reference/alloca.md
index ea5b3d78f4..156a26917e 100644
--- a/docs/c-runtime-library/reference/alloca.md
+++ b/docs/c-runtime-library/reference/alloca.md
@@ -1,9 +1,10 @@
---
title: "_alloca"
ms.date: "11/04/2016"
-apiname: ["_alloca"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_alloca"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_alloca", "alloca"]
helpviewer_keywords: ["memory allocation, stack", "alloca function", "_alloca function"]
ms.assetid: 74488eb1-b71f-4515-88e1-cdd03b6f8225
@@ -94,7 +95,7 @@ int main()
}
}
- // If an exception occured with the _alloca function
+ // If an exception occurred with the _alloca function
__except( GetExceptionCode() == STATUS_STACK_OVERFLOW )
{
printf_s("_alloca failed!\n");
diff --git a/docs/c-runtime-library/reference/amsg-exit.md b/docs/c-runtime-library/reference/amsg-exit.md
index f3353d5785..cc0e23a7f4 100644
--- a/docs/c-runtime-library/reference/amsg-exit.md
+++ b/docs/c-runtime-library/reference/amsg-exit.md
@@ -1,9 +1,10 @@
---
title: "_amsg_exit"
ms.date: "11/04/2016"
-apiname: ["_amsg_exit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_amsg_exit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_amsg_exit"]
helpviewer_keywords: ["_amsg_exit"]
ms.assetid: 146d4faf-d763-43a4-b264-12711196456b
diff --git a/docs/c-runtime-library/reference/and-eq.md b/docs/c-runtime-library/reference/and-eq.md
index ef1932ab65..cbe7504567 100644
--- a/docs/c-runtime-library/reference/and-eq.md
+++ b/docs/c-runtime-library/reference/and-eq.md
@@ -1,8 +1,9 @@
---
title: "and_eq"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["and_eq", "std.and_eq", "std::and_eq"]
helpviewer_keywords: ["and_eq macro"]
ms.assetid: 11091772-e359-4c2b-95c6-00841ac04354
diff --git a/docs/c-runtime-library/reference/and.md b/docs/c-runtime-library/reference/and.md
index 645d77a1d6..88ed65b010 100644
--- a/docs/c-runtime-library/reference/and.md
+++ b/docs/c-runtime-library/reference/and.md
@@ -1,8 +1,9 @@
---
title: "and"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["And", "std.and", "std::and"]
helpviewer_keywords: ["and macro"]
ms.assetid: 2644ab57-8e1b-48f0-9021-cafe3e26bdc4
diff --git a/docs/c-runtime-library/reference/asctime-s-wasctime-s.md b/docs/c-runtime-library/reference/asctime-s-wasctime-s.md
index 7ae508d1d0..1385116a9d 100644
--- a/docs/c-runtime-library/reference/asctime-s-wasctime-s.md
+++ b/docs/c-runtime-library/reference/asctime-s-wasctime-s.md
@@ -1,9 +1,10 @@
---
title: "asctime_s, _wasctime_s"
ms.date: "11/04/2016"
-apiname: ["_wasctime_s", "asctime_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wasctime_s", "asctime_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["asctime_s", "_wasctime_s", "_tasctime_s"]
helpviewer_keywords: ["tasctime_s function", "_tasctime_s function", "time structure conversion", "wasctime_s function", "time, converting", "_wasctime_s function", "asctime_s function"]
ms.assetid: 17ad9b2b-a459-465d-976a-42822897688a
@@ -87,6 +88,8 @@ The string result produced by **asctime_s** contains exactly 26 characters and h
**_wasctime_s** is a wide-character version of **asctime_s**. **_wasctime_s** and **asctime_s** behave identically otherwise.
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+
### Generic-Text Routine Mapping
|TCHAR.H routine|_UNICODE & _MBCS not defined|_MBCS defined|_UNICODE defined|
diff --git a/docs/c-runtime-library/reference/asctime-wasctime.md b/docs/c-runtime-library/reference/asctime-wasctime.md
index ca7fe684b5..8c2169970e 100644
--- a/docs/c-runtime-library/reference/asctime-wasctime.md
+++ b/docs/c-runtime-library/reference/asctime-wasctime.md
@@ -1,9 +1,10 @@
---
title: "asctime, _wasctime"
ms.date: "11/04/2016"
-apiname: ["_wasctime", "asctime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wasctime", "asctime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tasctime", "asctime", "_wasctime"]
helpviewer_keywords: ["asctime function", "tasctime function", "wasctime function", "_tasctime function", "_wasctime function", "time structure conversion", "time, converting"]
ms.assetid: 974f1727-10ff-4ed4-8cac-2eb2d681f576
diff --git a/docs/c-runtime-library/reference/asin-asinf-asinl.md b/docs/c-runtime-library/reference/asin-asinf-asinl.md
index 7ca0a3eed7..76080e3b88 100644
--- a/docs/c-runtime-library/reference/asin-asinf-asinl.md
+++ b/docs/c-runtime-library/reference/asin-asinf-asinl.md
@@ -1,9 +1,10 @@
---
title: "asin, asinf, asinl"
ms.date: "04/05/2018"
-apiname: ["asinf", "asinl", "asin"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["asinf", "asinl", "asin"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["asin", "asinl", "asinf"]
helpviewer_keywords: ["asin function", "asinl function", "asinf function", "trigonometric functions", "arcsine function"]
ms.assetid: ca05f9ea-b711-49f6-9f32-2f4019abfd69
diff --git a/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md b/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md
index ab5cbb57c5..c18e8a3d36 100644
--- a/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md
+++ b/docs/c-runtime-library/reference/asinh-asinhf-asinhl.md
@@ -1,9 +1,10 @@
---
title: "asinh, asinhf, asinhl"
ms.date: "04/05/2018"
-apiname: ["asinh", "asinhf", "asinhl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["asinh", "asinhf", "asinhl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["asinhf", "asinhl", "asinh"]
helpviewer_keywords: ["asinh function", "asinhl function", "asinhf function"]
ms.assetid: 4488babe-1a7e-44ca-8b7b-c2db0a70084f
diff --git a/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md b/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md
index 0441109960..107ac66654 100644
--- a/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md
+++ b/docs/c-runtime-library/reference/assert-asserte-assert-expr-macros.md
@@ -1,8 +1,9 @@
---
title: "_ASSERT, _ASSERTE, _ASSERT_EXPR Macros"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ASSERTE", "ASSERTE", "_ASSERT", "_ASSERT_EXPR"]
helpviewer_keywords: ["debugging [CRT], using macros", "_ASSERTE macro", "macros, debugging with", "debug reporting macros", "_ASSERT macro", "_ASSERT_EXPR macro"]
ms.assetid: e98fd2a6-7f5e-4aa8-8fe8-e93490deba36
diff --git a/docs/c-runtime-library/reference/assert-macro-assert-wassert.md b/docs/c-runtime-library/reference/assert-macro-assert-wassert.md
index 2034c598f8..a89b100f56 100644
--- a/docs/c-runtime-library/reference/assert-macro-assert-wassert.md
+++ b/docs/c-runtime-library/reference/assert-macro-assert-wassert.md
@@ -1,9 +1,10 @@
---
title: "assert Macro, _assert, _wassert"
ms.date: "11/04/2016"
-apiname: ["assert", "_assert", "_wassert"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["assert", "_assert", "_wassert"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["assert", "_assert", "_wassert", "assert/_wassert"]
helpviewer_keywords: ["aborting programs", "assert function", "assert macro"]
ms.assetid: a9ca031a-648b-47a6-bdf1-65fc7399dd40
diff --git a/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md b/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md
index 05655a5537..969b8634f9 100644
--- a/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md
+++ b/docs/c-runtime-library/reference/atan-atanf-atanl-atan2-atan2f-atan2l.md
@@ -1,9 +1,10 @@
---
title: "atan, atanf, atanl, atan2, atan2f, atan2l"
ms.date: "04/05/2018"
-apiname: ["atan2f", "atan2l", "atan2", "atanf", "atan", "atanl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["atan2f", "atan2l", "atan2", "atanf", "atan", "atanl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["atan", "atan2l", "atan2", "atanl", "atanf", "atan2f"]
helpviewer_keywords: ["atan function", "atanf function", "atanl function", "atan2 function", "atan2l function", "arctangent function", "trigonometric functions", "atan2f function"]
ms.assetid: 7a87a18e-c94d-4727-9cb1-1bb5c2725ae4
diff --git a/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md b/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md
index 086c8028a9..d61b8b5e84 100644
--- a/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md
+++ b/docs/c-runtime-library/reference/atanh-atanhf-atanhl.md
@@ -1,9 +1,10 @@
---
title: "atanh, atanhf, atanhl"
ms.date: "04/05/2018"
-apiname: ["atanhl", "atanhf", "atanh"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["atanhl", "atanhf", "atanh"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["atanhl", "atanhf", "atanh"]
helpviewer_keywords: ["atanhf function", "atanhl function", "atanh funciton"]
ms.assetid: 83a43b5b-2580-4461-854f-dc84236d9f32
diff --git a/docs/c-runtime-library/reference/atexit.md b/docs/c-runtime-library/reference/atexit.md
index d4459c6dce..176afcc52a 100644
--- a/docs/c-runtime-library/reference/atexit.md
+++ b/docs/c-runtime-library/reference/atexit.md
@@ -1,9 +1,10 @@
---
title: "atexit"
ms.date: "11/04/2016"
-apiname: ["atexit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["atexit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["atexit"]
helpviewer_keywords: ["processing, at exit", "atexit function"]
ms.assetid: 92c156d2-8052-4e58-96dc-00128baac6f9
diff --git a/docs/c-runtime-library/reference/atodbl-atodbl-l-atoldbl-atoldbl-l-atoflt-atoflt-l.md b/docs/c-runtime-library/reference/atodbl-atodbl-l-atoldbl-atoldbl-l-atoflt-atoflt-l.md
index 8a78c1276f..0ad6b36c88 100644
--- a/docs/c-runtime-library/reference/atodbl-atodbl-l-atoldbl-atoldbl-l-atoflt-atoflt-l.md
+++ b/docs/c-runtime-library/reference/atodbl-atodbl-l-atoldbl-atoldbl-l-atoflt-atoflt-l.md
@@ -1,9 +1,10 @@
---
title: "_atodbl, _atodbl_l, _atoldbl, _atoldbl_l, _atoflt, _atoflt_l"
ms.date: "04/05/2018"
-apiname: ["_atoldbl", "_atoldbl_l", "_atodbl", "_atoflt", "_atoflt_l", "_atodbl_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_atoldbl", "_atoldbl_l", "_atodbl", "_atoflt", "_atoflt_l", "_atodbl_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_atoflt", "_atoflt_l", "atodbl_l", "atoflt_l", "_atoldbl", "_atoldbl_l", "atodbl", "_atodbl_l", "atoldbl", "atoflt", "atoldbl_l", "_atodbl"]
helpviewer_keywords: ["_atodbl function", "_atoldbl_l function", "atoflt function", "atoflt_l function", "atoldbl function", "_atoldbl function", "atodbl_l function", "_atoflt_l function", "atoldbl_l function", "atodbl function", "string conversion, to floating point values", "_atoflt function", "_atodbl_l function"]
ms.assetid: 2d2530f4-4bd4-42e3-8083-f2d2fbc8432a
diff --git a/docs/c-runtime-library/reference/atof-atof-l-wtof-wtof-l.md b/docs/c-runtime-library/reference/atof-atof-l-wtof-wtof-l.md
index e47aff4137..989ef567f0 100644
--- a/docs/c-runtime-library/reference/atof-atof-l-wtof-wtof-l.md
+++ b/docs/c-runtime-library/reference/atof-atof-l-wtof-wtof-l.md
@@ -1,9 +1,10 @@
---
title: "atof, _atof_l, _wtof, _wtof_l"
ms.date: "04/05/2018"
-apiname: ["_wtof_l", "atof", "_atof_l", "_wtof"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wtof_l", "atof", "_atof_l", "_wtof"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tstof", "_ttof", "atof", "stdlib/atof", "math/atof", "_atof_l", "stdlib/_atof_l", "math/_atof_l", "_wtof", "corecrt_wstdlib/_wtof", "_wtof_l", "corecrt_wstdlib/_wtof_l"]
helpviewer_keywords: ["tstof function", "atof_l function", "_atof_l function", "atof function", "_tstof function", "_ttof function", "wtof function", "_wtof_l function", "ttof function", "wtof_l function", "_wtof function", "string conversion, to floating point values"]
ms.assetid: eb513241-c9a9-4f5c-b7e7-a49b14abfb75
diff --git a/docs/c-runtime-library/reference/atoi-atoi-l-wtoi-wtoi-l.md b/docs/c-runtime-library/reference/atoi-atoi-l-wtoi-wtoi-l.md
index 8041bd8c6e..617ad20dde 100644
--- a/docs/c-runtime-library/reference/atoi-atoi-l-wtoi-wtoi-l.md
+++ b/docs/c-runtime-library/reference/atoi-atoi-l-wtoi-wtoi-l.md
@@ -1,9 +1,10 @@
---
title: "atoi, _atoi_l, _wtoi, _wtoi_l"
ms.date: "11/04/2016"
-apiname: ["_wtoi", "_wtoi_l", "atoi", "_atoi_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wtoi", "_wtoi_l", "atoi", "_atoi_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tstoi", "_wtoi", "_ttoi", "atoi", "_atoi_l", "_wtoi_l"]
helpviewer_keywords: ["_atoi_l function", "ttoi function", "atoi_l function", "string conversion, to integers", "_wtoi function", "wtoi_l function", "tstoi function", "_ttoi function", "_tstoi function", "_wtoi_l function", "atoi function", "wtoi function"]
ms.assetid: ad7fda30-28ab-421f-aaad-ef0b8868663a
diff --git a/docs/c-runtime-library/reference/atoi64-atoi64-l-wtoi64-wtoi64-l.md b/docs/c-runtime-library/reference/atoi64-atoi64-l-wtoi64-wtoi64-l.md
index 76dd6aa69e..4921a7f052 100644
--- a/docs/c-runtime-library/reference/atoi64-atoi64-l-wtoi64-wtoi64-l.md
+++ b/docs/c-runtime-library/reference/atoi64-atoi64-l-wtoi64-wtoi64-l.md
@@ -1,9 +1,10 @@
---
title: "_atoi64, _atoi64_l, _wtoi64, _wtoi64_l"
ms.date: "11/04/2016"
-apiname: ["_atoi64_l", "_wtoi64", "_atoi64", "_wtoi64_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_atoi64_l", "_wtoi64", "_atoi64", "_wtoi64_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_atoi64", "_tstoi64", "_ttoi64", "wtoi64", "_tstoi64_l", "atoi64", "_wtoi64_l", "_wtoi64", "wtoi64_l", "_atoi64_l", "atoi64_l"]
helpviewer_keywords: ["tstoi64 function", "wtoi64 function", "atoi64_l function", "_ttoi64 function", "string conversion, to integers", "wtoi64_l function", "atoi64 function", "_tstoi64 function", "_atoi64_l function", "_wtoi64_l function", "ttoi64 function", "_wtoi64 function", "_atoi64 function"]
ms.assetid: 2c3e30fd-545d-4222-8364-0c5905df9526
diff --git a/docs/c-runtime-library/reference/atol-atol-l-wtol-wtol-l.md b/docs/c-runtime-library/reference/atol-atol-l-wtol-wtol-l.md
index fad3c7e123..af8afd1ce6 100644
--- a/docs/c-runtime-library/reference/atol-atol-l-wtol-wtol-l.md
+++ b/docs/c-runtime-library/reference/atol-atol-l-wtol-wtol-l.md
@@ -1,9 +1,10 @@
---
title: "atol, _atol_l, _wtol, _wtol_l"
ms.date: "11/04/2016"
-apiname: ["atol", "_wtol_l", "_wtol", "_atol_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["atol", "_wtol_l", "_wtol", "_atol_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_atol_l", "_ttol_l", "_tstol_l", "_tstol", "_wtol", "_ttol", "_wtol_l"]
helpviewer_keywords: ["tstol function", "atol function", "ttol function", "_atol_l function", "_tstol_l function", "string conversion, to integers", "_tstol function", "_ttol function", "_ttol_l function", "atol_l function", "wtol_l function", "_wtol_l function", "wtol function", "_wtol function"]
ms.assetid: cedfc21c-2d64-4e9c-bd04-bdf60b12db46
diff --git a/docs/c-runtime-library/reference/atoll-atoll-l-wtoll-wtoll-l.md b/docs/c-runtime-library/reference/atoll-atoll-l-wtoll-wtoll-l.md
index 2c6502bccd..b6923e9cde 100644
--- a/docs/c-runtime-library/reference/atoll-atoll-l-wtoll-wtoll-l.md
+++ b/docs/c-runtime-library/reference/atoll-atoll-l-wtoll-wtoll-l.md
@@ -1,9 +1,10 @@
---
title: "atoll, _atoll_l, _wtoll, _wtoll_l"
ms.date: "11/04/2016"
-apiname: ["_wtoll", "_atoll_l", "_wtoll_l", "atoll"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wtoll", "_atoll_l", "_wtoll_l", "atoll"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tstoll_l", "_wtoll", "_atoll_l", "_ttoll", "_tstoll", "_wtoll_l", "atoll"]
helpviewer_keywords: ["atoll function", "_wtoll_l function", "_wtoll function", "_atoll_l function"]
ms.assetid: 5e85fcac-b351-4882-bff2-6e7c469b7fa8
diff --git a/docs/c-runtime-library/reference/beginthread-beginthreadex.md b/docs/c-runtime-library/reference/beginthread-beginthreadex.md
index b7e66be600..4c7c28dad3 100644
--- a/docs/c-runtime-library/reference/beginthread-beginthreadex.md
+++ b/docs/c-runtime-library/reference/beginthread-beginthreadex.md
@@ -1,9 +1,10 @@
---
title: "_beginthread, _beginthreadex"
ms.date: "02/27/2018"
-apiname: ["_beginthread", "_beginthreadex"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_beginthread", "_beginthreadex"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["beginthread", "_beginthread", "beginthreadex", "_beginthreadex"]
helpviewer_keywords: ["_beginthread function", "threading [C++], creating threads", "beginthreadex function", "_beginthreadex function", "beginthread function"]
ms.assetid: 0df64740-a978-4358-a88f-fb0702720091
diff --git a/docs/c-runtime-library/reference/bessel-functions-j0-j1-jn-y0-y1-yn.md b/docs/c-runtime-library/reference/bessel-functions-j0-j1-jn-y0-y1-yn.md
index 076c4a16b8..6d97e93bf0 100644
--- a/docs/c-runtime-library/reference/bessel-functions-j0-j1-jn-y0-y1-yn.md
+++ b/docs/c-runtime-library/reference/bessel-functions-j0-j1-jn-y0-y1-yn.md
@@ -1,9 +1,10 @@
---
title: "Bessel Functions: _j0, _j1, _jn, _y0, _y1, _yn"
ms.date: "04/05/2018"
-apiname: ["_j0", "_j1", "_jn", "_y0", "_y1", "_yn"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_j0", "_j1", "_jn", "_y0", "_y1", "_yn"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["c.bessel", "_j0", "_j1", "_jn", "_y0", "_y1", "_yn"]
helpviewer_keywords: ["Bessel functions", "_j0 function", "_j1 function", "_jn function", "_y0 function", "_y1 function", "_yn function"]
ms.assetid: a21a8bf1-df9d-4ba0-a8c2-e7ef71921d96
diff --git a/docs/c-runtime-library/reference/bitand.md b/docs/c-runtime-library/reference/bitand.md
index 91008031eb..4c1bec4390 100644
--- a/docs/c-runtime-library/reference/bitand.md
+++ b/docs/c-runtime-library/reference/bitand.md
@@ -1,8 +1,9 @@
---
title: "bitand"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["std::bitand", "std.bitand", "bitand"]
helpviewer_keywords: ["bitand function"]
ms.assetid: 279cf9b5-fac1-49de-b329-f1a31b3481fe
diff --git a/docs/c-runtime-library/reference/bitor.md b/docs/c-runtime-library/reference/bitor.md
index 72a0a69cbc..b1ff0f5287 100644
--- a/docs/c-runtime-library/reference/bitor.md
+++ b/docs/c-runtime-library/reference/bitor.md
@@ -1,8 +1,9 @@
---
title: "bitor"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["bitor", "std.bitor", "std::bitor"]
helpviewer_keywords: ["bitor function"]
ms.assetid: 3c0a3711-9c74-41f2-b400-2f7797da30d1
diff --git a/docs/c-runtime-library/reference/bsearch-s.md b/docs/c-runtime-library/reference/bsearch-s.md
index 6e6451d115..0106f26056 100644
--- a/docs/c-runtime-library/reference/bsearch-s.md
+++ b/docs/c-runtime-library/reference/bsearch-s.md
@@ -1,16 +1,17 @@
---
title: "bsearch_s"
-ms.date: "11/04/2016"
-apiname: ["bsearch_s"]
-apilocation: ["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-utility-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+ms.date: "10/22/2019"
+api_name: ["bsearch_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-utility-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["bsearch_s"]
helpviewer_keywords: ["arrays [CRT], binary search", "bsearch_s function"]
ms.assetid: d5690d5e-6be3-4f1d-aa0b-5ca6dbded276
---
# bsearch_s
-Performs a binary search of a sorted array. This is version of [bsearch](bsearch.md) with security enhancements as described in [Security Features in the CRT](../../c-runtime-library/security-features-in-the-crt.md).
+Performs a binary search of a sorted array. This function is a version of [bsearch](bsearch.md) with security enhancements as described in [Security features in the CRT](../../c-runtime-library/security-features-in-the-crt.md).
## Syntax
@@ -27,31 +28,31 @@ void *bsearch_s(
### Parameters
-*key*
-Object to search for.
+*key*\
+Pointer to the key to search for.
-*base*
-Pointer to base of search data.
+*base*\
+Pointer to the base of the search data.
-*number*
+*number*\
Number of elements.
-*width*
+*width*\
Width of elements.
-*compare*
+*compare*\
Callback function that compares two elements. The first argument is the *context* pointer. The second argument is a pointer to the *key* for the search. The third argument is a pointer to the array element to be compared with *key*.
-*context*
+*context*\
A pointer to an object that can be accessed in the comparison function.
-## Return Value
+## Return value
**bsearch_s** returns a pointer to an occurrence of *key* in the array pointed to by *base*. If *key* is not found, the function returns **NULL**. If the array is not in ascending sort order or contains duplicate records with identical keys, the result is unpredictable.
-If invalid parameters are passed to the function, the invalid parameter handler is invoked as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, **errno** is set to **EINVAL** and the function returns **NULL**. For more information, see [errno, _doserrno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md).
+If invalid parameters are passed to the function, it invokes the invalid parameter handler as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, **errno** is set to **EINVAL** and the function returns **NULL**. For more information, see [errno, _doserrno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md).
-### Error Conditions
+### Error conditions
|||||||
|-|-|-|-|-|-|
@@ -169,7 +170,7 @@ cat found at 002F0F04
## See also
-[Searching and Sorting](../../c-runtime-library/searching-and-sorting.md)
-[_lfind](lfind.md)
-[_lsearch](lsearch.md)
-[qsort](qsort.md)
+[Searching and Sorting](../../c-runtime-library/searching-and-sorting.md)\
+[_lfind](lfind.md)\
+[_lsearch](lsearch.md)\
+[qsort](qsort.md)
diff --git a/docs/c-runtime-library/reference/bsearch.md b/docs/c-runtime-library/reference/bsearch.md
index d72cab03b5..f4ad628bfb 100644
--- a/docs/c-runtime-library/reference/bsearch.md
+++ b/docs/c-runtime-library/reference/bsearch.md
@@ -1,9 +1,10 @@
---
title: "bsearch"
-ms.date: "11/04/2016"
-apiname: ["bsearch"]
-apilocation: ["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-utility-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+ms.date: "10/22/2019"
+api_name: ["bsearch"]
+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-utility-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["bsearch"]
helpviewer_keywords: ["arrays [CRT], binary search", "bsearch function"]
ms.assetid: e0ad2f47-e7dd-49ed-8288-870457a14a2c
@@ -26,28 +27,28 @@ void *bsearch(
### Parameters
-*key*
-Object to search for.
+*key*\
+Pointer to the key to search for.
-*base*
-Pointer to base of search data.
+*base*\
+Pointer to the base of the search data.
-*number*
+*number*\
Number of elements.
-*width*
+*width*\
Width of elements.
-*compare*
-Callback function that compares two elements. The first is a pointer to the key for the search and the second is a pointer to the array element to be compared with the key.
+*compare*\
+Callback function that compares two elements. The first is a pointer to the key for the search, and the second is a pointer to the array element to be compared with the key.
-## Return Value
+## Return value
**bsearch** returns a pointer to an occurrence of *key* in the array pointed to by *base*. If *key* is not found, the function returns **NULL**. If the array is not in ascending sort order or contains duplicate records with identical keys, the result is unpredictable.
## Remarks
-The **bsearch** function performs a binary search of a sorted array of *number* elements, each of *width* bytes in size. The *base* value is a pointer to the base of the array to be searched, and *key* is the value being sought. The *compare* parameter is a pointer to a user-supplied routine that compares the requested key to an array element and returns one of the following values specifying their relationship:
+The **bsearch** function performs a binary search of a sorted array of *number* elements, each of *width* bytes in size. The *base* value is a pointer to the base of the array to be searched, and *key* is the value being sought. The *compare* parameter is a pointer to a user-supplied routine that compares the requested key to an array element. It returns one of the following values that specify their relationship:
|Value returned by *compare* routine|Description|
|-----------------------------------------|-----------------|
@@ -55,7 +56,7 @@ The **bsearch** function performs a binary search of a sorted array of *number*
|0|Key is equal to array element.|
|> 0|Key is greater than array element.|
-This function validates its parameters. If *compare*, *key* or *number* is **NULL**, or if *base* is **NULL** and *number* is nonzero, or if *width* is zero, the invalid parameter handler is invoked, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, **errno** is set to `EINVAL` and the function returns **NULL**.
+This function validates its parameters. If *compare*, *key* or *number* is **NULL**, or if *base* is **NULL** and *number* is nonzero, or if *width* is zero, the function invokes the invalid parameter handler, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, **errno** is set to `EINVAL` and the function returns **NULL**.
## Requirements
@@ -112,7 +113,7 @@ cat found at 002F0F04
## See also
-[Searching and Sorting](../../c-runtime-library/searching-and-sorting.md)
-[_lfind](lfind.md)
-[_lsearch](lsearch.md)
-[qsort](qsort.md)
+[Searching and Sorting](../../c-runtime-library/searching-and-sorting.md)\
+[_lfind](lfind.md)\
+[_lsearch](lsearch.md)\
+[qsort](qsort.md)
diff --git a/docs/c-runtime-library/reference/btowc.md b/docs/c-runtime-library/reference/btowc.md
index 81524e5b21..94c07293b2 100644
--- a/docs/c-runtime-library/reference/btowc.md
+++ b/docs/c-runtime-library/reference/btowc.md
@@ -1,9 +1,10 @@
---
title: "btowc"
ms.date: "11/04/2016"
-apiname: ["btowc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["btowc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["btowc"]
helpviewer_keywords: ["btowc function"]
ms.assetid: 99a46e02-6f86-4569-af79-5feca012add8
diff --git a/docs/c-runtime-library/reference/byteswap-uint64-byteswap-ulong-byteswap-ushort.md b/docs/c-runtime-library/reference/byteswap-uint64-byteswap-ulong-byteswap-ushort.md
index 7d255e6762..4cfc78669e 100644
--- a/docs/c-runtime-library/reference/byteswap-uint64-byteswap-ulong-byteswap-ushort.md
+++ b/docs/c-runtime-library/reference/byteswap-uint64-byteswap-ulong-byteswap-ushort.md
@@ -1,9 +1,10 @@
---
title: "_byteswap_uint64, _byteswap_ulong, _byteswap_ushort"
ms.date: "11/04/2016"
-apiname: ["_byteswap_uint64", "_byteswap_ulong", "_byteswap_ushort"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_byteswap_uint64", "_byteswap_ulong", "_byteswap_ushort"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["byteswap_ulong", "_byteswap_ulong", "byteswap_uint64", "_byteswap_ushort", "_byteswap_uint64", "byteswap_ushort"]
helpviewer_keywords: ["_byteswap_uint64 function", "byteswap_uint64 function", "swapping bytes", "byte swapping", "byteswap_ushort function", "_byteswap_ushort function", "bytes, swapping", "byteswap_ulong function", "_byteswap_ulong function"]
ms.assetid: 83bda211-f02f-4cf0-8a78-d6de1f175970
diff --git a/docs/c-runtime-library/reference/c16rtomb-c32rtomb1.md b/docs/c-runtime-library/reference/c16rtomb-c32rtomb1.md
index 03ff5735f9..cc1783eb5d 100644
--- a/docs/c-runtime-library/reference/c16rtomb-c32rtomb1.md
+++ b/docs/c-runtime-library/reference/c16rtomb-c32rtomb1.md
@@ -1,16 +1,17 @@
---
title: "c16rtomb, c32rtomb"
-ms.date: "01/22/2018"
-apiname: ["c16rtomb", "c32rtomb"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "10/22/2019"
+api_name: ["c16rtomb", "c32rtomb"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["c16rtomb", "c32rtomb", "uchar/c16rtomb", "uchar/c32rtomb"]
helpviewer_keywords: ["c16rtomb function", "c32rtomb function"]
ms.assetid: 7f5743ca-a90e-4e3f-a310-c73e16f4e14d
---
# c16rtomb, c32rtomb
-Convert a UTF-16 or UTF-32 wide character into a multibyte character in the current locale.
+Convert a UTF-16 or UTF-32 wide character into a UTF-8 multibyte character.
## Syntax
@@ -29,26 +30,30 @@ size_t c32rtomb(
### Parameters
-*mbchar*
-Pointer to an array to store the multibyte converted character.
+*mbchar*\
+Pointer to an array to store the converted UTF-8 multibyte character.
-*wchar*
+*wchar*\
A wide character to convert.
-*state*
+*state*\
A pointer to an **mbstate_t** object.
-## Return Value
+## Return value
-The number of bytes stored in array object *mbchar*, including any shift sequences. If *wchar* is not a valid wide character, the value (**size_t**)(-1) is returned, **errno** is set to **EILSEQ**, and the value of *state* is unspecified.
+The number of bytes stored in array object *mbchar*, including any shift sequences. If *wchar* isn't a valid wide character, the value (**size_t**)(-1) is returned, **errno** is set to **EILSEQ**, and the value of *state* is unspecified.
## Remarks
-The **c16rtomb** function converts the UTF-16 character *wchar* to the equivalent multibyte narrow character sequence in the current locale. If *mbchar* is not a null pointer, the function stores the converted sequence in the array object pointed to by *mbchar*. Up to **MB_CUR_MAX** bytes are stored in *mbchar*, and *state* is set to the resulting multibyte shift state. If *wchar* is a null wide character, a sequence required to restore the initial shift state is stored, if needed, followed by the null character, and *state* is set to the initial conversion state. The **c32rtomb** function is identical, but converts a UTF-32 character.
+The **c16rtomb** function converts the UTF-16 LE character *wchar* to the equivalent UTF-8 multibyte narrow character sequence. If *mbchar* isn't a null pointer, the function stores the converted sequence in the array object pointed to by *mbchar*. Up to **MB_CUR_MAX** bytes are stored in *mbchar*, and *state* is set to the resulting multibyte shift state.
+
+If *wchar* is a null wide character, a sequence required to restore the initial shift state is stored, if needed, followed by the null character. *state* is set to the initial conversion state. The **c32rtomb** function is identical, but converts a UTF-32 character.
If *mbchar* is a null pointer, the behavior is equivalent to a call to the function that substitutes an internal buffer for *mbchar* and a wide null character for *wchar*.
-The *state* conversion state object allows you to make subsequent calls to this function and other restartable functions that maintain the shift state of the multibyte output characters. Results are undefined when you mix the use of restartable and non-restartable functions, or if a call to **setlocale** is made between restartable function calls.
+The *state* conversion state object allows you to make subsequent calls to this function and other restartable functions that maintain the shift state of the multibyte output characters. Results are undefined when you mix the use of restartable and non-restartable functions.
+
+To convert UTF-16 characters into non-UTF-8 multibyte characters, use the [wcstombs, _wcstombs_l](wcstombs-wcstombs-l.md), [wcstombs_s, or _wcstombs_s_l](wcstombs-s-wcstombs-s-l.md) functions.
## Requirements
@@ -56,13 +61,13 @@ The *state* conversion state object allows you to make subsequent calls to this
|-------------|---------------------|
|**c16rtomb**, **c32rtomb**|C, C++: \|
-For compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+For compatibility information, see [Compatibility](../compatibility.md).
## See also
-[Data Conversion](../../c-runtime-library/data-conversion.md)
-[Locale](../../c-runtime-library/locale.md)
-[Interpretation of Multibyte-Character Sequences](../../c-runtime-library/interpretation-of-multibyte-character-sequences.md)
-[mbrtoc16, mbrtoc32](mbrtoc16-mbrtoc323.md)
-[wcrtomb](wcrtomb.md)
-[wcrtomb_s](wcrtomb-s.md)
+[Data conversion](../data-conversion.md)\
+[Locale](../locale.md)\
+[Interpretation of multibyte-character sequences](../interpretation-of-multibyte-character-sequences.md)\
+[mbrtoc16, mbrtoc32](mbrtoc16-mbrtoc323.md)\
+[wcrtomb](wcrtomb.md)\
+[wcrtomb_s](wcrtomb-s.md)
diff --git a/docs/c-runtime-library/reference/cabs-cabsf-cabsl.md b/docs/c-runtime-library/reference/cabs-cabsf-cabsl.md
index 703e9b6bae..d3f49e04cd 100644
--- a/docs/c-runtime-library/reference/cabs-cabsf-cabsl.md
+++ b/docs/c-runtime-library/reference/cabs-cabsf-cabsl.md
@@ -1,9 +1,10 @@
---
title: "cabs, cabsf, cabsl"
ms.date: "11/04/2016"
-apiname: ["cabs", "cabsf", "cabsl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cabs", "cabsf", "cabsl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cabs", "cabsf", "cabsl", "complex/cabs", "complex/cabsf", "complex/cabsl"]
helpviewer_keywords: ["cabs function", "cabsf function", "cabsl function"]
ms.assetid: 6b8eb453-cc8f-4972-bebf-351cbdfdfc15
diff --git a/docs/c-runtime-library/reference/cabs.md b/docs/c-runtime-library/reference/cabs.md
index e9c9deaf12..442d62e4c7 100644
--- a/docs/c-runtime-library/reference/cabs.md
+++ b/docs/c-runtime-library/reference/cabs.md
@@ -1,9 +1,10 @@
---
title: "_cabs"
ms.date: "11/04/2016"
-apiname: ["_cabs"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_cabs"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cabsl", "_cabs", "_cabsl"]
helpviewer_keywords: ["cabs function", "cabsl function", "absolute values", "_cabsl function", "_cabs function", "calculating absolute values"]
ms.assetid: fea292ee-1a39-4a0a-b416-4a189346ff26
diff --git a/docs/c-runtime-library/reference/cacos-cacosf-cacosl.md b/docs/c-runtime-library/reference/cacos-cacosf-cacosl.md
index f552f02357..2816357ff4 100644
--- a/docs/c-runtime-library/reference/cacos-cacosf-cacosl.md
+++ b/docs/c-runtime-library/reference/cacos-cacosf-cacosl.md
@@ -1,9 +1,10 @@
---
title: "cacos, cacosf, cacosl"
ms.date: "11/04/2016"
-apiname: ["cacos", "cacosf", "cacosl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cacos", "cacosf", "cacosl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cacos", "cacosf", "cacosl", "complex/cacos", "complex/cacosf", "complex/cacosl"]
helpviewer_keywords: ["cacos function", "cacosf function", "cacosl function"]
ms.assetid: 78118c00-0a07-49c1-8a13-4bf19ce3aea8
diff --git a/docs/c-runtime-library/reference/cacosh-cacoshf-cacoshl.md b/docs/c-runtime-library/reference/cacosh-cacoshf-cacoshl.md
index 5f780c3bb3..d9b57014bb 100644
--- a/docs/c-runtime-library/reference/cacosh-cacoshf-cacoshl.md
+++ b/docs/c-runtime-library/reference/cacosh-cacoshf-cacoshl.md
@@ -1,9 +1,10 @@
---
title: "cacosh, cacoshf, cacoshl"
ms.date: "11/04/2016"
-apiname: ["cacosh", "cacoshf", "cacoshl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cacosh", "cacoshf", "cacoshl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cacosh", "cacoshf", "cacoshl", "complex/cacosh", "complex/cacoshf", "complex/cacoshl"]
helpviewer_keywords: ["cacosh function", "cacoshf function", "cacoshl function"]
ms.assetid: 83fd05eb-3587-4741-9be6-589a830a1703
diff --git a/docs/c-runtime-library/reference/callnewh.md b/docs/c-runtime-library/reference/callnewh.md
index d025f84a51..f1231fcea7 100644
--- a/docs/c-runtime-library/reference/callnewh.md
+++ b/docs/c-runtime-library/reference/callnewh.md
@@ -1,9 +1,10 @@
---
title: "_callnewh"
ms.date: "11/04/2016"
-apiname: ["_callnewh"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_callnewh"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_callnewh"]
helpviewer_keywords: ["_callnewh"]
ms.assetid: 4dcb73e9-6384-4d12-a973-a8807d4de7a8
diff --git a/docs/c-runtime-library/reference/calloc-dbg.md b/docs/c-runtime-library/reference/calloc-dbg.md
index 6d4f8a3faf..ae5017f7cf 100644
--- a/docs/c-runtime-library/reference/calloc-dbg.md
+++ b/docs/c-runtime-library/reference/calloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_calloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_calloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_calloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_calloc_dbg", "calloc_dbg"]
helpviewer_keywords: ["_calloc_dbg function", "calloc_dbg function"]
ms.assetid: 7f62c42b-eb9f-4de5-87d0-df57036c87de
diff --git a/docs/c-runtime-library/reference/calloc.md b/docs/c-runtime-library/reference/calloc.md
index f1b24bb3c4..ab5e5c6799 100644
--- a/docs/c-runtime-library/reference/calloc.md
+++ b/docs/c-runtime-library/reference/calloc.md
@@ -1,9 +1,11 @@
---
title: "calloc"
-ms.date: "11/04/2016"
-apiname: ["calloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+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"]
+topic_type: ["apiref"]
f1_keywords: ["calloc"]
helpviewer_keywords: ["memory allocation, arrays", "calloc function"]
ms.assetid: 17bb79a1-98cf-4096-90cb-1f9365cd6829
@@ -16,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
);
```
@@ -39,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/c-runtime-library/reference/carg-cargf-cargl.md b/docs/c-runtime-library/reference/carg-cargf-cargl.md
index 96860763d5..46fd03e9a5 100644
--- a/docs/c-runtime-library/reference/carg-cargf-cargl.md
+++ b/docs/c-runtime-library/reference/carg-cargf-cargl.md
@@ -1,9 +1,10 @@
---
title: "carg, cargf, cargl"
ms.date: "11/04/2016"
-apiname: ["carg", "cargf", "cargl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["carg", "cargf", "cargl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["carg", "cargf", "cargl", "complex/carg", "complex/cargf", "complex/cargl"]
helpviewer_keywords: ["carg function", "cargf function", "cargl function"]
ms.assetid: 610d6a93-b929-46ab-a966-b77db0b804be
diff --git a/docs/c-runtime-library/reference/casin-casinf-casinl.md b/docs/c-runtime-library/reference/casin-casinf-casinl.md
index b463178076..a0863051de 100644
--- a/docs/c-runtime-library/reference/casin-casinf-casinl.md
+++ b/docs/c-runtime-library/reference/casin-casinf-casinl.md
@@ -1,9 +1,10 @@
---
title: "casin, casinf, casinl"
ms.date: "11/04/2016"
-apiname: ["casin", "casinf", "casinl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["casin", "casinf", "casinl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["casin", "casinf", "casinl", "complex/casin", "complex/casinf", "complex/casinl"]
helpviewer_keywords: ["casin function", "casinf function", "casinl function"]
ms.assetid: b75d1455-7b1e-43b0-bd46-c530be190be9
diff --git a/docs/c-runtime-library/reference/casinh-casinhf-casinhl.md b/docs/c-runtime-library/reference/casinh-casinhf-casinhl.md
index 51de2bdab8..1c26750d56 100644
--- a/docs/c-runtime-library/reference/casinh-casinhf-casinhl.md
+++ b/docs/c-runtime-library/reference/casinh-casinhf-casinhl.md
@@ -1,9 +1,10 @@
---
title: "casinh, casinhf, casinhl"
ms.date: "11/04/2016"
-apiname: ["casinh", "casinhl", "casinhf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["casinh", "casinhl", "casinhf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["casinh", "casinhf", "casinhl", "complex/casinh", "complex/casinhf", "complex/casinhl"]
helpviewer_keywords: ["casinh function", "casinhf function", "casinhl function"]
ms.assetid: bd18340b-21dd-4c86-a14e-e8e15dd97e3b
diff --git a/docs/c-runtime-library/reference/catan-catanf-catanl.md b/docs/c-runtime-library/reference/catan-catanf-catanl.md
index 4a8b900df3..5b32a1d039 100644
--- a/docs/c-runtime-library/reference/catan-catanf-catanl.md
+++ b/docs/c-runtime-library/reference/catan-catanf-catanl.md
@@ -1,9 +1,10 @@
---
title: "catan, catanf, catanl"
ms.date: "11/04/2016"
-apiname: ["catan", "catanf", "catanl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["catan", "catanf", "catanl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["catan", "catanf", "catanl", "complex/catan", "complex/catanf", "complex/catanl"]
helpviewer_keywords: ["catan function", "catanf function", "catanl function"]
ms.assetid: 8415ed9c-7909-4d08-b532-4630bafdc7e8
diff --git a/docs/c-runtime-library/reference/catanh-catanhf-catanhl.md b/docs/c-runtime-library/reference/catanh-catanhf-catanhl.md
index 964feb4a83..52bff0709e 100644
--- a/docs/c-runtime-library/reference/catanh-catanhf-catanhl.md
+++ b/docs/c-runtime-library/reference/catanh-catanhf-catanhl.md
@@ -1,9 +1,10 @@
---
title: "catanh, catanhf, catanhl"
ms.date: "11/04/2016"
-apiname: ["catanh", "catanhf", "catanhl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["catanh", "catanhf", "catanhl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["catanh", "catanhf", "catanhl", "complex/catanh", "complex/catanhf", "complex/catanhl"]
helpviewer_keywords: ["catanh function", "catanhf function", "catanhl function"]
ms.assetid: 1b6021cb-647a-41b4-9d7f-919cc8b57b86
diff --git a/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md b/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md
index 65331d9174..27abeffc5f 100644
--- a/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md
+++ b/docs/c-runtime-library/reference/cbrt-cbrtf-cbrtl.md
@@ -1,9 +1,10 @@
---
title: "cbrt, cbrtf, cbrtl"
ms.date: "04/05/2018"
-apiname: ["cbrt", "cbrtf", "cbrtl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cbrt", "cbrtf", "cbrtl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cbrtl", "cbrt", "cbrtf"]
helpviewer_keywords: ["cbrtl function", "cbrtf function", "cbrt function"]
ms.assetid: ab51d916-3db2-4beb-b46a-28b4062cd33f
diff --git a/docs/c-runtime-library/reference/cbuild-fcbuild-lcbuild.md b/docs/c-runtime-library/reference/cbuild-fcbuild-lcbuild.md
index 760aef7203..0efb629275 100644
--- a/docs/c-runtime-library/reference/cbuild-fcbuild-lcbuild.md
+++ b/docs/c-runtime-library/reference/cbuild-fcbuild-lcbuild.md
@@ -1,9 +1,10 @@
---
title: "_Cbuild, _FCbuild, _LCbuild"
ms.date: "03/30/2018"
-apiname: ["_Cbuild", "_FCbuild", "_LCbuild"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_Cbuild", "_FCbuild", "_LCbuild"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_Cbuild", "_FCbuild", "_LCbuild", "complex/_Cbuild", "complex/_FCbuild", "complex/_LCbuild"]
helpviewer_keywords: ["_Cbuild function", "_FCbuild function", "_LCbuild function"]
---
diff --git a/docs/c-runtime-library/reference/ccos-ccosf-ccosl.md b/docs/c-runtime-library/reference/ccos-ccosf-ccosl.md
index 3ca5d5160a..5233bf5d76 100644
--- a/docs/c-runtime-library/reference/ccos-ccosf-ccosl.md
+++ b/docs/c-runtime-library/reference/ccos-ccosf-ccosl.md
@@ -1,9 +1,10 @@
---
title: "ccos, ccosf, ccosl"
ms.date: "11/04/2016"
-apiname: ["ccos", "ccosf", "ccosl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ccos", "ccosf", "ccosl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ccos", "ccosf", "ccosl", "complex/ccos", "complex/ccosf", "complex/ccosl"]
helpviewer_keywords: ["ccos function", "ccosf function", "ccosl function"]
ms.assetid: 4ab936ac-ff85-49ac-9418-2b69cf5d4696
diff --git a/docs/c-runtime-library/reference/ccosh-ccoshf-ccoshl.md b/docs/c-runtime-library/reference/ccosh-ccoshf-ccoshl.md
index 11641bd332..cf71c1b835 100644
--- a/docs/c-runtime-library/reference/ccosh-ccoshf-ccoshl.md
+++ b/docs/c-runtime-library/reference/ccosh-ccoshf-ccoshl.md
@@ -1,9 +1,10 @@
---
title: "ccosh, ccoshf, ccoshl"
ms.date: "11/04/2016"
-apiname: ["ccosh", "ccoshf", "ccoshl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ccosh", "ccoshf", "ccoshl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ccosh", "ccoshf", "ccoshl", "complex/ccosh", "complex/ccoshf", "complex/ccoshl"]
helpviewer_keywords: ["ccosh function", "ccoshf function", "ccoshl function"]
ms.assetid: 79667449-4edf-4948-bf6b-720adf2b3f3b
diff --git a/docs/c-runtime-library/reference/ceil-ceilf-ceill.md b/docs/c-runtime-library/reference/ceil-ceilf-ceill.md
index 5fecd86c9c..23047b227e 100644
--- a/docs/c-runtime-library/reference/ceil-ceilf-ceill.md
+++ b/docs/c-runtime-library/reference/ceil-ceilf-ceill.md
@@ -1,9 +1,10 @@
---
title: "ceil, ceilf, ceill"
ms.date: "04/05/2018"
-apiname: ["ceilf", "ceil", "ceill"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntdll.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ceilf", "ceil", "ceill"]
+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", "ntdll.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ceil", "ceilf", "ceill"]
helpviewer_keywords: ["calculating value ceilings", "ceill function", "ceil function", "ceilf function"]
ms.assetid: f4e5acab-5c8f-4b10-9ae2-9561e6453718
diff --git a/docs/c-runtime-library/reference/cexit-c-exit.md b/docs/c-runtime-library/reference/cexit-c-exit.md
index 5b9c37e060..74d493e9ac 100644
--- a/docs/c-runtime-library/reference/cexit-c-exit.md
+++ b/docs/c-runtime-library/reference/cexit-c-exit.md
@@ -1,9 +1,10 @@
---
title: "_cexit, _c_exit"
ms.date: "11/04/2016"
-apiname: ["_c_exit", "_cexit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_c_exit", "_cexit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_cexit", "c_exit", "_c_exit", "cexit"]
helpviewer_keywords: ["cleanup operations during processes", "cexit function", "_c_exit function", "_cexit function", "c_exit function"]
ms.assetid: f3072045-9924-4b1a-9fef-b0dcd6d12663
diff --git a/docs/c-runtime-library/reference/cexp-cexpf-cexpl.md b/docs/c-runtime-library/reference/cexp-cexpf-cexpl.md
index ba856a1051..09c367fc44 100644
--- a/docs/c-runtime-library/reference/cexp-cexpf-cexpl.md
+++ b/docs/c-runtime-library/reference/cexp-cexpf-cexpl.md
@@ -1,9 +1,10 @@
---
title: "cexp, cexpf, cexpl"
ms.date: "11/04/2016"
-apiname: ["cexp", "cexpf", "cexpl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cexp", "cexpf", "cexpl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cexp", "cexpf", "cexpl", "complex/cepx", "complex/cexpf", "complex/cexpl"]
helpviewer_keywords: ["cexp function", "cexpl function", "cexpf function"]
ms.assetid: f27fd5a9-70c7-4957-a7ee-5256d19bd1da
diff --git a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md
index aec6c59a22..0c46e502f8 100644
--- a/docs/c-runtime-library/reference/cgets-s-cgetws-s.md
+++ b/docs/c-runtime-library/reference/cgets-s-cgetws-s.md
@@ -1,9 +1,10 @@
---
title: "_cgets_s, _cgetws_s"
ms.date: "11/04/2016"
-apiname: ["_cgetws_s", "_cgets_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_cgetws_s", "_cgets_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_cgets_s", "cgets_s", "cgetws_s", "_cgetws_s"]
helpviewer_keywords: ["strings [C++], getting from console", "console, getting strings from", "_cgets_s function", "cget_s function", "_cgetws_s function", "cgetws_s function"]
ms.assetid: 38b74897-afe6-4dd9-a43f-36a3c0d72c5c
@@ -71,6 +72,8 @@ If an error occurs during the operation or in the validating of the parameters,
In C++, the use of these functions is simplified by template overloads; the overloads can infer buffer length automatically, thereby eliminating the need to specify a size argument, and they can automatically replace older, less-secure functions with their newer, more secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+
### Generic-Text Routine Mappings
|Tchar.h routine|_UNICODE and _MBCS not defined|_MBCS defined|_UNICODE defined|
diff --git a/docs/c-runtime-library/reference/cgets.md b/docs/c-runtime-library/reference/cgets.md
index ce2f74da0a..748502d2b0 100644
--- a/docs/c-runtime-library/reference/cgets.md
+++ b/docs/c-runtime-library/reference/cgets.md
@@ -1,16 +1,19 @@
---
title: "cgets"
-ms.date: "11/04/2016"
-apiname: ["cgets"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["cgets"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cgets"]
helpviewer_keywords: ["cgets function"]
ms.assetid: 54faf257-5ed6-4301-be19-66d953e901fa
---
# cgets
-This POSIX function is deprecated. Use the ISO C++ conformant [_cgets](../../c-runtime-library/cgets-cgetws.md) or security-enhanced [_cgets_s](cgets-s-cgetws-s.md) instead.
+The Microsoft-specific function name `cgets` is a deprecated alias for the [_cgets](../cgets-cgetws.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use the security-enhanced [_cgets_s](cgets-s-cgetws-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/chdir-wchdir.md b/docs/c-runtime-library/reference/chdir-wchdir.md
index f59b52892e..101702884f 100644
--- a/docs/c-runtime-library/reference/chdir-wchdir.md
+++ b/docs/c-runtime-library/reference/chdir-wchdir.md
@@ -1,9 +1,10 @@
---
title: "_chdir, _wchdir"
ms.date: "11/04/2016"
-apiname: ["_wchdir", "_chdir"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wchdir", "_chdir"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tchdir", "_chdir", "_wchdir", "_tchdir", "wchdir"]
helpviewer_keywords: ["_tchdir function", "_chdir function", "_wchdir function", "tchdir function", "wchdir function", "chdir function", "directories [C++], changing"]
ms.assetid: 85e9393b-62ac-45d5-ab2a-fa2217f6152e
diff --git a/docs/c-runtime-library/reference/chdir.md b/docs/c-runtime-library/reference/chdir.md
index 2daf0d98b6..3fdfc39200 100644
--- a/docs/c-runtime-library/reference/chdir.md
+++ b/docs/c-runtime-library/reference/chdir.md
@@ -1,16 +1,19 @@
---
title: "chdir"
-ms.date: "11/04/2016"
-apiname: ["chdir"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["chdir"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["chdir"]
helpviewer_keywords: ["chdir function"]
ms.assetid: a65275a1-41e4-46be-83a5-167dfacb62a0
---
# chdir
-This POSIX function is deprecated. Use the ISO C++ conformant [_chdir](chdir-wchdir.md) instead.
+The Microsoft-implemented POSIX function name `chdir` is a deprecated alias for the [_chdir](chdir-wchdir.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_chdir](chdir-wchdir.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/chdrive.md b/docs/c-runtime-library/reference/chdrive.md
index ea5664210d..d3a700a30d 100644
--- a/docs/c-runtime-library/reference/chdrive.md
+++ b/docs/c-runtime-library/reference/chdrive.md
@@ -1,9 +1,10 @@
---
title: "_chdrive"
ms.date: "11/04/2016"
-apiname: ["_chdrive"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_chdrive"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["chdrive", "_chdrive"]
helpviewer_keywords: ["drives, changing", "_chdrive function", "chdrive function"]
ms.assetid: 212a1a4b-4fa8-444e-9677-7fca4c8c47e3
diff --git a/docs/c-runtime-library/reference/chgsign-chgsignf-chgsignl.md b/docs/c-runtime-library/reference/chgsign-chgsignf-chgsignl.md
index e7ae8d6bba..33234a8e23 100644
--- a/docs/c-runtime-library/reference/chgsign-chgsignf-chgsignl.md
+++ b/docs/c-runtime-library/reference/chgsign-chgsignf-chgsignl.md
@@ -1,9 +1,10 @@
---
title: "_chgsign, _chgsignf, _chgsignl"
ms.date: "04/05/2018"
-apiname: ["_chgsignl", "_chgsign", "_chgsignf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_chgsignl", "_chgsign", "_chgsignf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_chgsignf", "chgsign", "_chgsignl", "_chgsign"]
helpviewer_keywords: ["_chgsignl function", "_chgsignf function", "chgsign function", "_chgsign function"]
ms.assetid: a6646f8e-213d-4564-8617-f43bc66f989f
diff --git a/docs/c-runtime-library/reference/chmod-wchmod.md b/docs/c-runtime-library/reference/chmod-wchmod.md
index 1fcd645428..de34964be3 100644
--- a/docs/c-runtime-library/reference/chmod-wchmod.md
+++ b/docs/c-runtime-library/reference/chmod-wchmod.md
@@ -1,9 +1,10 @@
---
title: "_chmod, _wchmod"
ms.date: "11/04/2016"
-apiname: ["_chmod", "_wchmod"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_chmod", "_wchmod"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_chmod", "_wchmod", "wchmod"]
helpviewer_keywords: ["_chmod function", "wchmod function", "file permissions [C++]", "chmod function", "files [C++], changing permissions", "_wchmod function"]
ms.assetid: 92f7cb86-b3b0-4232-a599-b8c04a2f2c19
diff --git a/docs/c-runtime-library/reference/chmod.md b/docs/c-runtime-library/reference/chmod.md
index 6d7791f8f6..ca22b1478c 100644
--- a/docs/c-runtime-library/reference/chmod.md
+++ b/docs/c-runtime-library/reference/chmod.md
@@ -1,13 +1,16 @@
---
title: "chmod"
-ms.date: "11/04/2016"
-apiname: ["chmod"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["chmod"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["chmod"]
helpviewer_keywords: ["chmod function"]
ms.assetid: c3294722-2194-4ff4-ac87-d69f155e279b
---
# chmod
-This POSIX function is deprecated. Use the ISO C++ conformant [_chmod](chmod-wchmod.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `chmod` is a deprecated alias for the [_chmod](chmod-wchmod.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_chmod](chmod-wchmod.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/chsize-s.md b/docs/c-runtime-library/reference/chsize-s.md
index 6d2d4b799e..266e97c678 100644
--- a/docs/c-runtime-library/reference/chsize-s.md
+++ b/docs/c-runtime-library/reference/chsize-s.md
@@ -1,9 +1,10 @@
---
title: "_chsize_s"
ms.date: "11/04/2016"
-apiname: ["_chsize_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_chsize_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["chsize_s", "_chsize_s"]
helpviewer_keywords: ["files [C++], changing size", "chsize_s function", "_chsize_s function"]
ms.assetid: d88d2e94-6e3b-42a5-8631-16ac4d82fa38
diff --git a/docs/c-runtime-library/reference/chsize.md b/docs/c-runtime-library/reference/chsize.md
index 58462ef4b1..3ae4ed3c84 100644
--- a/docs/c-runtime-library/reference/chsize.md
+++ b/docs/c-runtime-library/reference/chsize.md
@@ -1,9 +1,10 @@
---
title: "_chsize"
ms.date: "03/29/2018"
-apiname: ["_chsize"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_chsize"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_chsize"]
helpviewer_keywords: ["size", "_chsize function", "size, changing file", "files [C++], changing size", "chsize function"]
ms.assetid: b3e881c5-7b27-4837-a3d4-c51591ab10ff
diff --git a/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md b/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md
index 4caffcb241..116d3f23cb 100644
--- a/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md
+++ b/docs/c-runtime-library/reference/cimag-cimagf-cimagl.md
@@ -1,9 +1,10 @@
---
title: "cimag, cimagf, cimagl"
ms.date: "11/04/2016"
-apiname: ["cimag", "cimagf", "cimagl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cimag", "cimagf", "cimagl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cimagf", "cimagl", "complex/cimag", "complex/cimagf", "complex/cimagl", "cimag"]
helpviewer_keywords: ["cimag function", "cimagf function", "cimagl function"]
ms.assetid: 0d8836f5-d61d-44cd-8731-6f75cb776def
diff --git a/docs/c-runtime-library/reference/clear87-clearfp.md b/docs/c-runtime-library/reference/clear87-clearfp.md
index 6d312b6ba5..daf1c00506 100644
--- a/docs/c-runtime-library/reference/clear87-clearfp.md
+++ b/docs/c-runtime-library/reference/clear87-clearfp.md
@@ -1,9 +1,10 @@
---
title: "_clear87, _clearfp"
ms.date: "04/05/2018"
-apiname: ["_clearfp", "_clear87"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_clearfp", "_clear87"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["clearfp", "_clearfp", "_clear87", "clear87"]
helpviewer_keywords: ["clearing floating point status word", "clearfp function", "_clear87 function", "_clearfp function", "clear87 function"]
ms.assetid: 72d24a70-7688-4793-ae09-c96d33fcca52
diff --git a/docs/c-runtime-library/reference/clearerr-s.md b/docs/c-runtime-library/reference/clearerr-s.md
index 69b1500aba..3537719269 100644
--- a/docs/c-runtime-library/reference/clearerr-s.md
+++ b/docs/c-runtime-library/reference/clearerr-s.md
@@ -1,9 +1,10 @@
---
title: "clearerr_s"
ms.date: "11/04/2016"
-apiname: ["clearerr_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["clearerr_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["clearerr_s"]
helpviewer_keywords: ["error indicator for streams", "resetting stream error indicator", "clearerr_s function"]
ms.assetid: b74d014d-b7a8-494a-a330-e5ffd5614772
diff --git a/docs/c-runtime-library/reference/clearerr.md b/docs/c-runtime-library/reference/clearerr.md
index afc4f54955..a25629bc0e 100644
--- a/docs/c-runtime-library/reference/clearerr.md
+++ b/docs/c-runtime-library/reference/clearerr.md
@@ -1,9 +1,10 @@
---
title: "clearerr"
ms.date: "11/04/2016"
-apiname: ["clearerr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["clearerr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["clearerr"]
helpviewer_keywords: ["error indicator for streams", "resetting stream error indicator", "clearerr function"]
ms.assetid: a9711cd4-3335-43d4-a018-87bbac5b3bac
diff --git a/docs/c-runtime-library/reference/clock.md b/docs/c-runtime-library/reference/clock.md
index 2b47bf926d..f0c4c0d243 100644
--- a/docs/c-runtime-library/reference/clock.md
+++ b/docs/c-runtime-library/reference/clock.md
@@ -1,9 +1,10 @@
---
title: "clock"
ms.date: "11/04/2016"
-apiname: ["clock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["clock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["clock"]
helpviewer_keywords: ["processor time used, calculating", "time, calculating processor", "clock function", "processor time used", "calculating processor time used"]
ms.assetid: 3e1853dd-498f-49ba-b06a-f2315f20904e
diff --git a/docs/c-runtime-library/reference/clog-clogf-clogl.md b/docs/c-runtime-library/reference/clog-clogf-clogl.md
index d39c80d518..e158e3910e 100644
--- a/docs/c-runtime-library/reference/clog-clogf-clogl.md
+++ b/docs/c-runtime-library/reference/clog-clogf-clogl.md
@@ -1,9 +1,10 @@
---
title: "clog, clogf, clogl"
ms.date: "11/04/2016"
-apiname: ["clog", "clogf", "clogl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["clog", "clogf", "clogl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["clog", "clogf", "clogl", "complex/clog", "complex/clogf", "complex/clogl"]
helpviewer_keywords: ["clog function", "clogf function", "clogl function"]
ms.assetid: 870b9b0b-6618-46f3-bfcf-da595cbd5e18
diff --git a/docs/c-runtime-library/reference/clog10-clog10f-clog10l.md b/docs/c-runtime-library/reference/clog10-clog10f-clog10l.md
index 630dcd4ff5..7c94f6ff1f 100644
--- a/docs/c-runtime-library/reference/clog10-clog10f-clog10l.md
+++ b/docs/c-runtime-library/reference/clog10-clog10f-clog10l.md
@@ -1,9 +1,10 @@
---
title: "clog10, clog10f, clog10l"
ms.date: "11/04/2016"
-apiname: ["clog10", "clog10f", "clog10l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["clog10", "clog10f", "clog10l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["clog10", "clog10f", "clog10l", "complex/clog10", "complex/clog10f", "complex/clog10l"]
helpviewer_keywords: ["clog10 function", "clog10f function", "clog10l function"]
ms.assetid: 2ddae00d-ef93-4441-add3-f4d58358401b
diff --git a/docs/c-runtime-library/reference/close.md b/docs/c-runtime-library/reference/close.md
index d8cf578e98..2ca1e43845 100644
--- a/docs/c-runtime-library/reference/close.md
+++ b/docs/c-runtime-library/reference/close.md
@@ -1,9 +1,10 @@
---
title: "_close"
ms.date: "11/04/2016"
-apiname: ["_close"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_close"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_close"]
helpviewer_keywords: ["_close function", "close function", "files [C++], closing"]
ms.assetid: 4708a329-8acf-4cd9-b7b0-a952e1897247
diff --git a/docs/c-runtime-library/reference/cmulcc-fcmulcc-lcmulcc.md b/docs/c-runtime-library/reference/cmulcc-fcmulcc-lcmulcc.md
index 2a77645504..265dd47657 100644
--- a/docs/c-runtime-library/reference/cmulcc-fcmulcc-lcmulcc.md
+++ b/docs/c-runtime-library/reference/cmulcc-fcmulcc-lcmulcc.md
@@ -1,9 +1,10 @@
---
title: "_Cmulcc, _FCmulcc, _LCmulcc"
ms.date: "03/30/2018"
-apiname: ["_Cmulcc", "_FCmulcc", "_LCmulcc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_Cmulcc", "_FCmulcc", "_LCmulcc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_Cmulcc", "_FCmulcc", "_LCmulcc", "complex/_Cmulcc", "complex/_FCmulcc", "complex/_LCmulcc"]
helpviewer_keywords: ["_Cmulcc function", "_FCmulcc function", "_LCmulcc function"]
---
diff --git a/docs/c-runtime-library/reference/cmulcr-fcmulcr-lcmulcr.md b/docs/c-runtime-library/reference/cmulcr-fcmulcr-lcmulcr.md
index 102c30b956..a604886ec7 100644
--- a/docs/c-runtime-library/reference/cmulcr-fcmulcr-lcmulcr.md
+++ b/docs/c-runtime-library/reference/cmulcr-fcmulcr-lcmulcr.md
@@ -1,9 +1,10 @@
---
title: "_Cmulcr, _FCmulcr, _LCmulcr"
ms.date: "03/30/2018"
-apiname: ["_Cmulcr", "_FCmulcr", "_LCmulcr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_Cmulcr", "_FCmulcr", "_LCmulcr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_Cmulcr", "_FCmulcr", "_LCmulcr", "complex/_Cmulcr", "complex/_FCmulcr", "complex/_LCmulcr"]
helpviewer_keywords: ["_Cmulcr function", "_FCmulcr function", "_LCmulcr function"]
---
diff --git a/docs/c-runtime-library/reference/commit.md b/docs/c-runtime-library/reference/commit.md
index 48e5962492..880a0dd698 100644
--- a/docs/c-runtime-library/reference/commit.md
+++ b/docs/c-runtime-library/reference/commit.md
@@ -1,9 +1,10 @@
---
title: "_commit"
ms.date: "11/04/2016"
-apiname: ["_commit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_commit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_commit", "commit"]
helpviewer_keywords: ["files [C++], flushing", "flushing files to disk", "commit function", "_commit function", "committing files to disk"]
ms.assetid: d0c74d3a-4f2d-4fb0-b140-2d687db3d233
diff --git a/docs/c-runtime-library/reference/compl.md b/docs/c-runtime-library/reference/compl.md
index e8f976b92b..0b15ed95c6 100644
--- a/docs/c-runtime-library/reference/compl.md
+++ b/docs/c-runtime-library/reference/compl.md
@@ -1,9 +1,10 @@
---
title: "compl"
ms.date: "11/04/2016"
-apiname: ["compl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["compl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["std::compl", "std.compl", "compl"]
helpviewer_keywords: ["compl function"]
ms.assetid: e03f6fb5-cb8b-4afa-99c0-905f4105fb34
diff --git a/docs/c-runtime-library/reference/configthreadlocale.md b/docs/c-runtime-library/reference/configthreadlocale.md
index af0c8150f9..ac6909d255 100644
--- a/docs/c-runtime-library/reference/configthreadlocale.md
+++ b/docs/c-runtime-library/reference/configthreadlocale.md
@@ -1,9 +1,10 @@
---
title: "_configthreadlocale"
ms.date: "11/04/2016"
-apiname: ["_configthreadlocale"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_configthreadlocale"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_configthreadlocale", "configthreadlocale"]
helpviewer_keywords: ["configthreadlocale function", "locales, per-thread", "_configthreadlocale function", "per-thread locale", "thread locale"]
ms.assetid: 10e4050e-b587-4f30-80bc-6c76b35fc770
diff --git a/docs/c-runtime-library/reference/conj-conjf-conjl.md b/docs/c-runtime-library/reference/conj-conjf-conjl.md
index 0a21f18c8f..07278d4bc0 100644
--- a/docs/c-runtime-library/reference/conj-conjf-conjl.md
+++ b/docs/c-runtime-library/reference/conj-conjf-conjl.md
@@ -1,9 +1,10 @@
---
title: "conj, conjf, conjl"
ms.date: "11/04/2016"
-apiname: ["conj", "conjf", "conjl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["conj", "conjf", "conjl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["conj", "conjf", "conjl", "complex/conj", "complex/conjf", "complex/conjl"]
helpviewer_keywords: ["conj function", "conjf function", "conjl function"]
ms.assetid: 792fccfa-19c6-4890-99f9-a3b89effccd6
diff --git a/docs/c-runtime-library/reference/control87-controlfp-control87-2.md b/docs/c-runtime-library/reference/control87-controlfp-control87-2.md
index 156f24a047..314b1a4f15 100644
--- a/docs/c-runtime-library/reference/control87-controlfp-control87-2.md
+++ b/docs/c-runtime-library/reference/control87-controlfp-control87-2.md
@@ -1,9 +1,10 @@
---
title: "_control87, _controlfp, __control87_2"
ms.date: "08/29/2019"
-apiname: ["_control87", "_controlfp", "__control87_2"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_control87", "_controlfp", "__control87_2"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_control87", "__control87_2", "control87", "_controlfp", "controlfp", "control87_2", "_control87_2"]
helpviewer_keywords: ["floating-point numbers, control word", "_control87 function", "control87 function", "controlfp function", "_controlfp function", "__control87_2 function", "floating-point functions, setting control word", "floating-point functions", "EM_AMBIGUOUS", "control87_2 function"]
ms.assetid: 0d09729d-d9a0-43d6-864c-43ff25e7e0c5
diff --git a/docs/c-runtime-library/reference/controlfp-s.md b/docs/c-runtime-library/reference/controlfp-s.md
index a23e949ac5..1e3b5778ac 100644
--- a/docs/c-runtime-library/reference/controlfp-s.md
+++ b/docs/c-runtime-library/reference/controlfp-s.md
@@ -1,9 +1,10 @@
---
title: "_controlfp_s"
ms.date: "04/05/2018"
-apiname: ["_controlfp_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_controlfp_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["controlfp_s", "_controlfp_s"]
helpviewer_keywords: ["floating-point numbers, control word", "controlfp_s function", "floating-point functions, setting control word", "EM_AMBIGUOUS", "_controlfp_s function"]
ms.assetid: a51fc3f6-ab13-41f0-b227-6bf02d98e987
diff --git a/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md b/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md
index 578094e350..e09af90e80 100644
--- a/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md
+++ b/docs/c-runtime-library/reference/copysign-copysignf-copysignl-copysign-copysignf-copysignl.md
@@ -1,9 +1,10 @@
---
title: "copysign, copysignf, copysignl, _copysign, _copysignf, _copysignl"
ms.date: "04/05/2018"
-apiname: ["copysignf", "copysignl", "_copysignl", "_copysign", "_copysignf", "copysign"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["copysignf", "copysignl", "_copysignl", "_copysign", "_copysignf", "copysign"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_copysignl", "copysign", "copysignf", "_copysign", "copysignl", "_copysignf"]
helpviewer_keywords: ["copysignl function", "_copysignl function", "copysign function", "_copysignf function", "_copysign function", "copysignf function"]
ms.assetid: 009216d6-72a2-402d-aa6c-91d924b2c9e4
diff --git a/docs/c-runtime-library/reference/cos-cosf-cosl.md b/docs/c-runtime-library/reference/cos-cosf-cosl.md
index 40e9a3522f..ecd1006bd3 100644
--- a/docs/c-runtime-library/reference/cos-cosf-cosl.md
+++ b/docs/c-runtime-library/reference/cos-cosf-cosl.md
@@ -1,9 +1,10 @@
---
title: "cos, cosf, cosl"
ms.date: "04/05/2018"
-apiname: ["cos", "cosf", "cosl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cos", "cosf", "cosl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cos", "cosf", "cosl"]
helpviewer_keywords: ["cosines", "cosl function", "calculating cosine", "cosf function", "cos function", "trigonometric functions", "cosines, calculating"]
ms.assetid: ae90435e-6b68-4a47-a81f-be87d5c08f16
diff --git a/docs/c-runtime-library/reference/cosh-coshf-coshl.md b/docs/c-runtime-library/reference/cosh-coshf-coshl.md
index fbcad46f84..61e72b7663 100644
--- a/docs/c-runtime-library/reference/cosh-coshf-coshl.md
+++ b/docs/c-runtime-library/reference/cosh-coshf-coshl.md
@@ -1,9 +1,10 @@
---
title: "cosh, coshf, coshl"
ms.date: "04/11/2018"
-apiname: ["cosh", "coshf", "coshl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cosh", "coshf", "coshl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cosh", "coshf", "coshl"]
helpviewer_keywords: ["cosh function", "coshf function", "coshl function", "trigonometric functions", "hyperbolic functions"]
---
diff --git a/docs/c-runtime-library/reference/countof-macro.md b/docs/c-runtime-library/reference/countof-macro.md
index 1c9cf1a9a3..0bbd898f75 100644
--- a/docs/c-runtime-library/reference/countof-macro.md
+++ b/docs/c-runtime-library/reference/countof-macro.md
@@ -1,8 +1,9 @@
---
title: "_countof Macro"
ms.date: "03/22/2018"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_countof", "countof"]
helpviewer_keywords: ["countof macro", "_countof macro"]
ms.assetid: 86198767-f7e5-4beb-898d-3cbbf60350a3
diff --git a/docs/c-runtime-library/reference/cpow-cpowf-cpowl.md b/docs/c-runtime-library/reference/cpow-cpowf-cpowl.md
index 2f59cc123c..af3e03f2bf 100644
--- a/docs/c-runtime-library/reference/cpow-cpowf-cpowl.md
+++ b/docs/c-runtime-library/reference/cpow-cpowf-cpowl.md
@@ -1,9 +1,10 @@
---
title: "cpow, cpowf, cpowl"
ms.date: "11/04/2016"
-apiname: ["cpow", "cpowf", "cpowl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cpow", "cpowf", "cpowl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cpow", "cpowf", "cpowl", "complex/cpow", "complex/cpowf", "complex/copwl"]
helpviewer_keywords: ["cpow function", "cpowf function", "complex/cpowl function"]
ms.assetid: 83fe2187-22b7-4295-ab16-4d77abdbb80b
diff --git a/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md b/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md
index 1dd7ebd6ed..cc2195ca9c 100644
--- a/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md
+++ b/docs/c-runtime-library/reference/cprintf-cprintf-l-cwprintf-cwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "_cprintf, _cprintf_l, _cwprintf, _cwprintf_l"
ms.date: "11/04/2016"
-apiname: ["_cwprintf_l", "_cprintf_l", "_cwprintf", "_cprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_cwprintf_l", "_cprintf_l", "_cwprintf", "_cprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_cwprintf", "cwprintf", "tcprintf", "_tcprintf", "_cprintf", "cwprintf_l", "tcprintf_l", "_tcprintf_l", "cprintf_l", "_cprintf_l", "_cwprintf_l"]
helpviewer_keywords: ["_cprintf_l function", "_cwprintf_l function", "cwprintf function", "cprintf_l function", "characters, printing to console", "printing characters to console", "_tcprintf_l function", "tcprintf function", "_tcprintf function", "tcprintf_l function", "_cwprintf function", "cwprintf_l function", "_cprintf function"]
ms.assetid: 67ffefd4-45b3-4be0-9833-d8d26ac7c4e2
diff --git a/docs/c-runtime-library/reference/cprintf-p-cprintf-p-l-cwprintf-p-cwprintf-p-l.md b/docs/c-runtime-library/reference/cprintf-p-cprintf-p-l-cwprintf-p-cwprintf-p-l.md
index fb8ecdeb7f..cb10ab2b79 100644
--- a/docs/c-runtime-library/reference/cprintf-p-cprintf-p-l-cwprintf-p-cwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/cprintf-p-cprintf-p-l-cwprintf-p-cwprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_cprintf_p, _cprintf_p_l, _cwprintf_p, _cwprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_cprintf_p_l", "_cwprintf_p_l", "_cwprintf_p", "_cprintf_p"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_cprintf_p_l", "_cwprintf_p_l", "_cwprintf_p", "_cprintf_p"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cprintf_p", "cwprintf_p", "tcprintf_p", "_cwprintf_p_l", "_cprintf_p", "csprintf_p_l", "_cprintf_p_l", "_cwprintf_p", "_tcprintf_p", "cprintf_p_l"]
helpviewer_keywords: ["_cwprintf_p_l function", "cwprintf_p function", "tcprintf_p_l function", "cprintf_p_l function", "_tcprintf_p function", "_tcprintf_p_l function", "_cprintf_p function", "_cprintf_p_l function", "cwprintf_p_l function", "_cwprintf_p function", "tcprintf_p function", "cprintf_p function"]
ms.assetid: 1f82fd7d-13c8-4c4a-a3e4-db0df3873564
diff --git a/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md b/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md
index a36fc7b39f..1b1ec0626c 100644
--- a/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "_cprintf_s, _cprintf_s_l, _cwprintf_s, _cwprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_cwprintf_s_l", "_cprintf_s_l", "_cprintf_s", "_cwprintf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_cwprintf_s_l", "_cprintf_s_l", "_cprintf_s", "_cwprintf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_cwprintf_s_l", "_cprintf_s", "cwprintf_s", "_cprintf_s_l", "cwprintf_s_l", "cprintf_s_l", "_tcprintf_s", "cprintf_s", "_cwprintf_s", "tcprintf_s"]
helpviewer_keywords: ["tcprintf_s_l function", "_cprintf_s_l function", "_cwprintf_s_l function", "tcprintf_s function", "_tcprintf_s_l function", "_cwprintf_s function", "cwprintf_s function", "_cprintf_s function", "cprintf_s function", "_tcprintf_s function", "cprintf_s_l function", "cwprintf_s_l function"]
ms.assetid: c28504fe-0d20-4f06-8f97-ee33225922ad
diff --git a/docs/c-runtime-library/reference/cprintf.md b/docs/c-runtime-library/reference/cprintf.md
index a6a3b3d3e5..6b9cf066fc 100644
--- a/docs/c-runtime-library/reference/cprintf.md
+++ b/docs/c-runtime-library/reference/cprintf.md
@@ -1,16 +1,19 @@
---
title: "cprintf"
-ms.date: "11/04/2016"
-apiname: ["cprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["cprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cprintf"]
helpviewer_keywords: ["cprintf function"]
ms.assetid: 573e6634-d7e5-4856-8c01-627dcfbd5fc8
---
# cprintf
-This POSIX function is deprecated. Use the ISO C++ conformant [_cprintf](cprintf-cprintf-l-cwprintf-cwprintf-l.md) or security-enhanced [_cprintf_s](cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md) instead.
+The Microsoft-specific function name `cprintf` is a deprecated alias for the [_cprintf](cprintf-cprintf-l-cwprintf-cwprintf-l.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use the [_cprintf](cprintf-cprintf-l-cwprintf-cwprintf-l.md) or security-enhanced [_cprintf_s](cprintf-s-cprintf-s-l-cwprintf-s-cwprintf-s-l.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md b/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md
index 50c0a82f9b..ac0e230483 100644
--- a/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md
+++ b/docs/c-runtime-library/reference/cproj-cprojf-cprojl.md
@@ -1,9 +1,10 @@
---
title: "cproj, cprojf, cprojl"
ms.date: "11/04/2016"
-apiname: ["cproj", "cprojf", "cprojl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["cproj", "cprojf", "cprojl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cproj", "cprojf", "cprojl", "complex/cproj", "complex/cprojf", "complex/cprojl"]
helpviewer_keywords: ["cproj function", "cprojf function", "cprojl function"]
ms.assetid: 32b49623-13bf-4cae-802e-7912d75030fe
diff --git a/docs/c-runtime-library/reference/cputs-cputws.md b/docs/c-runtime-library/reference/cputs-cputws.md
index 56df4d669a..fbed4bd3e7 100644
--- a/docs/c-runtime-library/reference/cputs-cputws.md
+++ b/docs/c-runtime-library/reference/cputs-cputws.md
@@ -1,9 +1,10 @@
---
title: "_cputs, _cputws"
ms.date: "11/04/2016"
-apiname: ["_cputws", "_cputs"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_cputws", "_cputs"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cputws", "_cputs", "_cputws"]
helpviewer_keywords: ["strings [C++], writing", "_cputs function", "_cputws function", "putting strings to the console", "cputs function", "console, sending strings to", "cputws function"]
ms.assetid: ec418484-0f8d-43ec-8d8b-198a556c659e
diff --git a/docs/c-runtime-library/reference/cputs.md b/docs/c-runtime-library/reference/cputs.md
index 28a8cc7205..0e4706b98d 100644
--- a/docs/c-runtime-library/reference/cputs.md
+++ b/docs/c-runtime-library/reference/cputs.md
@@ -1,16 +1,19 @@
---
title: "cputs"
-ms.date: "11/04/2016"
-apiname: ["cputs"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["cputs"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cputs"]
helpviewer_keywords: ["cputs function"]
ms.assetid: 0c2a7d4e-623a-4cb2-a0f9-1900c05bac08
---
# cputs
-This POSIX function is deprecated. Use the ISO C++ conformant [_cputs](cputs-cputws.md) instead.
+The Microsoft-specific function name `cputs` is a deprecated alias for the [_cputs](cputs-cputws.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_cputs](cputs-cputws.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/creal-crealf-creall.md b/docs/c-runtime-library/reference/creal-crealf-creall.md
index 78a9d08f59..0580f1b5b7 100644
--- a/docs/c-runtime-library/reference/creal-crealf-creall.md
+++ b/docs/c-runtime-library/reference/creal-crealf-creall.md
@@ -1,9 +1,10 @@
---
title: "creal, crealf, creall"
ms.date: "03/30/2018"
-apiname: ["creal", "crealf", "creall"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["creal", "crealf", "creall"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["creal", "crealf", "creall", "complex/creal", "complex/crealf", "complex/creall"]
helpviewer_keywords: ["creal function", "crealf function", "creall function"]
ms.assetid: fa3ac62f-7aa3-4238-a71f-d6b00cd0c7c8
diff --git a/docs/c-runtime-library/reference/creat-wcreat.md b/docs/c-runtime-library/reference/creat-wcreat.md
index 02cf7e1678..f9ea9bbba6 100644
--- a/docs/c-runtime-library/reference/creat-wcreat.md
+++ b/docs/c-runtime-library/reference/creat-wcreat.md
@@ -1,9 +1,10 @@
---
title: "_creat, _wcreat"
ms.date: "11/04/2016"
-apiname: ["_creat", "_wcreat"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_creat", "_wcreat"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcreat", "_wcreat", "_creat", "tcreat", "_tcreat"]
helpviewer_keywords: ["wcreat function", "_wcreat function", "files [C++], creating", "_creat function", "tcreat function", "creat function", "_tcreat function"]
ms.assetid: 3b3b795d-1620-40ec-bd2b-a4bbb0d20fe5
diff --git a/docs/c-runtime-library/reference/creat.md b/docs/c-runtime-library/reference/creat.md
index 2091672997..6123b37326 100644
--- a/docs/c-runtime-library/reference/creat.md
+++ b/docs/c-runtime-library/reference/creat.md
@@ -1,13 +1,16 @@
---
title: "creat"
-ms.date: "11/04/2016"
-apiname: ["creat"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["creat"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["creat"]
helpviewer_keywords: ["creat function"]
ms.assetid: 3aa6f0cc-5ae6-40d5-be94-0ab6f53c0c5b
---
# creat
-This POSIX function is deprecated. Use the ISO C++ conformant [_creat](creat-wcreat.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `creat` is a deprecated alias for the [_creat](creat-wcreat.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_creat](creat-wcreat.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/create-locale-wcreate-locale.md b/docs/c-runtime-library/reference/create-locale-wcreate-locale.md
index c2cebba892..ddf86d7435 100644
--- a/docs/c-runtime-library/reference/create-locale-wcreate-locale.md
+++ b/docs/c-runtime-library/reference/create-locale-wcreate-locale.md
@@ -1,9 +1,10 @@
---
title: "_create_locale, _wcreate_locale"
ms.date: "11/04/2016"
-apiname: ["_create_locale", "__create_locale", "_wcreate_locale"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_create_locale", "__create_locale", "_wcreate_locale"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["create_locale", "_create_locale", "__create_locale"]
helpviewer_keywords: ["locales, creating", "_create_locale function", "create_locale function", "__create_locale function"]
ms.assetid: ca362464-9f4a-4ec6-ab03-316c55c5be81
diff --git a/docs/c-runtime-library/reference/crtcheckmemory.md b/docs/c-runtime-library/reference/crtcheckmemory.md
index b8c209d6e6..1d7e29d9a3 100644
--- a/docs/c-runtime-library/reference/crtcheckmemory.md
+++ b/docs/c-runtime-library/reference/crtcheckmemory.md
@@ -1,9 +1,10 @@
---
title: "_CrtCheckMemory"
ms.date: "11/04/2016"
-apiname: ["_CrtCheckMemory"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtCheckMemory"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtCheckMemory", "_CrtCheckMemory"]
helpviewer_keywords: ["_CrtCheckMemory function", "CrtCheckMemory function"]
ms.assetid: 457cc72e-60fd-4177-ab5c-6ae26a420765
diff --git a/docs/c-runtime-library/reference/crtdbgbreak.md b/docs/c-runtime-library/reference/crtdbgbreak.md
index c7b279f8ba..52d08844a8 100644
--- a/docs/c-runtime-library/reference/crtdbgbreak.md
+++ b/docs/c-runtime-library/reference/crtdbgbreak.md
@@ -1,9 +1,10 @@
---
title: "_CrtDbgBreak"
ms.date: "11/04/2016"
-apiname: ["_CrtDbgBreak"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtDbgBreak"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtDbgBreak", "CrtDbgBreak"]
helpviewer_keywords: ["CrtDbgBreak function", "_CrtDbgBreak function"]
ms.assetid: 01f8b4a2-a2c7-4e1f-9f39-e573b4a7871f
diff --git a/docs/c-runtime-library/reference/crtdbgreport-crtdbgreportw.md b/docs/c-runtime-library/reference/crtdbgreport-crtdbgreportw.md
index 69abd98ff1..de79d5a492 100644
--- a/docs/c-runtime-library/reference/crtdbgreport-crtdbgreportw.md
+++ b/docs/c-runtime-library/reference/crtdbgreport-crtdbgreportw.md
@@ -1,9 +1,10 @@
---
title: "_CrtDbgReport, _CrtDbgReportW"
ms.date: "11/04/2016"
-apiname: ["_CrtDbgReport", "_CrtDbgReportW"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtDbgReport", "_CrtDbgReportW"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtDbgReport", "CrtDbgReportW", "_CrtDbgReportW", "_CrtDbgReport"]
helpviewer_keywords: ["debug reporting", "_CrtDbgReport function", "CrtDbgReport function", "CrtDbgReportW function", "_CrtDbgReportW function"]
ms.assetid: 6e581fb6-f7fb-4716-9432-f0145d639ecc
diff --git a/docs/c-runtime-library/reference/crtdoforallclientobjects.md b/docs/c-runtime-library/reference/crtdoforallclientobjects.md
index 77f4750058..4607c28c56 100644
--- a/docs/c-runtime-library/reference/crtdoforallclientobjects.md
+++ b/docs/c-runtime-library/reference/crtdoforallclientobjects.md
@@ -1,9 +1,10 @@
---
title: "_CrtDoForAllClientObjects"
ms.date: "11/04/2016"
-apiname: ["_CrtDoForAllClientObjects"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtDoForAllClientObjects"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtDoForAllClientObjects", "CrtDoForAllClientObjects", "crtdbg/_CrdDoForAllClientObjects"]
helpviewer_keywords: ["_CrtDoForAllClientObjects function", "CrtDoForAllClientObjects function"]
ms.assetid: d0fdb835-3cdc-45f1-9a21-54208e8df248
diff --git a/docs/c-runtime-library/reference/crtdumpmemoryleaks.md b/docs/c-runtime-library/reference/crtdumpmemoryleaks.md
index 1ca84c1ae1..46d50039df 100644
--- a/docs/c-runtime-library/reference/crtdumpmemoryleaks.md
+++ b/docs/c-runtime-library/reference/crtdumpmemoryleaks.md
@@ -1,9 +1,10 @@
---
title: "_CrtDumpMemoryLeaks"
ms.date: "11/04/2016"
-apiname: ["_CrtDumpMemoryLeaks"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtDumpMemoryLeaks"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CRTDBG_LEAK_CHECK_DF", "CRTDBG_CHECK_CRT_DF", "_CRTDBG_LEAK_CHECK_DF", "CrtDumpMemoryLeaks", "_CrtDumpMemoryLeaks", "_CRTDBG_CHECK_CRT_DF"]
helpviewer_keywords: ["CrtDumpMemoryLeaks function", "CRTDBG_LEAK_CHECK_DF macro", "_CRTDBG_LEAK_CHECK_DF macro", "_CrtDumpMemoryLeaks function", "CRTDBG_CHECK_CRT_DF macro", "_CRTDBG_CHECK_CRT_DF macro"]
ms.assetid: 71b2eab4-7f55-44e8-a55a-bfea4f32d34c
diff --git a/docs/c-runtime-library/reference/crtgetallochook.md b/docs/c-runtime-library/reference/crtgetallochook.md
index 5916988144..efa5910cb8 100644
--- a/docs/c-runtime-library/reference/crtgetallochook.md
+++ b/docs/c-runtime-library/reference/crtgetallochook.md
@@ -1,9 +1,10 @@
---
title: "_CrtGetAllocHook"
ms.date: "11/04/2016"
-apiname: ["_CrtGetAllocHook"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtGetAllocHook"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtGetAllocHook", "_CrtGetAllocHook"]
helpviewer_keywords: ["_CrtGetAllocHook function", "CrtGetAllocHook function"]
ms.assetid: 036acf7c-547a-4b3f-a636-80451070d7ed
diff --git a/docs/c-runtime-library/reference/crtgetdumpclient.md b/docs/c-runtime-library/reference/crtgetdumpclient.md
index b493e1691d..117ed57a4a 100644
--- a/docs/c-runtime-library/reference/crtgetdumpclient.md
+++ b/docs/c-runtime-library/reference/crtgetdumpclient.md
@@ -1,9 +1,10 @@
---
title: "_CrtGetDumpClient"
ms.date: "11/04/2016"
-apiname: ["_CrtGetDumpClient"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtGetDumpClient"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtGetDumpClient", "_CrtGetDumpClient"]
helpviewer_keywords: ["_CrtGetDumpClient function", "CrtGetDumpClient function"]
ms.assetid: 9051867f-341b-493b-b53d-45d2b454a3ad
diff --git a/docs/c-runtime-library/reference/crtgetreporthook.md b/docs/c-runtime-library/reference/crtgetreporthook.md
index e849241347..c8969df12f 100644
--- a/docs/c-runtime-library/reference/crtgetreporthook.md
+++ b/docs/c-runtime-library/reference/crtgetreporthook.md
@@ -1,9 +1,10 @@
---
title: "_CrtGetReportHook"
ms.date: "11/04/2016"
-apiname: ["_CrtGetReportHook"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtGetReportHook"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtGetReportHook", "_CrtGetReportHook"]
helpviewer_keywords: ["CrtGetReportHook function", "_CrtGetReportHook function"]
ms.assetid: 922758ed-7edd-4359-9c92-0535192dc11a
diff --git a/docs/c-runtime-library/reference/crtismemoryblock.md b/docs/c-runtime-library/reference/crtismemoryblock.md
index 39096c981f..f46aca494c 100644
--- a/docs/c-runtime-library/reference/crtismemoryblock.md
+++ b/docs/c-runtime-library/reference/crtismemoryblock.md
@@ -1,9 +1,10 @@
---
title: "_CrtIsMemoryBlock"
ms.date: "11/04/2016"
-apiname: ["_CrtIsMemoryBlock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtIsMemoryBlock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtlsMemoryBlock", "_CrtIsMemoryBlock"]
helpviewer_keywords: ["_CrtIsMemoryBlock function", "CrtIsMemoryBlock function"]
ms.assetid: f7cbbc60-3690-4da0-a07b-68fd7f250273
diff --git a/docs/c-runtime-library/reference/crtisvalidheappointer.md b/docs/c-runtime-library/reference/crtisvalidheappointer.md
index db38d4e72e..b32727bb78 100644
--- a/docs/c-runtime-library/reference/crtisvalidheappointer.md
+++ b/docs/c-runtime-library/reference/crtisvalidheappointer.md
@@ -1,9 +1,10 @@
---
title: "_CrtIsValidHeapPointer"
ms.date: "11/04/2016"
-apiname: ["_CrtIsValidHeapPointer"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtIsValidHeapPointer"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtlsValidHeapPointer", "_CrtIsValidHeapPointer"]
helpviewer_keywords: ["_CrtIsValidHeapPointer function", "CrtIsValidHeapPointer function"]
ms.assetid: caf597ce-1b05-4764-9f37-0197a982bec5
diff --git a/docs/c-runtime-library/reference/crtisvalidpointer.md b/docs/c-runtime-library/reference/crtisvalidpointer.md
index f002dd07ff..7d80bbfd74 100644
--- a/docs/c-runtime-library/reference/crtisvalidpointer.md
+++ b/docs/c-runtime-library/reference/crtisvalidpointer.md
@@ -1,9 +1,10 @@
---
title: "_CrtIsValidPointer"
ms.date: "11/04/2016"
-apiname: ["_CrtIsValidPointer"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtIsValidPointer"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtlsValidPointer", "_CrtIsValidPointer"]
helpviewer_keywords: ["CrtIsValidPointer function", "_CrtIsValidPointer function"]
ms.assetid: 91c35590-ea5e-450f-a15d-ad8d62ade1fa
diff --git a/docs/c-runtime-library/reference/crtmemcheckpoint.md b/docs/c-runtime-library/reference/crtmemcheckpoint.md
index 9e9beeb4fe..c876c8c7b6 100644
--- a/docs/c-runtime-library/reference/crtmemcheckpoint.md
+++ b/docs/c-runtime-library/reference/crtmemcheckpoint.md
@@ -1,9 +1,10 @@
---
title: "_CrtMemCheckpoint"
ms.date: "11/04/2016"
-apiname: ["_CrtMemCheckpoint"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtMemCheckpoint"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtMemCheckpoint", "_CrtMemCheckpoint", "crtdbg/_CrtMemCheckpoint"]
helpviewer_keywords: ["CrtMemCheckpoint function", "_CrtMemCheckpoint function"]
ms.assetid: f1bacbaa-5a0c-498a-ac7a-b6131d83dfbc
diff --git a/docs/c-runtime-library/reference/crtmemdifference.md b/docs/c-runtime-library/reference/crtmemdifference.md
index 0feabf3ef3..35b586ad3a 100644
--- a/docs/c-runtime-library/reference/crtmemdifference.md
+++ b/docs/c-runtime-library/reference/crtmemdifference.md
@@ -1,9 +1,10 @@
---
title: "_CrtMemDifference"
ms.date: "11/04/2016"
-apiname: ["_CrtMemDifference"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtMemDifference"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtMemDifference", "CrtMemDifference"]
helpviewer_keywords: ["CrtMemDifference function", "_CrtMemDifference function"]
ms.assetid: 0f327278-b551-482f-958b-76941f796ba4
diff --git a/docs/c-runtime-library/reference/crtmemdumpallobjectssince.md b/docs/c-runtime-library/reference/crtmemdumpallobjectssince.md
index 877399c84d..c2a060b6b9 100644
--- a/docs/c-runtime-library/reference/crtmemdumpallobjectssince.md
+++ b/docs/c-runtime-library/reference/crtmemdumpallobjectssince.md
@@ -1,9 +1,10 @@
---
title: "_CrtMemDumpAllObjectsSince"
ms.date: "11/04/2016"
-apiname: ["_CrtMemDumpAllObjectsSince"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtMemDumpAllObjectsSince"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtMemDumpAllObjectsSince", "_CrtMemDumpAllObjectsSince"]
helpviewer_keywords: ["_CrtMemDumpAllObjectsSince function", "CrtMemDumpAllObjectsSince function"]
ms.assetid: c48a447a-e6bb-475c-9271-a3021182a0dc
diff --git a/docs/c-runtime-library/reference/crtmemdumpstatistics.md b/docs/c-runtime-library/reference/crtmemdumpstatistics.md
index acadb23d4a..342f27e212 100644
--- a/docs/c-runtime-library/reference/crtmemdumpstatistics.md
+++ b/docs/c-runtime-library/reference/crtmemdumpstatistics.md
@@ -1,9 +1,10 @@
---
title: "_CrtMemDumpStatistics"
ms.date: "11/04/2016"
-apiname: ["_CrtMemDumpStatistics"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtMemDumpStatistics"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtMemDumpStatistics", "_CrtMemDumpStatistics"]
helpviewer_keywords: ["_CrtMemDumpStatistics function", "CrtMemDumpStatistics function"]
ms.assetid: 27b9d731-3184-4a2d-b9a7-6566ab28a9fe
diff --git a/docs/c-runtime-library/reference/crtreportblocktype.md b/docs/c-runtime-library/reference/crtreportblocktype.md
index df09ce638c..473d941849 100644
--- a/docs/c-runtime-library/reference/crtreportblocktype.md
+++ b/docs/c-runtime-library/reference/crtreportblocktype.md
@@ -1,9 +1,10 @@
---
title: "_CrtReportBlockType"
ms.date: "11/04/2016"
-apiname: ["_CrtReportBlockType"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtReportBlockType"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtReportBlockType", "CrtReportBlockType"]
helpviewer_keywords: ["CrtReportBlockType function", "BLOCK_SUBTYPE macro", "_CrtReportBlockType function", "_BLOCK_TYPE macro", "_BLOCK_SUBTYPE macro", "BLOCK_TYPE macro"]
ms.assetid: 0f4b9da7-bebb-4956-9541-b2581640ec6b
diff --git a/docs/c-runtime-library/reference/crtsetallochook.md b/docs/c-runtime-library/reference/crtsetallochook.md
index 7fb1f1d90e..50098abb7a 100644
--- a/docs/c-runtime-library/reference/crtsetallochook.md
+++ b/docs/c-runtime-library/reference/crtsetallochook.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetAllocHook"
ms.date: "11/04/2016"
-apiname: ["_CrtSetAllocHook"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetAllocHook"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtSetAllocHook", "CrtSetAllocHook"]
helpviewer_keywords: ["_CrtSetAllocHook function", "CrtSetAllocHook function"]
ms.assetid: 405df37b-2fd1-42c8-83bc-90887f17f29d
diff --git a/docs/c-runtime-library/reference/crtsetbreakalloc.md b/docs/c-runtime-library/reference/crtsetbreakalloc.md
index 4418566542..1e4bc5e0c3 100644
--- a/docs/c-runtime-library/reference/crtsetbreakalloc.md
+++ b/docs/c-runtime-library/reference/crtsetbreakalloc.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetBreakAlloc"
ms.date: "11/04/2016"
-apiname: ["_CrtSetBreakAlloc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetBreakAlloc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtSetBreakAlloc", "_CrtSetBreakAlloc"]
helpviewer_keywords: ["CrtSetBreakAlloc function", "_CrtSetBreakAlloc function"]
ms.assetid: 33bfc6af-a9ea-405b-a29f-1c2d4d9880a1
diff --git a/docs/c-runtime-library/reference/crtsetdbgflag.md b/docs/c-runtime-library/reference/crtsetdbgflag.md
index c1dc14d03c..495f0e8edc 100644
--- a/docs/c-runtime-library/reference/crtsetdbgflag.md
+++ b/docs/c-runtime-library/reference/crtsetdbgflag.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetDbgFlag"
ms.date: "11/04/2016"
-apiname: ["_CrtSetDbgFlag"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetDbgFlag"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CRTDBG_REPORT_FLAG", "_CRTDBG_CHECK_EVERY_16_DF", "_CRTDBG_CHECK_DEFAULT_DF", "CRTDBG_CHECK_DEFAULT_DF", "CRTDBG_CHECK_EVERY_128_DF", "CRTDBG_CHECK_EVERY_1024_DF", "_CRTDBG_CHECK_EVERY_128_DF", "CrtSetDbgFlag", "CRTDBG_CHECK_EVERY_16_DF", "_CRTDBG_CHECK_EVERY_1024_DF", "_CrtSetDbgFlag", "CRTDBG_REPORT_FLAG"]
helpviewer_keywords: ["_CRTDBG_CHECK_EVERY_16_DF macro", "CRTDBG_CHECK_EVERY_16_DF macro", "_CRTDBG_CHECK_ALWAYS_DF macro", "_CRTDBG_CHECK_DEFAULT_DF macro", "CRTDBG_ALLOC_MEM_DF macro", "CRTDBG_CHECK_ALWAYS_DF macro", "_CRTDBG_ALLOC_MEM_DF macro", "_CRTDBG_REPORT_FLAG macro", "_CRTDBG_CHECK_EVERY_128_DF macro", "CRTDBG_REPORT_FLAG macro", "_CRTDBG_CHECK_EVERY_1024_DF macro", "CRTDBG_CHECK_DEFAULT_DF macro", "CRTDBG_CHECK_EVERY_1024_DF macro", "_CrtSetDbgFlag function", "CrtSetDbgFlag function", "_CRTDBG_DELAY_FREE_MEM_DF macro", "CRTDBG_CHECK_EVERY_128_DF macro", "CRTDBG_DELAY_FREE_MEM_DF macro", "CRTDBG_CHECK_CRT_DF macro", "_CRTDBG_CHECK_CRT_DF macro"]
ms.assetid: b5657ffb-6178-4cbf-9886-1af904ede94c
diff --git a/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md b/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md
index dfc8dc1d27..718224aa85 100644
--- a/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md
+++ b/docs/c-runtime-library/reference/crtsetdebugfillthreshold.md
@@ -1,11 +1,13 @@
---
title: "_CrtSetDebugFillThreshold"
-ms.date: "03/21/2018"
-apiname: ["_CrtSetDebugFillThreshold"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+description: "Use the _CrtSetDebugFillThreshold function to set the maximum amount of buffer to fill in secure CRT functions."
+ms.date: "10/31/2019"
+api_name: ["_CrtSetDebugFillThreshold"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtSetDebugFillThreshold", "CrtSetDebugFillThreshold"]
-helpviewer_keywords: ["debug, buffer-filling behavior", "CrtSetDebugFillThreshold function", "_CrtSetDebugFillThreshold function", "buffer-filling behavior", "0xFD"]
+helpviewer_keywords: ["debug, buffer-filling behavior", "CrtSetDebugFillThreshold function", "_CrtSetDebugFillThreshold function", "buffer-filling behavior", "0xFE"]
ms.assetid: 6cb360e8-56ae-4248-b17f-e28aee3e0ed7
---
# _CrtSetDebugFillThreshold
@@ -29,12 +31,18 @@ The previous threshold value.
## Remarks
-The debug versions of some security-enhanced CRT functions fill the buffer passed to them with a special character (0xFE). This helps to find cases where the incorrect size was passed to the function. Unfortunately, it also reduces performance. To improve performance, use **_CrtSetDebugFillThreshold** to disable buffer-filling for buffers larger than the *newThreshold* threshold. A *newThreshold* value of 0 disables it for all buffers.
+The debug versions of some security-enhanced CRT functions fill the buffer passed to them with a special character (0xFE). This fill character helps to find cases where the incorrect size was passed to the function. Unfortunately, it also reduces performance. To improve performance, use **_CrtSetDebugFillThreshold** to disable buffer-filling for buffers larger than the *newThreshold* threshold. A *newThreshold* value of 0 disables it for all buffers.
The default threshold is **SIZE_T_MAX**.
Here is a list of the affected functions.
+- [asctime_s, _wasctime_s](asctime-s-wasctime-s.md)
+
+- [_cgets_s, _cgetws_s](cgets-s-cgetws-s.md)
+
+- [ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s](ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md)
+
- [_ecvt_s](ecvt-s.md)
- [_fcvt_s](fcvt-s.md)
@@ -51,12 +59,16 @@ Here is a list of the affected functions.
- [_mbsnbset_s, _mbsnbset_s_l](mbsnbset-s-mbsnbset-s-l.md)
+- [_mktemp_s, _wmktemp_s](makepath-s-wmakepath-s.md)
+
- [_splitpath_s, _wsplitpath_s](splitpath-s-wsplitpath-s.md)
- [strcat_s, wcscat_s, _mbscat_s](strcat-s-wcscat-s-mbscat-s.md)
- [strcpy_s, wcscpy_s, _mbscpy_s](strcpy-s-wcscpy-s-mbscpy-s.md)
+- [_strdate_s, _wstrdate_s](strdate-s-wstrdate-s.md)
+
- [strerror_s, _strerror_s, _wcserror_s, \__wcserror_s](strerror-s-strerror-s-wcserror-s-wcserror-s.md)
- [_strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l](strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md)
@@ -69,6 +81,8 @@ Here is a list of the affected functions.
- [_strset_s, _strset_s_l, _wcsset_s, _wcsset_s_l, _mbsset_s, _mbsset_s_l](strset-s-strset-s-l-wcsset-s-wcsset-s-l-mbsset-s-mbsset-s-l.md)
+- [_strtime_s, _wstrtime_s](strtime-s-wstrtime-s.md)
+
- [_strupr_s, _strupr_s_l, _mbsupr_s, _mbsupr_s_l, _wcsupr_s, _wcsupr_s_l](strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md)
## Requirements
diff --git a/docs/c-runtime-library/reference/crtsetdumpclient.md b/docs/c-runtime-library/reference/crtsetdumpclient.md
index 1e5ae745d2..df227decf0 100644
--- a/docs/c-runtime-library/reference/crtsetdumpclient.md
+++ b/docs/c-runtime-library/reference/crtsetdumpclient.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetDumpClient"
ms.date: "11/04/2016"
-apiname: ["_CrtSetDumpClient"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetDumpClient"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtSetDumpClient", "CrtSetDumpClient"]
helpviewer_keywords: ["_CrtSetDumpClient function", "CrtSetDumpClient function"]
ms.assetid: f3dd06d0-c331-4a12-b68d-25378d112033
diff --git a/docs/c-runtime-library/reference/crtsetreportfile.md b/docs/c-runtime-library/reference/crtsetreportfile.md
index 80e5153d40..66209648de 100644
--- a/docs/c-runtime-library/reference/crtsetreportfile.md
+++ b/docs/c-runtime-library/reference/crtsetreportfile.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetReportFile"
ms.date: "11/04/2016"
-apiname: ["_CrtSetReportFile"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetReportFile"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtSetReportFile", "_CrtSetReportFile"]
helpviewer_keywords: ["CrtSetReportFile function", "_CrtSetReportFile function"]
ms.assetid: 3126537e-511b-44af-9c1c-0605265eabc4
diff --git a/docs/c-runtime-library/reference/crtsetreporthook.md b/docs/c-runtime-library/reference/crtsetreporthook.md
index 14b3899791..e0064098ca 100644
--- a/docs/c-runtime-library/reference/crtsetreporthook.md
+++ b/docs/c-runtime-library/reference/crtsetreporthook.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetReportHook"
ms.date: "11/04/2016"
-apiname: ["_CrtSetReportHook"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetReportHook"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtSetReportHook", "CrtSetReportHook"]
helpviewer_keywords: ["CrtSetReportHook function", "_CrtSetReportHook function"]
ms.assetid: 1ae7c64f-8c84-4797-9574-b59f00f7a509
diff --git a/docs/c-runtime-library/reference/crtsetreporthook2-crtsetreporthookw2.md b/docs/c-runtime-library/reference/crtsetreporthook2-crtsetreporthookw2.md
index 85e135143d..ec12855ddc 100644
--- a/docs/c-runtime-library/reference/crtsetreporthook2-crtsetreporthookw2.md
+++ b/docs/c-runtime-library/reference/crtsetreporthook2-crtsetreporthookw2.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetReportHook2, _CrtSetReportHookW2"
ms.date: "11/04/2016"
-apiname: ["_CrtSetReportHook2", "_CrtSetReportHookW2"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetReportHook2", "_CrtSetReportHookW2"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CrtSetReportHookW2", "CrtSetReportHook2", "_CrtSetReportHookW2", "_CrtSetReportHook2"]
helpviewer_keywords: ["CrtSetReportHook2 function", "_CrtSetReportHook2 function", "_CrtSetReportHookW2 function", "CrtSetReportHookW2 function"]
ms.assetid: 12e5f68d-c8a7-4b1a-9a75-72ba4a8592d0
diff --git a/docs/c-runtime-library/reference/crtsetreportmode.md b/docs/c-runtime-library/reference/crtsetreportmode.md
index b4ed6f37e5..e0561cf3d1 100644
--- a/docs/c-runtime-library/reference/crtsetreportmode.md
+++ b/docs/c-runtime-library/reference/crtsetreportmode.md
@@ -1,9 +1,10 @@
---
title: "_CrtSetReportMode"
ms.date: "11/04/2016"
-apiname: ["_CrtSetReportMode"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CrtSetReportMode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_CrtSetReportMode", "CrtSetReportMode"]
helpviewer_keywords: ["_CrtSetReportMode function", "CrtSetReportMode function"]
ms.assetid: 3ecc6a12-afdd-4242-b046-8187ff6d4b36
diff --git a/docs/c-runtime-library/reference/cscanf-cscanf-l-cwscanf-cwscanf-l.md b/docs/c-runtime-library/reference/cscanf-cscanf-l-cwscanf-cwscanf-l.md
index 0a4c03f9eb..3c9a201d48 100644
--- a/docs/c-runtime-library/reference/cscanf-cscanf-l-cwscanf-cwscanf-l.md
+++ b/docs/c-runtime-library/reference/cscanf-cscanf-l-cwscanf-cwscanf-l.md
@@ -1,9 +1,10 @@
---
title: "_cscanf, _cscanf_l, _cwscanf, _cwscanf_l"
-ms.date: "11/04/2016"
-apiname: ["_cscanf_l", "_cscanf", "_cwscanf", "_cwscanf_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "10/21/2019"
+api_name: ["_cscanf_l", "_cscanf", "_cwscanf", "_cwscanf_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_cwscanf", "cwscanf_l", "tcscanf_l", "_tcscanf_l", "_cscanf", "_cscanf_l", "tcscanf", "cwscanf", "_cwscanf_l", "cscanf_l", "_tcscanf"]
helpviewer_keywords: ["_cwscanf function", "data [C++], reading from the console", "cscanf_l function", "tcscanf function", "_cscanf_l function", "cwscanf function", "_tcscanf_l function", "_cscanf function", "_tcscanf function", "cwscanf_l function", "tcscanf_l function", "reading data [C++], from the console", "_cwscanf_l function"]
ms.assetid: dbfe7547-b577-4567-a1cb-893fa640e669
@@ -12,6 +13,9 @@ ms.assetid: dbfe7547-b577-4567-a1cb-893fa640e669
Reads formatted data from the console. More secure versions of these functions are available; see [_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l](cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md).
+> [!NOTE]
+> In Visual Studio 2015 The `printf` and `scanf` family of functions were declared as **inline** and moved to the `` and `` headers. If you are migrating older code you might see *LNK2019* in connection with these functions. For more information, see [Visual C++ change history 2003 - 2015](../../porting/visual-cpp-change-history-2003-2015.md#stdio_and_conio).
+
> [!IMPORTANT]
> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md b/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md
index e122de0d7e..90f346cd77 100644
--- a/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md
+++ b/docs/c-runtime-library/reference/cscanf-s-cscanf-s-l-cwscanf-s-cwscanf-s-l.md
@@ -1,9 +1,10 @@
---
title: "_cscanf_s, _cscanf_s_l, _cwscanf_s, _cwscanf_s_l"
ms.date: "11/04/2016"
-apiname: ["_cwscanf_s_l", "_cwscanf_s", "_cscanf_s", "_cscanf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_cwscanf_s_l", "_cwscanf_s", "_cscanf_s", "_cscanf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cscanf_s", "cscanf_s_l", "cwscanf_s", "_cwscanf_s", "_tcscanf_s", "_cscanf_s", "_cwscanf_s_l", "_cscanf_s_l", "cwscanf_s_l", "_tcscanf_s_l", "tcscanf_s", "tcscanf_s_l"]
helpviewer_keywords: ["cscanf_s function", "_cwscanf_s_l function", "tcscanf_s function", "console [C++], reading from", "_cscanf_s function", "data [C++], reading from the console", "cwscanf_s function", "_tcscanf_s_l function", "_cscanf_s_l function", "cscanf_s_l function", "cwscanf_s_l function", "reading data [C++], from the console", "_cwscanf_s function", "_tcscanf_s function", "tcscanf_s_l function"]
ms.assetid: 9ccab74d-916f-42a6-93d8-920525efdf4b
diff --git a/docs/c-runtime-library/reference/cscanf.md b/docs/c-runtime-library/reference/cscanf.md
index 9c36a3fad1..5b0f934da5 100644
--- a/docs/c-runtime-library/reference/cscanf.md
+++ b/docs/c-runtime-library/reference/cscanf.md
@@ -1,16 +1,19 @@
---
title: "cscanf"
-ms.date: "11/04/2016"
-apiname: ["cscanf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["cscanf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cscanf"]
helpviewer_keywords: ["cscanf function"]
ms.assetid: 51aa2da2-0d53-4272-b510-f3eabf049ea7
---
# cscanf
-This POSIX function is deprecated. Use the ISO C++ conformant [_cscanf](cscanf-cscanf-l-cwscanf-cwscanf-l.md) instead.
+The Microsoft-specific function name `cscanf` is a deprecated alias for the [_cscanf](cscanf-cscanf-l-cwscanf-cwscanf-l.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_cscanf](cscanf-cscanf-l-cwscanf-cwscanf-l.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/csin-csinf-csinl.md b/docs/c-runtime-library/reference/csin-csinf-csinl.md
index 7efbee92be..9beb5e4319 100644
--- a/docs/c-runtime-library/reference/csin-csinf-csinl.md
+++ b/docs/c-runtime-library/reference/csin-csinf-csinl.md
@@ -1,9 +1,10 @@
---
title: "csin, csinf, csinl"
ms.date: "11/04/2016"
-apiname: ["csin", "csinf", "csinl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["csin", "csinf", "csinl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["csin", "csinf", "csinl", "complex/csin", "complex/csinf", "complex/csinl"]
helpviewer_keywords: ["csin function", "csinf function", "csinl function"]
ms.assetid: 3ed475e8-9aae-42ba-a25c-7ae656a0fd4d
diff --git a/docs/c-runtime-library/reference/csinh-csinhf-csinhl.md b/docs/c-runtime-library/reference/csinh-csinhf-csinhl.md
index 5b42ec9acf..c455a67dff 100644
--- a/docs/c-runtime-library/reference/csinh-csinhf-csinhl.md
+++ b/docs/c-runtime-library/reference/csinh-csinhf-csinhl.md
@@ -1,9 +1,10 @@
---
title: "csinh, csinhf, csinhl"
ms.date: "11/04/2016"
-apiname: ["csinh", "csinhf", "csinhl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["csinh", "csinhf", "csinhl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["csinh", "csinhf", "csinhl", "complex/csinh", "complex/csinhf", "complex/csinhl"]
helpviewer_keywords: ["csinh function", "csinhf function", "csinhl function"]
ms.assetid: cc616e55-d14d-4cd3-91f0-fbee03ce5edf
diff --git a/docs/c-runtime-library/reference/csqrt-csqrtf-csqrtl.md b/docs/c-runtime-library/reference/csqrt-csqrtf-csqrtl.md
index 08dde9da45..48958bc9d3 100644
--- a/docs/c-runtime-library/reference/csqrt-csqrtf-csqrtl.md
+++ b/docs/c-runtime-library/reference/csqrt-csqrtf-csqrtl.md
@@ -1,9 +1,10 @@
---
title: "csqrt, csqrtf, csqrtl"
ms.date: "11/04/2016"
-apiname: ["csqrt", "csqrtf", "csqrtl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["csqrt", "csqrtf", "csqrtl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["csqrt", "csqrtf", "csqrtl", "complex/csqrt", "complex/csqrtf", "complex/csqrtl"]
helpviewer_keywords: ["csqrt function", "csqrtf function", "csqrtl function"]
ms.assetid: b65f086b-0f55-4622-a7a3-4e79d9c9c05c
diff --git a/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md b/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md
index fc752893ef..55ad02439d 100644
--- a/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md
+++ b/docs/c-runtime-library/reference/ctan-ctanf-ctanl.md
@@ -1,9 +1,10 @@
---
title: "ctan, ctanf, ctanl"
ms.date: "11/04/2016"
-apiname: ["ctan", "ctanf", "ctanl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ctan", "ctanf", "ctanl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ctan", "ctanf", "ctanl", "complex/ctan", "complex/ctanf", "complex/ctanl"]
helpviewer_keywords: ["ctan function", "ctanf function", "ctanl function"]
ms.assetid: d3cbd25c-1e93-4a6d-8154-da42921f7223
diff --git a/docs/c-runtime-library/reference/ctanh-ctanhf-ctanhl.md b/docs/c-runtime-library/reference/ctanh-ctanhf-ctanhl.md
index 1053c6f6cc..0ec7509a50 100644
--- a/docs/c-runtime-library/reference/ctanh-ctanhf-ctanhl.md
+++ b/docs/c-runtime-library/reference/ctanh-ctanhf-ctanhl.md
@@ -1,9 +1,10 @@
---
title: "ctanh, ctanhf, ctanhl"
ms.date: "11/04/2016"
-apiname: ["ctanh", "ctanhf", "ctanhl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ctanh", "ctanhf", "ctanhl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ctanh", "ctanhf", "ctanhl", "complex/ctanh", "complex/ctanhf", "complex/ctanhl"]
helpviewer_keywords: ["ctanh function", "ctanhl function", "ctanhf function"]
ms.assetid: 807f2cd1-8740-4988-afff-5911c346385b
diff --git a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md
index e485eee397..e78d6f6948 100644
--- a/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md
+++ b/docs/c-runtime-library/reference/ctime-ctime32-ctime64-wctime-wctime32-wctime64.md
@@ -1,9 +1,10 @@
---
title: "ctime, _ctime32, _ctime64, _wctime, _wctime32, _wctime64"
ms.date: "11/04/2016"
-apiname: ["_ctime64", "_wctime32", "ctime", "_wctime64", "_ctime32", "_wctime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ctime64", "_wctime32", "ctime", "_wctime64", "_ctime32", "_wctime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wctime64", "_ctime32", "_tctime", "_wctime", "_wctime32", "_tctime64", "_ctime64", "ctime"]
helpviewer_keywords: ["tctime64 function", "_ctime32 function", "ctime32 function", "_wctime function", "wctime64 function", "_tctime64 function", "_tctime32 function", "_ctime64 function", "_wctime64 function", "ctime function", "wctime32 function", "ctime64 function", "_wctime32 function", "_tctime function", "tctime32 function", "tctime function", "wctime function", "time, converting"]
ms.assetid: 2423de37-a35c-4f0a-a378-3116bc120a9d
diff --git a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md
index c52e172cb2..2b0d37cd3c 100644
--- a/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md
+++ b/docs/c-runtime-library/reference/ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md
@@ -1,9 +1,10 @@
---
title: "ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s"
ms.date: "11/04/2016"
-apiname: ["_ctime64_s", "_wctime32_s", "ctime_s", "_wctime64_s", "_ctime32_s", "_wctime_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ctime64_s", "_wctime32_s", "ctime_s", "_wctime64_s", "_ctime32_s", "_wctime_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ctime64_s", "_ctime32_s", "_tctime32_s", "_ctime64_s", "_wctime_s", "_tctime_s", "_tctime64_s", "ctime_s", "ctime32_s"]
helpviewer_keywords: ["_wctime32_s function", "ctime64_s function", "_tctime64_s function", "_wctime_s function", "tctime_s function", "_wctime64_s function", "ctime_s function", "ctime32_s function", "_ctime64_s function", "tctime64_s function", "wctime64_s function", "wctime_s function", "_tctime_s function", "tctime32_s function", "wctime32_s function", "time, converting", "_ctime32_s function", "_tctime32_s function"]
ms.assetid: 36ac419a-8000-4389-9fd8-d78b747a009b
@@ -119,6 +120,8 @@ The converted character string is also adjusted according to the local time zone
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically, eliminating the need to specify a size argument. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+
### Generic-Text Routine Mappings
|TCHAR.H routine|_UNICODE & _MBCS not defined|_MBCS defined|_UNICODE defined|
diff --git a/docs/c-runtime-library/reference/cwait.md b/docs/c-runtime-library/reference/cwait.md
index a1a951bc4a..d757113ba9 100644
--- a/docs/c-runtime-library/reference/cwait.md
+++ b/docs/c-runtime-library/reference/cwait.md
@@ -1,9 +1,10 @@
---
title: "_cwait"
ms.date: "11/04/2016"
-apiname: ["_cwait"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_cwait"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_cwait"]
helpviewer_keywords: ["cwait function", "_cwait function"]
ms.assetid: d9b596b5-45f4-4e03-9896-3f383cb922b8
diff --git a/docs/c-runtime-library/reference/cxxthrowexception.md b/docs/c-runtime-library/reference/cxxthrowexception.md
index 9b08923309..2cad88b270 100644
--- a/docs/c-runtime-library/reference/cxxthrowexception.md
+++ b/docs/c-runtime-library/reference/cxxthrowexception.md
@@ -1,9 +1,10 @@
---
title: "_CxxThrowException"
ms.date: "11/04/2016"
-apiname: ["_CxxThrowException"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_CxxThrowException"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CxxThrowException", "_CxxThrowException"]
helpviewer_keywords: ["_CxxThrowException function", "CxxThrowException function"]
ms.assetid: 0b90bef5-b7d2-46e0-88e2-59e531e01a4d
diff --git a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md
index d63b9742ea..9aa1b12da7 100644
--- a/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md
+++ b/docs/c-runtime-library/reference/difftime-difftime32-difftime64.md
@@ -1,9 +1,10 @@
---
title: "difftime, _difftime32, _difftime64"
ms.date: "11/04/2016"
-apiname: ["_difftime32", "difftime", "_difftime64"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_difftime32", "difftime", "_difftime64"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_difftime64", "difftime", "difftime64", "_difftime32", "difftime32"]
helpviewer_keywords: ["_difftime32 function", "difftime function", "time, finding the difference", "difftime64 function", "_difftime64 function", "difftime32 function"]
ms.assetid: 4cc0ac2b-fc7b-42c0-8283-8c9d10c566d0
diff --git a/docs/c-runtime-library/reference/div.md b/docs/c-runtime-library/reference/div.md
index d41e19cd9a..2ba371962b 100644
--- a/docs/c-runtime-library/reference/div.md
+++ b/docs/c-runtime-library/reference/div.md
@@ -1,9 +1,10 @@
---
title: "div, ldiv, lldiv"
ms.date: "04/05/2018"
-apiname: ["div"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["div"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["div"]
helpviewer_keywords: ["div function", "quotients, computing", "quotients", "dividing integers", "remainder computing"]
ms.assetid: 8ae80d97-54fd-499e-b14c-e30993b58119
diff --git a/docs/c-runtime-library/reference/dup-dup2.md b/docs/c-runtime-library/reference/dup-dup2.md
index b5e8fb0798..e7aea550fc 100644
--- a/docs/c-runtime-library/reference/dup-dup2.md
+++ b/docs/c-runtime-library/reference/dup-dup2.md
@@ -1,9 +1,10 @@
---
title: "_dup, _dup2"
ms.date: "11/04/2016"
-apiname: ["_dup", "_dup2"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_dup", "_dup2"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_dup2", "_dup"]
helpviewer_keywords: ["_dup2 function", "dup function", "file handles [C++], duplicating", "file handles [C++], reassigning", "dup2 function", "_dup function"]
ms.assetid: 4d07e92c-0d76-4832-a770-dfec0e7a0cfa
diff --git a/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md b/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md
index 83ac172541..385c0a1966 100644
--- a/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md
+++ b/docs/c-runtime-library/reference/dupenv-s-dbg-wdupenv-s-dbg.md
@@ -1,9 +1,10 @@
---
title: "_dupenv_s_dbg, _wdupenv_s_dbg"
ms.date: "11/04/2016"
-apiname: ["_dupenv_s_dbg", "_wdupenv_s_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_dupenv_s_dbg", "_wdupenv_s_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tdupenv_s_dbg", "_dupenv_s_dbg", "_wdupenv_s_dbg"]
helpviewer_keywords: ["_tdupenv_s_dbg function", "dupenv_s_dbg function", "_wdupenv_s_dbg function", "environment variables", "tdupenv_s_dbg function", "wdupenv_s_dbg function", "_dupenv_s_dbg function"]
ms.assetid: e3d81148-e24e-46d0-a21d-fd87b5e6256c
diff --git a/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md b/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md
index 8573089067..261bf4d4c6 100644
--- a/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md
+++ b/docs/c-runtime-library/reference/dupenv-s-wdupenv-s.md
@@ -1,9 +1,10 @@
---
title: "_dupenv_s, _wdupenv_s"
ms.date: "11/04/2016"
-apiname: ["_dupenv_s", "_wdupenv_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_dupenv_s", "_wdupenv_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tdupenv_s", "_dupenv_s", "wdupenv_s", "dupenv_s", "_tdupenv_s", "_wdupenv_s"]
helpviewer_keywords: ["_dupenv_s function", "_tdupenv_s function", "_wdupenv_s function", "environment variables", "wdupenv_s function", "dupenv_s function", "tdupenv_s function"]
ms.assetid: b729ecc2-a31d-4ccf-92a7-5accedb8f8c8
diff --git a/docs/c-runtime-library/reference/ecvt-s.md b/docs/c-runtime-library/reference/ecvt-s.md
index 5a64084da6..642fc48573 100644
--- a/docs/c-runtime-library/reference/ecvt-s.md
+++ b/docs/c-runtime-library/reference/ecvt-s.md
@@ -1,9 +1,10 @@
---
title: "_ecvt_s"
ms.date: "04/05/2018"
-apiname: ["_ecvt_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ecvt_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ecvt_s", "_ecvt_s"]
helpviewer_keywords: ["_ecvt_s function", "ecvt_s function", "numbers, converting", "converting double numbers"]
ms.assetid: d52fb0a6-cb91-423f-80b3-952a8955d914
@@ -84,7 +85,7 @@ The difference between **_ecvt_s** and **_fcvt_s** is in the interpretation of t
In C++, using this function is simplified by a template overload; the overload can infer buffer length automatically, eliminating the need to specify a size argument. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug version of this function first fills the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug version of this function first fills the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
## Requirements
diff --git a/docs/c-runtime-library/reference/ecvt.md b/docs/c-runtime-library/reference/ecvt.md
index 71d432a4c0..3a99f9180e 100644
--- a/docs/c-runtime-library/reference/ecvt.md
+++ b/docs/c-runtime-library/reference/ecvt.md
@@ -1,9 +1,10 @@
---
title: "_ecvt"
ms.date: "04/05/2018"
-apiname: ["_ecvt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ecvt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ecvt"]
helpviewer_keywords: ["_ecvt function", "numbers, converting", "converting double numbers", "ecvt function"]
ms.assetid: a916eb05-92d1-4b5c-8563-093acdb49dc8
diff --git a/docs/c-runtime-library/reference/endthread-endthreadex.md b/docs/c-runtime-library/reference/endthread-endthreadex.md
index d35567aba4..5fd7e55bef 100644
--- a/docs/c-runtime-library/reference/endthread-endthreadex.md
+++ b/docs/c-runtime-library/reference/endthread-endthreadex.md
@@ -1,9 +1,10 @@
---
title: "_endthread, _endthreadex"
ms.date: "11/04/2016"
-apiname: ["_endthread", "_endthreadex"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_endthread", "_endthreadex"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_endthread", "endthreadex", "_endthreadex", "endthread"]
helpviewer_keywords: ["_endthread function", "endthread function", "terminating threads", "endthreadex function", "_endthreadex function", "threading [C++], terminating threads"]
ms.assetid: 18a91f2f-659e-40b4-b266-ec12dcf2abf5
diff --git a/docs/c-runtime-library/reference/eof.md b/docs/c-runtime-library/reference/eof.md
index 0163502d2c..c86340a558 100644
--- a/docs/c-runtime-library/reference/eof.md
+++ b/docs/c-runtime-library/reference/eof.md
@@ -1,9 +1,10 @@
---
title: "_eof"
ms.date: "11/04/2016"
-apiname: ["_eof"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_eof"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_eof"]
helpviewer_keywords: ["eof function", "end of file, testing for", "_eof function", "files [C++], end of", "testing, for end-of-file", "end of file"]
ms.assetid: 265703f4-d07e-4005-abf3-b1d0cdd9e0b0
diff --git a/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md b/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md
index 86b8d54aab..3925d82727 100644
--- a/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md
+++ b/docs/c-runtime-library/reference/erf-erff-erfl-erfc-erfcf-erfcl.md
@@ -1,9 +1,10 @@
---
title: "erf, erff, erfl, erfc, erfcf, erfcl"
ms.date: "01/31/2019"
-apiname: ["erff", "erfl", "erf", "erfc", "erfcf", "erfcl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["erff", "erfl", "erf", "erfc", "erfcf", "erfcl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["erfl", "erf", "erff", "erfc", "erfcf", "erfcl"]
helpviewer_keywords: ["erfl function", "erff function", "erf function", "erfcl function", "erfcf function", "erfc function"]
ms.assetid: 144d90d3-e437-41c2-a659-cd57596023b5
diff --git a/docs/c-runtime-library/reference/execl-wexecl.md b/docs/c-runtime-library/reference/execl-wexecl.md
index 4ebcda9d75..d011a78931 100644
--- a/docs/c-runtime-library/reference/execl-wexecl.md
+++ b/docs/c-runtime-library/reference/execl-wexecl.md
@@ -1,9 +1,10 @@
---
title: "_execl, _wexecl"
ms.date: "11/04/2016"
-apiname: ["_execl", "_wexecl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_execl", "_wexecl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_execl", "_wexecl", "wexecl"]
helpviewer_keywords: ["_execl function", "wexecl function", "_wexecl function", "execl function"]
ms.assetid: 81fefb8a-0a06-4221-b2bc-be18e38e89f4
diff --git a/docs/c-runtime-library/reference/execl.md b/docs/c-runtime-library/reference/execl.md
index 14740516e2..312efba098 100644
--- a/docs/c-runtime-library/reference/execl.md
+++ b/docs/c-runtime-library/reference/execl.md
@@ -1,16 +1,19 @@
---
title: "execl"
-ms.date: "11/04/2016"
-apiname: ["execl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execl"]
helpviewer_keywords: ["execl function"]
ms.assetid: 10f24c52-7ff5-4a61-abcb-fce6d9553f23
---
# execl
-This POSIX function is deprecated. Use the ISO C++ conformant [_execl](execl-wexecl.md) instead.
+The Microsoft-implemented POSIX function name `execl` is a deprecated alias for the [_execl](execl-wexecl.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execl](execl-wexecl.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/execle-wexecle.md b/docs/c-runtime-library/reference/execle-wexecle.md
index c2b2faf61f..edbeafc2da 100644
--- a/docs/c-runtime-library/reference/execle-wexecle.md
+++ b/docs/c-runtime-library/reference/execle-wexecle.md
@@ -1,9 +1,10 @@
---
title: "_execle, _wexecle"
ms.date: "11/04/2016"
-apiname: ["_execle", "_wexecle"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_execle", "_wexecle"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wexecle", "_execle", "_wexecle"]
helpviewer_keywords: ["wexecle function", "execle function", "_wexecle function", "_execle function"]
ms.assetid: 75efa9c5-96b7-4e23-acab-06258901f63a
diff --git a/docs/c-runtime-library/reference/execle.md b/docs/c-runtime-library/reference/execle.md
index a57061c680..9be4b7a95a 100644
--- a/docs/c-runtime-library/reference/execle.md
+++ b/docs/c-runtime-library/reference/execle.md
@@ -1,16 +1,19 @@
---
title: "execle"
-ms.date: "11/04/2016"
-apiname: ["execle"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execle"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execle"]
helpviewer_keywords: ["execle function"]
ms.assetid: 5985b615-fe90-4d1c-9c1d-13ec87c8e306
---
# execle
-This POSIX function is deprecated. Use the ISO C++ conformant [_execle](execle-wexecle.md) instead.
+The Microsoft-implemented POSIX function name `execle` is a deprecated alias for the [_execle](execle-wexecle.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execle](execle-wexecle.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/execlp-wexeclp.md b/docs/c-runtime-library/reference/execlp-wexeclp.md
index 6170b9a193..8e4db87880 100644
--- a/docs/c-runtime-library/reference/execlp-wexeclp.md
+++ b/docs/c-runtime-library/reference/execlp-wexeclp.md
@@ -1,9 +1,10 @@
---
title: "_execlp, _wexeclp"
ms.date: "11/04/2016"
-apiname: ["_wexeclp", "_execlp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wexeclp", "_execlp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wexeclp", "wexeclp", "_execlp"]
helpviewer_keywords: ["execlp function", "_execlp function", "_wexeclp function", "wexeclp function"]
ms.assetid: 7b179163-4bcd-4d6a-8baf-68f886791928
diff --git a/docs/c-runtime-library/reference/execlp.md b/docs/c-runtime-library/reference/execlp.md
index 1a0caa8977..01cf8a5885 100644
--- a/docs/c-runtime-library/reference/execlp.md
+++ b/docs/c-runtime-library/reference/execlp.md
@@ -1,16 +1,19 @@
---
title: "execlp"
-ms.date: "11/04/2016"
-apiname: ["execlp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execlp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execlp"]
helpviewer_keywords: ["execlp function"]
ms.assetid: 68b19143-e7b1-49c6-89b5-084d0d66de9c
---
# execlp
-This POSIX function is deprecated. Use the ISO C++ conformant [_execlp](execlp-wexeclp.md) instead.
+The Microsoft-implemented POSIX function name `execlp` is a deprecated alias for the [_execlp](execlp-wexeclp.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execlp](execlp-wexeclp.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/execlpe-wexeclpe.md b/docs/c-runtime-library/reference/execlpe-wexeclpe.md
index 417e7fb45d..4af8a0d9b2 100644
--- a/docs/c-runtime-library/reference/execlpe-wexeclpe.md
+++ b/docs/c-runtime-library/reference/execlpe-wexeclpe.md
@@ -1,9 +1,10 @@
---
title: "_execlpe, _wexeclpe"
ms.date: "11/04/2016"
-apiname: ["_execlpe", "_wexeclpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_execlpe", "_wexeclpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wexeclpe", "execlpe", "wexeclpe", "_execlpe"]
helpviewer_keywords: ["wexeclpe function", "_wexeclpe function", "_execlpe function", "execlpe function"]
ms.assetid: 07b861da-3e7e-4f1d-bb80-ad69b55e5162
diff --git a/docs/c-runtime-library/reference/execlpe.md b/docs/c-runtime-library/reference/execlpe.md
index 8e818c362e..9708721c8e 100644
--- a/docs/c-runtime-library/reference/execlpe.md
+++ b/docs/c-runtime-library/reference/execlpe.md
@@ -1,16 +1,19 @@
---
title: "execlpe"
-ms.date: "11/04/2016"
-apiname: ["execlpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execlpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execlpe"]
helpviewer_keywords: ["execlpe function"]
ms.assetid: 33b28785-43e3-4971-b139-33743a7c9a32
---
# execlpe
-This POSIX function is deprecated. Use the ISO C++ conformant [_execlpe](execlpe-wexeclpe.md) instead.
+The Microsoft-specific function name `execlpe` is a deprecated alias for the [_execlpe](execlpe-wexeclpe.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execlpe](execlpe-wexeclpe.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/execv-wexecv.md b/docs/c-runtime-library/reference/execv-wexecv.md
index cbd138bef3..47189393b6 100644
--- a/docs/c-runtime-library/reference/execv-wexecv.md
+++ b/docs/c-runtime-library/reference/execv-wexecv.md
@@ -1,9 +1,10 @@
---
title: "_execv, _wexecv"
ms.date: "11/04/2016"
-apiname: ["_wexecv", "_execv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wexecv", "_execv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_execv", "_wexecv", "wexecv"]
helpviewer_keywords: ["_wexecv function", "_execv function", "wexecv function", "execv function"]
ms.assetid: 8dbaf7bc-9040-4316-a0c1-db7e866b52af
diff --git a/docs/c-runtime-library/reference/execv.md b/docs/c-runtime-library/reference/execv.md
index fb49c44e07..6aa44a25f7 100644
--- a/docs/c-runtime-library/reference/execv.md
+++ b/docs/c-runtime-library/reference/execv.md
@@ -1,16 +1,19 @@
---
title: "execv"
-ms.date: "11/04/2016"
-apiname: ["execv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execv"]
helpviewer_keywords: ["execv function"]
ms.assetid: b097d606-9384-427a-9a1d-707dc4ce03ae
---
# execv
-This POSIX function is deprecated. Use the ISO C++ conformant [_execv](execv-wexecv.md) instead.
+The Microsoft-implemented POSIX function name `execv` is a deprecated alias for the [_execv](execv-wexecv.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execv](execv-wexecv.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/execve-wexecve.md b/docs/c-runtime-library/reference/execve-wexecve.md
index 0ec4e66440..4d4e75875d 100644
--- a/docs/c-runtime-library/reference/execve-wexecve.md
+++ b/docs/c-runtime-library/reference/execve-wexecve.md
@@ -1,9 +1,10 @@
---
title: "_execve, _wexecve"
ms.date: "11/04/2016"
-apiname: ["_execve", "_wexecve"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_execve", "_wexecve"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wexecve", "_wexecve", "_execve"]
helpviewer_keywords: ["execve function", "wexecve function", "_execve function", "_wexecve function"]
ms.assetid: 950d4802-a9c3-4f32-8145-a0119dd1d596
diff --git a/docs/c-runtime-library/reference/execve.md b/docs/c-runtime-library/reference/execve.md
index 43494ea5ce..8ea09dd7bf 100644
--- a/docs/c-runtime-library/reference/execve.md
+++ b/docs/c-runtime-library/reference/execve.md
@@ -1,16 +1,19 @@
---
title: "execve"
-ms.date: "11/04/2016"
-apiname: ["execve"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execve"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execve"]
helpviewer_keywords: ["execve function"]
ms.assetid: f28aabe4-fd76-422e-a0e4-80864736d245
---
# execve
-This POSIX function is deprecated. Use the ISO C++ conformant [_execve](execve-wexecve.md) instead.
+The Microsoft-implemented POSIX function name `execve` is a deprecated alias for the [_execve](execve-wexecve.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execve](execve-wexecve.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/execvp-wexecvp.md b/docs/c-runtime-library/reference/execvp-wexecvp.md
index 76fd8f8ea4..ad89a651f7 100644
--- a/docs/c-runtime-library/reference/execvp-wexecvp.md
+++ b/docs/c-runtime-library/reference/execvp-wexecvp.md
@@ -1,9 +1,10 @@
---
title: "_execvp, _wexecvp"
ms.date: "11/04/2016"
-apiname: ["_execvp", "_wexecvp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_execvp", "_wexecvp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_execvp", "wexecvp", "_wexecvp"]
helpviewer_keywords: ["_execvp function", "_wexecvp function", "wexecvp function", "execvp function"]
ms.assetid: a4db15df-b204-4987-be7c-de84c3414380
diff --git a/docs/c-runtime-library/reference/execvp.md b/docs/c-runtime-library/reference/execvp.md
index c0c2fc6a1e..24505d3519 100644
--- a/docs/c-runtime-library/reference/execvp.md
+++ b/docs/c-runtime-library/reference/execvp.md
@@ -1,16 +1,19 @@
---
title: "execvp"
-ms.date: "11/04/2016"
-apiname: ["execvp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execvp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execvp"]
helpviewer_keywords: ["execvp function"]
ms.assetid: a0d0e898-9f06-4aa9-94ce-3ad317318c3a
---
# execvp
-This POSIX function is deprecated. Use the ISO C++ conformant [_execvp](execvp-wexecvp.md) instead.
+The Microsoft-implemented POSIX function name `execvp` is a deprecated alias for the [_execvp](execvp-wexecvp.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execvp](execvp-wexecvp.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/execvpe-wexecvpe.md b/docs/c-runtime-library/reference/execvpe-wexecvpe.md
index 2f845cb319..2762935028 100644
--- a/docs/c-runtime-library/reference/execvpe-wexecvpe.md
+++ b/docs/c-runtime-library/reference/execvpe-wexecvpe.md
@@ -1,9 +1,10 @@
---
title: "_execvpe, _wexecvpe"
ms.date: "11/04/2016"
-apiname: ["_execvpe", "_wexecvpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_execvpe", "_wexecvpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wexecvpe", "execvpe", "_wexecvpe", "_execvpe"]
helpviewer_keywords: ["wexecvpe function", "execvpe function", "_wexecvpe function", "_execvpe function"]
ms.assetid: c0c3c986-d9c0-4814-a96c-10f0b3092766
diff --git a/docs/c-runtime-library/reference/execvpe.md b/docs/c-runtime-library/reference/execvpe.md
index dfe29d9d88..6c9255e08d 100644
--- a/docs/c-runtime-library/reference/execvpe.md
+++ b/docs/c-runtime-library/reference/execvpe.md
@@ -1,16 +1,19 @@
---
title: "execvpe"
-ms.date: "11/04/2016"
-apiname: ["execvpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["execvpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["execvpe"]
helpviewer_keywords: ["execvpe function"]
ms.assetid: ee657071-c459-4bb6-82a2-8925c888f624
---
# execvpe
-This POSIX function is deprecated. Use the ISO C++ conformant [_execvpe](execvpe-wexecvpe.md) instead.
+The Microsoft-specific function name `execvpe` is a deprecated alias for the [_execvpe](execvpe-wexecvpe.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_execvpe](execlpe-wexeclpe.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/exit-exit-exit.md b/docs/c-runtime-library/reference/exit-exit-exit.md
index 246fa77352..e244daa42d 100644
--- a/docs/c-runtime-library/reference/exit-exit-exit.md
+++ b/docs/c-runtime-library/reference/exit-exit-exit.md
@@ -1,9 +1,10 @@
---
title: "exit, _Exit, _exit"
-ms.date: "1/02/2018"
-apiname: ["_exit", "exit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "01/02/2018"
+api_name: ["_exit", "exit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["Exit", "_exit", "process/exit", "process/_Exit", "stdlib/exit", "stdlib/_Exit"]
helpviewer_keywords: ["exit function", "_exit function", "processes, terminating", "function calls, terminating", "process termination, calling"]
---
diff --git a/docs/c-runtime-library/reference/exp-expf.md b/docs/c-runtime-library/reference/exp-expf.md
index 6b3b536330..785e641e8f 100644
--- a/docs/c-runtime-library/reference/exp-expf.md
+++ b/docs/c-runtime-library/reference/exp-expf.md
@@ -1,9 +1,10 @@
---
title: "exp, expf, expl"
ms.date: "04/05/2018"
-apiname: ["expf", "expl", "exp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["expf", "expl", "exp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_expl", "expf", "expl", "exp"]
helpviewer_keywords: ["exponential calculations", "expf function", "expl function", "calculating exponentials", "exp function"]
ms.assetid: 7070016d-1143-407e-9e9a-6b059bb88867
diff --git a/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md b/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md
index 40f191b499..f3ba874ff6 100644
--- a/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md
+++ b/docs/c-runtime-library/reference/exp2-exp2f-exp2l.md
@@ -1,9 +1,10 @@
---
title: "exp2, exp2f, exp2l"
ms.date: "04/05/2018"
-apiname: ["exp2", "exp2f", "exp2l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["exp2", "exp2f", "exp2l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["exp2", "math/exp2", "exp2f", "math/exp2f", "exp2l", "math/exp2l"]
helpviewer_keywords: ["exp2 function", "exp2f function", "exp2l function"]
ms.assetid: 526e3e10-201a-4610-a886-533f44ece344
diff --git a/docs/c-runtime-library/reference/expand-dbg.md b/docs/c-runtime-library/reference/expand-dbg.md
index bdc80aeb25..fb66239f2d 100644
--- a/docs/c-runtime-library/reference/expand-dbg.md
+++ b/docs/c-runtime-library/reference/expand-dbg.md
@@ -1,9 +1,10 @@
---
title: "_expand_dbg"
ms.date: "11/04/2016"
-apiname: ["_expand_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_expand_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["expand_dbg", "_expand_dbg"]
helpviewer_keywords: ["memory blocks, changing size", "expand_dbg function", "_expand_dbg function"]
ms.assetid: dc58c91f-72a8-48c6-b643-fe130fb6c1fd
diff --git a/docs/c-runtime-library/reference/expand.md b/docs/c-runtime-library/reference/expand.md
index 6cbd0260cb..8cc71f791b 100644
--- a/docs/c-runtime-library/reference/expand.md
+++ b/docs/c-runtime-library/reference/expand.md
@@ -1,9 +1,10 @@
---
title: "_expand"
ms.date: "11/04/2016"
-apiname: ["_expand"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_expand"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_bexpand", "fexpand", "expand", "nexpand", "_fexpand", "_nexpand", "bexpand", "_expand"]
helpviewer_keywords: ["memory blocks, changing size", "_expand function", "expand function"]
ms.assetid: 4ac55410-39c8-45c7-bccd-3f1042ae2ed3
diff --git a/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md b/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md
index b22e590653..012dc398ba 100644
--- a/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md
+++ b/docs/c-runtime-library/reference/expm1-expm1f-expm1l.md
@@ -1,9 +1,10 @@
---
title: "expm1, expm1f, expm1l"
ms.date: "04/05/2018"
-apiname: ["expm1l", "expm1", "expm1f"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["expm1l", "expm1", "expm1f"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["expm1l", "expm1", "expm1f"]
helpviewer_keywords: ["expm1f function", "expm1l function", "expm1 function"]
ms.assetid: 2a4dd2d9-370c-42b0-9067-0625efa272e0
diff --git a/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md b/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md
index 284626662f..12c0a83cd3 100644
--- a/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md
+++ b/docs/c-runtime-library/reference/fabs-fabsf-fabsl.md
@@ -1,9 +1,10 @@
---
title: "fabs, fabsf, fabsl"
ms.date: "04/05/2018"
-apiname: ["fabsf", "fabs", "fabsl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fabsf", "fabs", "fabsl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fabs", "fabsf", "fabsl", "math\fabs", "math\fabsf", "math\fabsl"]
helpviewer_keywords: ["absolute values", "fabsf function", "calculating absolute values", "fabs function", "fabsl function"]
ms.assetid: 23bca210-f408-4f5e-b46b-0ccaaec31e36
diff --git a/docs/c-runtime-library/reference/fclose-fcloseall.md b/docs/c-runtime-library/reference/fclose-fcloseall.md
index a3bb275842..41a23c1c17 100644
--- a/docs/c-runtime-library/reference/fclose-fcloseall.md
+++ b/docs/c-runtime-library/reference/fclose-fcloseall.md
@@ -1,9 +1,10 @@
---
title: "fclose, _fcloseall"
ms.date: "11/04/2016"
-apiname: ["fclose", "_fcloseall"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fclose", "_fcloseall"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fclose", "_fcloseall"]
helpviewer_keywords: ["fclose function", "streams, closing", "_fcloseall function"]
ms.assetid: c3c6ea72-92c6-450a-a33e-3e568d2784a4
diff --git a/docs/c-runtime-library/reference/fclose-nolock.md b/docs/c-runtime-library/reference/fclose-nolock.md
index 4272adba34..d3dda58ebb 100644
--- a/docs/c-runtime-library/reference/fclose-nolock.md
+++ b/docs/c-runtime-library/reference/fclose-nolock.md
@@ -1,9 +1,10 @@
---
title: "_fclose_nolock"
ms.date: "11/04/2016"
-apiname: ["_fclose_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fclose_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fclose_nolock", "_fclose_nolock"]
helpviewer_keywords: ["streams, closing", "fclose_nolock function", "_fclose_nolock function"]
ms.assetid: b4af4392-5fc8-49bb-9fe2-ca7293d3ce04
diff --git a/docs/c-runtime-library/reference/fcloseall.md b/docs/c-runtime-library/reference/fcloseall.md
index 836a5f668f..6cee6d7d2c 100644
--- a/docs/c-runtime-library/reference/fcloseall.md
+++ b/docs/c-runtime-library/reference/fcloseall.md
@@ -1,13 +1,16 @@
---
title: "fcloseall"
-ms.date: "11/04/2016"
-apiname: ["fcloseall"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["fcloseall"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fcloseall"]
helpviewer_keywords: ["fcloseall function"]
ms.assetid: 4f14acde-5bc5-43da-a709-7a3c559df3cf
---
# fcloseall
-This POSIX function is deprecated. Use the ISO C++ conformant [_fcloseall](fclose-fcloseall.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `fcloseall` is a deprecated alias for the [_fcloseall](fclose-fcloseall.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_fcloseall](fclose-fcloseall.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/fcvt-s.md b/docs/c-runtime-library/reference/fcvt-s.md
index f8cf2b8142..66315797fc 100644
--- a/docs/c-runtime-library/reference/fcvt-s.md
+++ b/docs/c-runtime-library/reference/fcvt-s.md
@@ -1,9 +1,10 @@
---
title: "_fcvt_s"
ms.date: "04/05/2018"
-apiname: ["_fcvt_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fcvt_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fcvt_s", "_fcvt_s"]
helpviewer_keywords: ["fcvt_s function", "converting floating point, to strings", "floating-point functions, converting number to string", "_fcvt_s function"]
ms.assetid: 48671197-1d29-4c2b-a5d8-d2368f5f68a1
@@ -84,7 +85,7 @@ The difference between **_ecvt_s** and **_fcvt_s** is in the interpretation of t
In C++, using this function is simplified by a template overload; the overload can infer buffer length automatically, eliminating the need to specify a size argument. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug version of this function first fills the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug version of this function first fills the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
## Requirements
diff --git a/docs/c-runtime-library/reference/fcvt.md b/docs/c-runtime-library/reference/fcvt.md
index 088fa90630..4a10934a54 100644
--- a/docs/c-runtime-library/reference/fcvt.md
+++ b/docs/c-runtime-library/reference/fcvt.md
@@ -1,9 +1,10 @@
---
title: "_fcvt"
ms.date: "04/05/2018"
-apiname: ["_fcvt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fcvt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fcvt"]
helpviewer_keywords: ["converting floating point, to strings", "_fcvt function", "floating-point functions, converting number to string", "fcvt function", "floating-point functions"]
ms.assetid: 74584c88-f0dd-4907-8fca-52da5df583f5
diff --git a/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md b/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md
index d83388b79e..67ec64cfa1 100644
--- a/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md
+++ b/docs/c-runtime-library/reference/fdim-fdimf-fdiml.md
@@ -1,9 +1,10 @@
---
title: "fdim, fdimf, fdiml"
ms.date: "04/05/2018"
-apiname: ["fdim", "fdimf", "fdiml"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fdim", "fdimf", "fdiml"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fdim", "fdimf", "fdiml", "math/fdim", "math/fdimf", "math/fdiml"]
helpviewer_keywords: ["fdim function", "fdimf function", "fdiml function"]
ms.assetid: 2d4ac639-51e9-462d-84ab-fb03b06971a0
diff --git a/docs/c-runtime-library/reference/fdopen-wfdopen.md b/docs/c-runtime-library/reference/fdopen-wfdopen.md
index 966e3d8372..c4027a26a4 100644
--- a/docs/c-runtime-library/reference/fdopen-wfdopen.md
+++ b/docs/c-runtime-library/reference/fdopen-wfdopen.md
@@ -1,9 +1,10 @@
---
title: "_fdopen, _wfdopen"
ms.date: "12/12/2017"
-apiname: ["_fdopen", "_wfdopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fdopen", "_wfdopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tfdopen", "_fdopen", "_wfdopen", "wfdopen", "tfdopen"]
helpviewer_keywords: ["wfdopen function", "_fdopen function", "_wfdopen function", "tfdopen function", "fdopen function", "_tfdopen function", "streams, associating with files"]
ms.assetid: 262757ff-1e09-4472-a5b6-4325fc28f971
diff --git a/docs/c-runtime-library/reference/fdopen.md b/docs/c-runtime-library/reference/fdopen.md
index 9eeb06b5d0..1d96afc2de 100644
--- a/docs/c-runtime-library/reference/fdopen.md
+++ b/docs/c-runtime-library/reference/fdopen.md
@@ -1,13 +1,16 @@
---
title: "fdopen"
-ms.date: "11/04/2016"
-apiname: ["fdopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["fdopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fdopen"]
helpviewer_keywords: ["fdopen function"]
ms.assetid: 3243c1d2-2826-4d2d-bfa2-a2da45f9cc7a
---
# fdopen
-This POSIX function is deprecated. Use the ISO C++ conformant [_fdopen](fdopen-wfdopen.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `fdopen` is a deprecated alias for the [_fdopen](fdopen-wfdopen.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_fdopen](fdopen-wfdopen.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/feclearexcept1.md b/docs/c-runtime-library/reference/feclearexcept1.md
index 1d5f67defe..f0dc5e8676 100644
--- a/docs/c-runtime-library/reference/feclearexcept1.md
+++ b/docs/c-runtime-library/reference/feclearexcept1.md
@@ -1,9 +1,10 @@
---
title: "feclearexcept1"
ms.date: "04/05/2018"
-apiname: ["feclearexcept"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["feclearexcept"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["feclearexcept", "fenv/feclearexcept"]
helpviewer_keywords: ["feclearexcept function"]
ms.assetid: ef419da3-c248-4432-b53c-8e7a475d9533
diff --git a/docs/c-runtime-library/reference/fegetenv1.md b/docs/c-runtime-library/reference/fegetenv1.md
index 475ddcce55..89b1480db7 100644
--- a/docs/c-runtime-library/reference/fegetenv1.md
+++ b/docs/c-runtime-library/reference/fegetenv1.md
@@ -1,9 +1,10 @@
---
title: "fegetenv"
ms.date: "04/05/2018"
-apiname: ["fetegenv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fetegenv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fegetenv", "fenv/fegetenv"]
helpviewer_keywords: ["fetegenv function"]
ms.assetid: 68962421-6978-4b27-8e4c-ad1577830cf6
diff --git a/docs/c-runtime-library/reference/fegetexceptflag2.md b/docs/c-runtime-library/reference/fegetexceptflag2.md
index f9ad6670b5..496073e440 100644
--- a/docs/c-runtime-library/reference/fegetexceptflag2.md
+++ b/docs/c-runtime-library/reference/fegetexceptflag2.md
@@ -1,9 +1,10 @@
---
title: "fegetexceptflag"
ms.date: "04/05/2018"
-apiname: ["fegetexceptflag"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fegetexceptflag"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fegetexceptflag", "fenv/fegetexceptflag"]
helpviewer_keywords: ["fegetexceptflag function"]
ms.assetid: 2d28f0ca-70c9-4cff-be8b-3d876eacde71
@@ -44,7 +45,7 @@ The **fegetexceptflag** function stores the current state of the floating-point
|FE_INVALID|A domain error occurred in an earlier floating-point operation.|
|FE_OVERFLOW|A range error occurred; an earlier floating-point operation result was too large to be represented.|
|FE_UNDERFLOW|An earlier floating-point operation result was too small to be represented at full precision; a denormal value was created.|
-|FE_ALLEXCEPT|The bitwise OR of all supported floating-point exceptions.|
+|FE_ALL_EXCEPT|The bitwise OR of all supported floating-point exceptions.|
The *excepts* argument may be zero, one of the supported floating-point exception macros, or the bitwise OR of two or more of the macros. The effect of any other argument value is undefined.
diff --git a/docs/c-runtime-library/reference/fegetround-fesetround2.md b/docs/c-runtime-library/reference/fegetround-fesetround2.md
index fd85689a8b..5d9bc58359 100644
--- a/docs/c-runtime-library/reference/fegetround-fesetround2.md
+++ b/docs/c-runtime-library/reference/fegetround-fesetround2.md
@@ -1,9 +1,10 @@
---
title: "fegetround, fesetround"
ms.date: "04/05/2018"
-apiname: ["fegetround", "fesetround"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fegetround", "fesetround"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fegetround", "fesetround", "fenv/fegetround", "fenv/fesetround"]
helpviewer_keywords: ["fegetround function", "fesetround function"]
ms.assetid: 596af00b-be2f-4f57-b2f5-460485f9ff0b
diff --git a/docs/c-runtime-library/reference/feholdexcept2.md b/docs/c-runtime-library/reference/feholdexcept2.md
index ec677d4061..5d71e8ff31 100644
--- a/docs/c-runtime-library/reference/feholdexcept2.md
+++ b/docs/c-runtime-library/reference/feholdexcept2.md
@@ -1,9 +1,10 @@
---
title: "feholdexcept"
ms.date: "04/05/2018"
-apiname: ["feholdexcept"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["feholdexcept"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["feholdexcept", "fenv/feholdexcept"]
helpviewer_keywords: ["feholdexcept function"]
ms.assetid: 88e512ae-b5d8-452c-afe9-c824cd3ef1d8
diff --git a/docs/c-runtime-library/reference/feof.md b/docs/c-runtime-library/reference/feof.md
index 1e91e542d6..41ac1164a4 100644
--- a/docs/c-runtime-library/reference/feof.md
+++ b/docs/c-runtime-library/reference/feof.md
@@ -1,9 +1,10 @@
---
title: "feof"
ms.date: "11/04/2016"
-apiname: ["feof"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["feof"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["feof"]
helpviewer_keywords: ["end of file, testing for", "feof function"]
ms.assetid: 09081eee-7c4b-4189-861f-2fad95d3ec6d
diff --git a/docs/c-runtime-library/reference/feraiseexcept.md b/docs/c-runtime-library/reference/feraiseexcept.md
index 28832c6c96..c287bcf382 100644
--- a/docs/c-runtime-library/reference/feraiseexcept.md
+++ b/docs/c-runtime-library/reference/feraiseexcept.md
@@ -1,9 +1,9 @@
---
title: "feraiseexcept"
ms.date: "04/05/2018"
-apiname: ["feraiseexcept"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "HeaderDef"
+api_name: ["feraiseexcept"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["HeaderDef"]
f1_keywords: ["feraiseexcept", "fenv/feraiseexcept"]
helpviewer_keywords: ["feraiseexcept function"]
ms.assetid: 87e89151-83c2-4563-9a9a-45666245d437
@@ -40,13 +40,13 @@ The **feraiseexcept** function attempts to raise the floating-point exceptions s
|FE_INVALID|A domain error occurred in an earlier floating-point operation.|
|FE_OVERFLOW|A range error occurred; an earlier floating-point operation result was too large to be represented.|
|FE_UNDERFLOW|An earlier floating-point operation result was too small to be represented at full precision; a denormal value was created.|
-|FE_ALLEXCEPT|The bitwise OR of all supported floating-point exceptions.|
+|FE_ALL_EXCEPT|The bitwise OR of all supported floating-point exceptions.|
The *excepts* argument may be zero, one of the exception macro values, or the bitwise OR of two or more of the supported exception macros. If one of the specified exception macros is FE_OVERFLOW or FE_UNDERFLOW, the FE_INEXACT exception may be raised as a side-effect.
To use this function, you must turn off floating-point optimizations that could prevent access by using the `#pragma fenv_access(on)` directive prior to the call. For more information, see [fenv_access](../../preprocessor/fenv-access.md).
-**Microsoft Specific:** The exceptions specified in *excepts* are raised in the order FE_INVALID, FE_DIVBYZERO, FE_OVERFLOW, FE_UNDERFLOW, FE_INEXACT. However, FE_INEXACT can be raised when FE_OVERFLOW or FE_UNDERFLOW is raised, even if not specified in *excepts*. **End Microsoft Specific**
+**Microsoft-specific:** The exceptions specified in *excepts* are raised in the order FE_INVALID, FE_DIVBYZERO, FE_OVERFLOW, FE_UNDERFLOW, FE_INEXACT. However, FE_INEXACT can be raised when FE_OVERFLOW or FE_UNDERFLOW is raised, even if not specified in *excepts*.
## Requirements
diff --git a/docs/c-runtime-library/reference/ferror.md b/docs/c-runtime-library/reference/ferror.md
index d47f952d89..11e469b229 100644
--- a/docs/c-runtime-library/reference/ferror.md
+++ b/docs/c-runtime-library/reference/ferror.md
@@ -1,9 +1,10 @@
---
title: "ferror"
ms.date: "11/04/2016"
-apiname: ["ferror"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ferror"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ferror"]
helpviewer_keywords: ["ferror function", "streams, testing for errors", "errors [C++], testing for stream"]
ms.assetid: 528a34bc-f2aa-4c3f-b89a-5b148e6864f7
diff --git a/docs/c-runtime-library/reference/fesetenv1.md b/docs/c-runtime-library/reference/fesetenv1.md
index 3a8582fd66..f26c811c95 100644
--- a/docs/c-runtime-library/reference/fesetenv1.md
+++ b/docs/c-runtime-library/reference/fesetenv1.md
@@ -1,9 +1,10 @@
---
title: "fesetenv"
ms.date: "04/05/2018"
-apiname: ["fesetenv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fesetenv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fesetenv", "fenv/fesetenv"]
helpviewer_keywords: ["fesetenv function"]
ms.assetid: ffc64fff-8ea7-4d59-9e04-ff96ef8cd012
diff --git a/docs/c-runtime-library/reference/fesetexceptflag2.md b/docs/c-runtime-library/reference/fesetexceptflag2.md
index a4a4bb22fa..79f3e1616b 100644
--- a/docs/c-runtime-library/reference/fesetexceptflag2.md
+++ b/docs/c-runtime-library/reference/fesetexceptflag2.md
@@ -1,9 +1,10 @@
---
title: "fesetexceptflag"
ms.date: "04/05/2018"
-apiname: ["fesetexceptflag"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fesetexceptflag"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fesetexceptflag", "fenv/fesetexceptflag"]
helpviewer_keywords: ["fesetexceptflag function"]
ms.assetid: 2f7dad77-9e54-4097-a3e3-35176ace4de5
@@ -44,7 +45,7 @@ The **fesetexceptflag** function sets the state of the floating-point exception
|FE_INVALID|A domain error occurred in an earlier floating-point operation.|
|FE_OVERFLOW|A range error occurred; an earlier floating-point operation result was too large to be represented.|
|FE_UNDERFLOW|An earlier floating-point operation result was too small to be represented at full precision; a denormal value was created.|
-|FE_ALLEXCEPT|The bitwise OR of all supported floating-point exceptions.|
+|FE_ALL_EXCEPT|The bitwise OR of all supported floating-point exceptions.|
The *excepts* argument may be zero, one of the supported floating-point exception macros, or the bitwise OR of two or more of the macros. The effect of any other argument value is undefined.
diff --git a/docs/c-runtime-library/reference/fetestexcept1.md b/docs/c-runtime-library/reference/fetestexcept1.md
index 6dc41801fd..4d233c21d1 100644
--- a/docs/c-runtime-library/reference/fetestexcept1.md
+++ b/docs/c-runtime-library/reference/fetestexcept1.md
@@ -1,9 +1,10 @@
---
title: "fetestexcept"
ms.date: "04/05/2018"
-apiname: ["fetestexcept"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fetestexcept"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fetestexcept", "fenv/fetestexcept"]
helpviewer_keywords: ["fetestexept function"]
ms.assetid: ca4dc43f-5573-440d-bc19-ead7571b13dc
@@ -40,7 +41,7 @@ Use the fetestexcept function to determine which exceptions were raised by a flo
|FE_INVALID|A domain error occurred in an earlier floating-point operation.|
|FE_OVERFLOW|A range error occurred; an earlier floating-point operation result was too large to be represented.|
|FE_UNDERFLOW|An earlier floating-point operation result was too small to be represented at full precision; a denormal value was created.|
-|FE_ALLEXCEPT|The bitwise OR of all supported floating-point exceptions.|
+|FE_ALL_EXCEPT|The bitwise OR of all supported floating-point exceptions.|
The specified *excepts* argument may be 0, one of the supported floating-point exception macros, or the bitwise OR of two or more of the macros. The effect of any other *excepts* argument value is undefined.
diff --git a/docs/c-runtime-library/reference/feupdateenv.md b/docs/c-runtime-library/reference/feupdateenv.md
index f66dd82ed4..43c8b0185f 100644
--- a/docs/c-runtime-library/reference/feupdateenv.md
+++ b/docs/c-runtime-library/reference/feupdateenv.md
@@ -1,9 +1,9 @@
---
title: "feupdateenv"
ms.date: "04/05/2018"
-apiname: ["feupdateenv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "HeaderDef"
+api_name: ["feupdateenv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["HeaderDef"]
f1_keywords: ["feupdateenv", "fenv/feupdateenv"]
helpviewer_keywords: ["feupdateenv function"]
ms.assetid: 3d170042-dfd5-4e4f-a55f-038cf2296cc9
diff --git a/docs/c-runtime-library/reference/fflush-nolock.md b/docs/c-runtime-library/reference/fflush-nolock.md
index 91428a5351..4bfe8d5838 100644
--- a/docs/c-runtime-library/reference/fflush-nolock.md
+++ b/docs/c-runtime-library/reference/fflush-nolock.md
@@ -1,9 +1,10 @@
---
title: "_fflush_nolock"
ms.date: "11/04/2016"
-apiname: ["_fflush_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fflush_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fflush_nolock", "_fflush_nolock"]
helpviewer_keywords: ["fflush_nolock function", "_fflush_nolock function", "streams, flushing", "flushing"]
ms.assetid: 5e33c4a1-b10c-4001-ad01-210757919291
diff --git a/docs/c-runtime-library/reference/fflush.md b/docs/c-runtime-library/reference/fflush.md
index 3df6226ad7..eca29fb8e1 100644
--- a/docs/c-runtime-library/reference/fflush.md
+++ b/docs/c-runtime-library/reference/fflush.md
@@ -1,9 +1,10 @@
---
title: "fflush"
-ms.date: "11/04/2016"
-apiname: ["fflush"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "09/11/2019"
+api_name: ["fflush"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fflush"]
helpviewer_keywords: ["streams, flushing", "flushing", "fflush function"]
ms.assetid: 8bbc753f-dc74-4e77-b563-74da2835e92b
@@ -56,44 +57,50 @@ For additional compatibility information, see [Compatibility](../../c-runtime-li
```C
// crt_fflush.c
+// Compile with: cl /W4 crt_fflush.c
+// This sample gets a number from the user, then writes it to a file.
+// It ensures the write isn't lost on crash by calling fflush.
#include
-#include
-int main( void )
+int * crash_the_program = 0;
+
+int main(void)
{
- int integer;
- char string[81];
-
- // Read each word as a string.
- printf( "Enter a sentence of four words with scanf: " );
- for( integer = 0; integer < 4; integer++ )
- {
- scanf_s( "%s", string, sizeof(string) );
- printf( "%s\n", string );
- }
-
- // You must flush the input buffer before using gets.
- // fflush on input stream is an extension to the C standard
- fflush( stdin );
- printf( "Enter the same sentence with gets: " );
- gets_s( string, sizeof(string) );
- printf( "%s\n", string );
+ FILE * my_file;
+ errno_t err = fopen_s(&my_file, "myfile.txt", "w");
+ if (my_file && !err)
+ {
+ printf("Write a number: ");
+
+ int my_number = 0;
+ scanf_s("%d", &my_number);
+
+ fprintf(my_file, "User selected %d\n", my_number);
+
+ // Write data to a file immediately instead of buffering.
+ fflush(my_file);
+
+ if (my_number == 5)
+ {
+ // Without using fflush, no data was written to the file
+ // prior to the crash, so the data is lost.
+ *crash_the_program = 5;
+ }
+
+ // Normally, fflush is not needed as closing the file will write the buffer.
+ // Note that files are automatically closed and flushed during normal termination.
+ fclose(my_file);
+ }
+ return 0;
}
```
```Input
-This is a test
-This is a test
+5
```
-```Output
-Enter a sentence of four words with scanf: This is a test
-This
-is
-a
-test
-Enter the same sentence with gets: This is a test
-This is a test
+```myfile.txt
+User selected 5
```
## See also
diff --git a/docs/c-runtime-library/reference/fgetc-fgetwc.md b/docs/c-runtime-library/reference/fgetc-fgetwc.md
index d02805c5e1..ccf42e74c0 100644
--- a/docs/c-runtime-library/reference/fgetc-fgetwc.md
+++ b/docs/c-runtime-library/reference/fgetc-fgetwc.md
@@ -1,9 +1,10 @@
---
title: "fgetc, fgetwc"
ms.date: "11/04/2016"
-apiname: ["fgetwc", "fgetc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fgetwc", "fgetc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fgettc", "fgetwc", "fgetc"]
helpviewer_keywords: ["fgettc function", "characters, reading", "_fgettc function", "fgetc function", "streams, reading characters from", "reading characters from streams", "fgetwc function"]
ms.assetid: 13348b7b-dc86-421c-9d6c-611ca79c8338
diff --git a/docs/c-runtime-library/reference/fgetc-nolock-fgetwc-nolock.md b/docs/c-runtime-library/reference/fgetc-nolock-fgetwc-nolock.md
index 54cbd3dd97..d9e0896c31 100644
--- a/docs/c-runtime-library/reference/fgetc-nolock-fgetwc-nolock.md
+++ b/docs/c-runtime-library/reference/fgetc-nolock-fgetwc-nolock.md
@@ -1,9 +1,10 @@
---
title: "_fgetc_nolock, _fgetwc_nolock"
ms.date: "11/04/2016"
-apiname: ["_fgetc_nolock", "_fgetwc_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fgetc_nolock", "_fgetwc_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fgetwc_nolock", "fgettc_nolock", "fgetwc_nolock", "_fgetc_nolock", "_fgettc_nolock", "fgetc_nolock"]
helpviewer_keywords: ["fgetc_nolock function", "fgetwc_nolock function", "_fgetwc_nolock function", "characters, reading", "_fgetc_nolock function", "streams, reading characters from", "fgettc_nolock function", "reading characters from streams", "_fgettc_nolock function"]
ms.assetid: fb8e7c5b-4503-493a-879e-6a1db75aa114
diff --git a/docs/c-runtime-library/reference/fgetchar-fgetwchar.md b/docs/c-runtime-library/reference/fgetchar-fgetwchar.md
index 1f23300af8..d5ad7f0b5e 100644
--- a/docs/c-runtime-library/reference/fgetchar-fgetwchar.md
+++ b/docs/c-runtime-library/reference/fgetchar-fgetwchar.md
@@ -1,9 +1,10 @@
---
title: "_fgetchar, _fgetwchar"
ms.date: "11/04/2016"
-apiname: ["_fgetchar", "_fgetwchar"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fgetchar", "_fgetwchar"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fgetwchar", "_fgettchar", "_fgetchar", "_fgetwchar", "fgettchar"]
helpviewer_keywords: ["fgetwchar function", "_fgetchar function", "fgettchar function", "_fgetwchar function", "_fgettchar function", "standard input, reading from", "fgetchar function"]
ms.assetid: 8bce874c-701a-41a3-b1b2-feff266fb5b9
diff --git a/docs/c-runtime-library/reference/fgetchar.md b/docs/c-runtime-library/reference/fgetchar.md
index f389e55a87..70f5c5d9ca 100644
--- a/docs/c-runtime-library/reference/fgetchar.md
+++ b/docs/c-runtime-library/reference/fgetchar.md
@@ -1,13 +1,16 @@
---
title: "fgetchar"
-ms.date: "11/04/2016"
-apiname: ["fgetchar"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["fgetchar"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fgetchar"]
helpviewer_keywords: ["fgetchar function"]
ms.assetid: 2b27a6f2-d973-4d12-a66d-7e6b01e84470
---
# fgetchar
-This POSIX function is deprecated. Use the ISO C++ conformant [_fgetchar](fgetchar-fgetwchar.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `fgetchar` is a deprecated alias for the [_fgetchar](fgetchar-fgetwchar.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_fgetchar](fgetchar-fgetwchar.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/fgetpos.md b/docs/c-runtime-library/reference/fgetpos.md
index d0f2d6196b..fb322334be 100644
--- a/docs/c-runtime-library/reference/fgetpos.md
+++ b/docs/c-runtime-library/reference/fgetpos.md
@@ -1,9 +1,10 @@
---
title: "fgetpos"
ms.date: "11/04/2016"
-apiname: ["fgetpos"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fgetpos"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fgetpos"]
helpviewer_keywords: ["fgetpos function", "streams, file position indicator"]
ms.assetid: bfa05c38-1135-418c-bda1-d41be51acb62
diff --git a/docs/c-runtime-library/reference/fgets-fgetws.md b/docs/c-runtime-library/reference/fgets-fgetws.md
index e8c882b881..a28ecd9bc0 100644
--- a/docs/c-runtime-library/reference/fgets-fgetws.md
+++ b/docs/c-runtime-library/reference/fgets-fgetws.md
@@ -1,9 +1,10 @@
---
title: "fgets, fgetws"
ms.date: "07/11/2018"
-apiname: ["fgets", "fgetws"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fgets", "fgetws"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fgetts", "fgetws", "fgets"]
helpviewer_keywords: ["_fgetts function", "streams, getting strings from", "streams, reading from", "fgets function", "fgetws function", "fgetts function"]
ms.assetid: ad549bb5-df98-4ccd-a53f-95114e60c4fc
diff --git a/docs/c-runtime-library/reference/filelength-filelengthi64.md b/docs/c-runtime-library/reference/filelength-filelengthi64.md
index 8f41cb5d75..03434cbcc5 100644
--- a/docs/c-runtime-library/reference/filelength-filelengthi64.md
+++ b/docs/c-runtime-library/reference/filelength-filelengthi64.md
@@ -1,9 +1,10 @@
---
title: "_filelength, _filelengthi64"
ms.date: "11/04/2016"
-apiname: ["_filelengthi64", "_filelength"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_filelengthi64", "_filelength"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_filelength", "_filelengthi64", "filelengthi64"]
helpviewer_keywords: ["filelengthi64 function", "lengths, file", "filelength function", "_filelength function", "files [C++], length", "_filelengthi64 function"]
ms.assetid: 3ab83d5a-543c-4079-b9d9-0abfc7da0275
diff --git a/docs/c-runtime-library/reference/filelength.md b/docs/c-runtime-library/reference/filelength.md
index 74bb2a86c2..f8ceb8316f 100644
--- a/docs/c-runtime-library/reference/filelength.md
+++ b/docs/c-runtime-library/reference/filelength.md
@@ -1,13 +1,16 @@
---
title: "filelength"
-ms.date: "11/04/2016"
-apiname: ["filelength"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["filelength"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["filelength"]
helpviewer_keywords: ["filelength function"]
ms.assetid: 5fbc1912-7822-498d-bbf4-8bada87cf9b9
---
# filelength
-This POSIX function is deprecated. Use the ISO C++ conformant [_filelength](filelength-filelengthi64.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `filelength` is a deprecated alias for the [_filelength](filelength-filelengthi64.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_filelength](filelength-filelengthi64.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/fileno.md b/docs/c-runtime-library/reference/fileno.md
index a305147590..aff2083c49 100644
--- a/docs/c-runtime-library/reference/fileno.md
+++ b/docs/c-runtime-library/reference/fileno.md
@@ -1,9 +1,10 @@
---
title: "_fileno"
ms.date: "11/04/2016"
-apiname: ["_fileno"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fileno"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fileno"]
helpviewer_keywords: ["file handles [C++], getting from streams", "fileno function", "_fileno function", "streams, getting file handles"]
ms.assetid: 86474174-2f17-4100-bcc4-352dd976c7b5
diff --git a/docs/c-runtime-library/reference/findclose.md b/docs/c-runtime-library/reference/findclose.md
index 4a7858f2d2..83c313ad6d 100644
--- a/docs/c-runtime-library/reference/findclose.md
+++ b/docs/c-runtime-library/reference/findclose.md
@@ -1,9 +1,10 @@
---
title: "_findclose"
ms.date: "11/04/2016"
-apiname: ["_findclose"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_findclose"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_findclose", "findclose"]
helpviewer_keywords: ["_findclose function", "findclose function"]
ms.assetid: 9216c573-0878-444c-b5d7-cdaf16fb9163
diff --git a/docs/c-runtime-library/reference/findfirst-functions.md b/docs/c-runtime-library/reference/findfirst-functions.md
index 4efefe13a5..af06a89ac9 100644
--- a/docs/c-runtime-library/reference/findfirst-functions.md
+++ b/docs/c-runtime-library/reference/findfirst-functions.md
@@ -1,9 +1,10 @@
---
title: "_findfirst, _findfirst32, _findfirst32i64, _findfirst64, _findfirst64i32, _findfirsti64, _wfindfirst, _wfindfirst32, _wfindfirst32i64, _wfindfirst64, _wfindfirst64i32, _wfindfirsti64"
ms.date: "11/04/2016"
-apiname: ["_findfirst", "_wfindfirst", "_findfirst32", "_wfindfirst32", "_findfirst32i64", "_wfindfirst32i64", "_findfirst64", "_wfindfirst64", "_findfirst64i32", "_wfindfirst64i32", "_findfirsti64", "_wfindfirsti64"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_findfirst", "_wfindfirst", "_findfirst32", "_wfindfirst32", "_findfirst32i64", "_wfindfirst32i64", "_findfirst64", "_wfindfirst64", "_findfirst64i32", "_wfindfirst64i32", "_findfirsti64", "_wfindfirsti64"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["findfirst32i64", "wfindfirst32i64", "tfindfirst64", "_findfirst64i32", "_wfindfirst32i64", "_wfindfirsti64", "wfindfirst", "_tfindfirsti64", "findfirst32", "_tfindfirst32", "_findfirsti64", "findfirst", "wfindfirst64", "wfindfirst32", "tfindfirst32", "_wfindfirst64i32", "findfirst64i32", "tfindfirst64i32", "_wfindfirst", "findfirsti64", "_findfirst32i64", "wfindfirst64i32", "_wfindfirst32", "_findfirst32", "_tfindfirst32i64", "tfindfirst", "_tfindfirst64i32", "findfirst64", "_tfindfirst", "_findfirst64", "_tfindfirst64", "tfindfirst32i64", "_findfirst", "_wfindfirst64"]
helpviewer_keywords: ["_tfindfirst64 function", "_wfindfirst64i32 function", "_wfindfirst32i64 function", "wfindfirst32 function", "_findfirst function", "wfindfirst64 function", "_wfindfirst function", "_findfirst64i32 function", "wfindfirst function", "_findfirst64 function", "tfindfirst32 function", "_tfindfirst64i32 function", "findfirst function", "findfirst32i64 function", "tfindfirst64 function", "_tfindfirst32 function", "tfindfirst32i64 function", "tfindfirst64i32 function", "_wfindfirsti64 function", "_findfirst32i64 function", "findfirst32 function", "findfirsti64 function", "findfirst64i32 function", "tfindfirsti64 function", "tfindfirst function", "_wfindfirst32 function", "wfindfirsti64 function", "_tfindfirsti64 function", "_tfindfirst function", "_tfindfirst32i64 function", "findfirst64 function", "_findfirst32 function", "_findfirsti64 function", "wfindfirst32i64 function", "wfindfirst64i32 function", "_wfindfirst64 function"]
ms.assetid: 9bb46d1a-b946-47de-845a-a0b109a33ead
diff --git a/docs/c-runtime-library/reference/findnext-functions.md b/docs/c-runtime-library/reference/findnext-functions.md
index c0bd32ca3c..73e0d8bfee 100644
--- a/docs/c-runtime-library/reference/findnext-functions.md
+++ b/docs/c-runtime-library/reference/findnext-functions.md
@@ -1,9 +1,10 @@
---
title: "_findnext, _findnext32, _findnext32i64, _findnext64, _findnext64i32, _findnexti64, _wfindnext, _wfindnext32, _wfindnext32i64, _wfindnext64, _wfindnext64i32, _wfindnexti64"
ms.date: "11/04/2016"
-apiname: ["_wfindnext", "_findnext"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wfindnext", "_findnext"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["findnext", "_wfindnext32i64", "_tfindnext64i32", "findnext32", "findnext32i64", "wfindnext64i32", "_wfindnext", "tfindnext64", "findnexti64", "_findnexti64", "_tfindnexti64", "_findnext64i32", "tfindnexti64", "tfindnext32", "_wfindnext64i32", "findnext64i32", "_findnext", "_tfindnext32i64", "_wfindnext64", "wfindnext", "wfindnext32", "tfindnext32i64", "_findnext64", "_tfindnext64", "_wfindnext32", "findnext64", "_findnext32i64", "tfindnext", "wfindnexti64", "tfindnext64i32", "_tfindnext32", "wfindnext32i64", "wfindnext64", "_wfindnexti64", "_tfindnext", "_findnext32"]
helpviewer_keywords: ["_wfindnexti64 function", "_tfindnext32 function", "wfindnexti64 function", "_wfindnext32i64 function", "findnext32i64 function", "tfindnext64i32 function", "_tfindnext64i32 function", "_findnext function", "findnext64i32 function", "_tfindnext function", "findnext32 function", "tfindnext32 function", "_findnext32 function", "_tfindnext32i64 function", "_wfindnext function", "tfindnext function", "_findnext64 function", "findnext64 function", "_findnext64i32 function", "wfindnext32i64 function", "findnext function", "wfindnext32 function", "_wfindnext64i32 function", "findnexti64 function", "_wfindnext64 function", "_findnext32i64 function", "_findnexti64 function", "_tfindnext64 function", "wfindnext64i32 function", "tfindnexti64 function", "wfindnext64 function", "wfindnext function", "tfindnext64 function", "_wfindnext32 function", "tfindnext32i64 function", "_tfindnexti64 function"]
ms.assetid: 75d97188-5add-4698-a46c-4c492378f0f8
diff --git a/docs/c-runtime-library/reference/finite-finitef.md b/docs/c-runtime-library/reference/finite-finitef.md
index 5f75519c43..f7eb447371 100644
--- a/docs/c-runtime-library/reference/finite-finitef.md
+++ b/docs/c-runtime-library/reference/finite-finitef.md
@@ -1,9 +1,10 @@
---
title: "isfinite, _finite, _finitef"
ms.date: "01/31/2019"
-apiname: ["_finite", "_finitef"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_finite", "_finitef"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["isfinite", "finite", "_finite", "_finitef", "math/isfinite", "math/_finite", "math/_finitef", "float/_finite"]
helpviewer_keywords: ["finite function", "_finite function", "_finitef function"]
ms.assetid: 5a7d7ca7-befb-4e1f-831d-28713c6eb805
diff --git a/docs/c-runtime-library/reference/floating-point-primitives.md b/docs/c-runtime-library/reference/floating-point-primitives.md
index 215df43d3a..244d5a7137 100644
--- a/docs/c-runtime-library/reference/floating-point-primitives.md
+++ b/docs/c-runtime-library/reference/floating-point-primitives.md
@@ -1,9 +1,10 @@
---
title: "Floating-point primitives"
ms.date: "01/31/2019"
-apiname: ["_dclass", "_ldclass", "_fdclass", "_dsign", "_ldsign", "_fdsign", "_dpcomp", "_ldpcomp", "_fdpcomp", "_dtest", "_ldtest", "_fdtest", "_d_int", "_ld_int", "_fd_int", "_dscale", "_ldscale", "_fdscale", "_dunscale", "_ldunscale", "_fdunscale", "_dexp", "_ldexp", "_fdexp", "_dnorm", "_fdnorm", "_dpoly", "_ldpoly", "_fdpoly", "_dlog", "_ldlog", "_fdlog", "_dsin", "_ldsin", "_fdsin"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_dclass", "_ldclass", "_fdclass", "_dsign", "_ldsign", "_fdsign", "_dpcomp", "_ldpcomp", "_fdpcomp", "_dtest", "_ldtest", "_fdtest", "_d_int", "_ld_int", "_fd_int", "_dscale", "_ldscale", "_fdscale", "_dunscale", "_ldunscale", "_fdunscale", "_dexp", "_ldexp", "_fdexp", "_dnorm", "_fdnorm", "_dpoly", "_ldpoly", "_fdpoly", "_dlog", "_ldlog", "_fdlog", "_dsin", "_ldsin", "_fdsin"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_dclass", "_ldclass", "_fdclass", "_dsign", "_ldsign", "_fdsign", "_dpcomp", "_ldpcomp", "_fdpcomp", "_dtest", "_ldtest", "_fdtest", "_d_int", "_ld_int", "_fd_int", "_dscale", "_ldscale", "_fdscale", "_dunscale", "_ldunscale", "_fdunscale", "_dexp", "_ldexp", "_fdexp", "_dnorm", "_fdnorm", "_dpoly", "_ldpoly", "_fdpoly", "_dlog", "_ldlog", "_fdlog", "_dsin", "_ldsin", "_fdsin"]
helpviewer_keywords: ["_dclass", "_ldclass", "_fdclass", "_dsign", "_ldsign", "_fdsign", "_dpcomp", "_ldpcomp", "_fdpcomp", "_dtest", "_ldtest", "_fdtest", "_d_int", "_ld_int", "_fd_int", "_dscale", "_ldscale", "_fdscale", "_dunscale", "_ldunscale", "_fdunscale", "_dexp", "_ldexp", "_fdexp", "_dnorm", "_fdnorm", "_dpoly", "_ldpoly", "_fdpoly", "_dlog", "_ldlog", "_fdlog", "_dsin", "_ldsin", "_fdsin"]
---
diff --git a/docs/c-runtime-library/reference/floor-floorf-floorl.md b/docs/c-runtime-library/reference/floor-floorf-floorl.md
index 7cb42a627e..bf86ead2bf 100644
--- a/docs/c-runtime-library/reference/floor-floorf-floorl.md
+++ b/docs/c-runtime-library/reference/floor-floorf-floorl.md
@@ -1,9 +1,10 @@
---
title: "floor, floorf, floorl"
ms.date: "04/05/2018"
-apiname: ["floorf", "floorl", "floor"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["floorf", "floorl", "floor"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["floor", "floorl", "_floorl", "floorf"]
helpviewer_keywords: ["floor function", "floorf function", "calculating floors of values", "floorl function"]
ms.assetid: e9955f70-d659-414f-8050-132e13c8ff36
diff --git a/docs/c-runtime-library/reference/flushall.md b/docs/c-runtime-library/reference/flushall.md
index ebcd989576..abc57d2844 100644
--- a/docs/c-runtime-library/reference/flushall.md
+++ b/docs/c-runtime-library/reference/flushall.md
@@ -1,9 +1,10 @@
---
title: "_flushall"
ms.date: "11/04/2016"
-apiname: ["_flushall"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_flushall"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_flushall"]
helpviewer_keywords: ["flushall function", "flushing streams", "streams, flushing", "_flushall function"]
ms.assetid: 2cd73562-6d00-4ca2-b13c-80d0ae7870b5
diff --git a/docs/c-runtime-library/reference/fma-fmaf-fmal.md b/docs/c-runtime-library/reference/fma-fmaf-fmal.md
index e38301dbfa..07cbb23520 100644
--- a/docs/c-runtime-library/reference/fma-fmaf-fmal.md
+++ b/docs/c-runtime-library/reference/fma-fmaf-fmal.md
@@ -1,9 +1,10 @@
---
title: "fma, fmaf, fmal"
ms.date: "04/05/2018"
-apiname: ["fma", "fmaf", "fmal"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fma", "fmaf", "fmal"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fma", "fmaf", "fmal", "math/fma", "math/fmaf", "math/fmal"]
helpviewer_keywords: ["fma function", "fmaf function", "fmal function"]
ms.assetid: 584a6037-da1e-4e86-9f0c-97aae86de0c0
diff --git a/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md b/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md
index 17199b1535..7c55f347a9 100644
--- a/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md
+++ b/docs/c-runtime-library/reference/fmax-fmaxf-fmaxl.md
@@ -1,9 +1,10 @@
---
title: "fmax, fmaxf, fmaxl"
ms.date: "04/05/2018"
-apiname: ["fmax", "fmaxf", "fmaxl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fmax", "fmaxf", "fmaxl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fmax", "fmaxf", "fmaxl", "math/fmax", "math/fmaxf", "math/fmaxl"]
helpviewer_keywords: ["fmax function", "fmaxf function", "fmaxl function"]
ms.assetid: a773ccf7-495e-4a9a-8c6d-dfb53e341e35
diff --git a/docs/c-runtime-library/reference/fmin-fminf-fminl.md b/docs/c-runtime-library/reference/fmin-fminf-fminl.md
index 115a896622..0d16e9bb56 100644
--- a/docs/c-runtime-library/reference/fmin-fminf-fminl.md
+++ b/docs/c-runtime-library/reference/fmin-fminf-fminl.md
@@ -1,9 +1,10 @@
---
title: "fmin, fminf, fminl"
ms.date: "04/05/2018"
-apiname: ["fmin", "fminf", "fminl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fmin", "fminf", "fminl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fmin", "fminf", "fminl", "math/fmin", "math/fminf", "math/fminl"]
helpviewer_keywords: ["fmin function", "fminf function", "fminl function"]
ms.assetid: 1916dfb5-99c1-4b0d-aefb-513525c3f2ac
diff --git a/docs/c-runtime-library/reference/fmod-fmodf.md b/docs/c-runtime-library/reference/fmod-fmodf.md
index 6ed4bf0c74..5ae9319381 100644
--- a/docs/c-runtime-library/reference/fmod-fmodf.md
+++ b/docs/c-runtime-library/reference/fmod-fmodf.md
@@ -1,9 +1,10 @@
---
title: "fmod, fmodf, fmodl"
ms.date: "04/05/2018"
-apiname: ["fmod", "fmodf", "fmodl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fmod", "fmodf", "fmodl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fmod", "_fmodl", "fmodf"]
helpviewer_keywords: ["calculating floating-point remainders", "fmodf function", "fmodl function", "fmod function", "floating-point numbers, calculating remainders"]
ms.assetid: 6962d369-d11f-40b1-a6d7-6f67239f8a23
diff --git a/docs/c-runtime-library/reference/fopen-s-wfopen-s.md b/docs/c-runtime-library/reference/fopen-s-wfopen-s.md
index 60f23e2155..dbe6f6b35e 100644
--- a/docs/c-runtime-library/reference/fopen-s-wfopen-s.md
+++ b/docs/c-runtime-library/reference/fopen-s-wfopen-s.md
@@ -1,9 +1,10 @@
---
title: "fopen_s, _wfopen_s"
ms.date: "11/04/2016"
-apiname: ["_wfopen_s", "fopen_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wfopen_s", "fopen_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fopen_s", "_tfopen_s", "_wfopen_s"]
helpviewer_keywords: ["_wfopen_s function", "opening files, for file I/O", "_tfopen_s function", "tfopen_s function", "wfopen_s function", "fopen_s function", "Unicode [C++], creating files", "Unicode [C++], writing files", "files [C++], opening", "Unicode [C++], files"]
ms.assetid: c534857e-39ee-4a3f-bd26-dfe551ac96c3
diff --git a/docs/c-runtime-library/reference/fopen-wfopen.md b/docs/c-runtime-library/reference/fopen-wfopen.md
index 62cb910d55..bc3326b086 100644
--- a/docs/c-runtime-library/reference/fopen-wfopen.md
+++ b/docs/c-runtime-library/reference/fopen-wfopen.md
@@ -1,9 +1,10 @@
---
title: "fopen, _wfopen"
ms.date: "11/04/2016"
-apiname: ["_wfopen", "fopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wfopen", "fopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fopen", "_wfopen", "_tfopen", "corecrt_wstdio/_wfopen", "stdio/fopen"]
helpviewer_keywords: ["opening files, for file I/O", "wfopen function", "tfopen function", "_tfopen function", "_wfopen function", "files [C++], opening", "fopen function"]
ms.assetid: e868993f-738c-4920-b5e4-d8f2f41f933d
diff --git a/docs/c-runtime-library/reference/fpclass-fpclassf.md b/docs/c-runtime-library/reference/fpclass-fpclassf.md
index a1f7c2580a..6ab73037cf 100644
--- a/docs/c-runtime-library/reference/fpclass-fpclassf.md
+++ b/docs/c-runtime-library/reference/fpclass-fpclassf.md
@@ -1,9 +1,10 @@
---
title: "_fpclass, _fpclassf"
ms.date: "04/05/2018"
-apiname: ["_fpclass", "_fpclassf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fpclass", "_fpclassf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fpclass", "_fpclass", "_fpclassf", "math/_fpclass", "float/_fpclass", "math/_fpclassf"]
helpviewer_keywords: ["fpclass function", "floating-point numbers, IEEE representation", "_fpclass function", "_fpclassf function"]
ms.assetid: 2774872d-3543-446f-bc72-db85f8b95a6b
@@ -48,7 +49,7 @@ The **_fpclass** and **_fpclassf** functions return an integer value that indica
## Remarks
-The **_fpclass** and **_fpclassf** functions are Microsoft specific. They are similar to [fpclassify](fpclassify.md), but return more detailed information about the argument. The **_fpclassf** function is only available when compiled for the x64 platform.
+The **_fpclass** and **_fpclassf** functions are Microsoft-specific. They are similar to [fpclassify](fpclassify.md), but return more detailed information about the argument. The **_fpclassf** function is only available when compiled for the x64 platform.
## Requirements
diff --git a/docs/c-runtime-library/reference/fpclassify.md b/docs/c-runtime-library/reference/fpclassify.md
index 660cee8909..60c45be748 100644
--- a/docs/c-runtime-library/reference/fpclassify.md
+++ b/docs/c-runtime-library/reference/fpclassify.md
@@ -1,9 +1,9 @@
---
title: "fpclassify"
ms.date: "04/05/2018"
-apiname: ["fpclassify"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "HeaderDef"
+api_name: ["fpclassify"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["HeaderDef"]
f1_keywords: ["fpclassify", "math/fpclassify"]
helpviewer_keywords: ["fpclassify macro", "fpclassify function"]
ms.assetid: bf549499-7ff9-4a58-8692-f2d1cb6bab81
diff --git a/docs/c-runtime-library/reference/fpieee-flt.md b/docs/c-runtime-library/reference/fpieee-flt.md
index 149f10668d..410ffc79da 100644
--- a/docs/c-runtime-library/reference/fpieee-flt.md
+++ b/docs/c-runtime-library/reference/fpieee-flt.md
@@ -1,9 +1,10 @@
---
title: "_fpieee_flt"
ms.date: "04/05/2018"
-apiname: ["_fpieee_flt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fpieee_flt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fpieee_flt", "_fpieee_flt"]
helpviewer_keywords: ["_fpieee_flt function", "exception handling, floating-point", "floating-point exception handling", "fpieee_flt function"]
ms.assetid: 2bc4801e-0eed-4e73-b518-215da8cc9740
diff --git a/docs/c-runtime-library/reference/fpreset.md b/docs/c-runtime-library/reference/fpreset.md
index 0266c75cce..5dafcc314a 100644
--- a/docs/c-runtime-library/reference/fpreset.md
+++ b/docs/c-runtime-library/reference/fpreset.md
@@ -1,9 +1,10 @@
---
title: "_fpreset"
ms.date: "04/05/2018"
-apiname: ["_fpreset"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fpreset"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fpreset", "fpreset"]
helpviewer_keywords: ["fpreset function", "floating-point numbers, resetting math package", "_fpreset function"]
ms.assetid: f31c6a04-b464-4f07-a7c4-42133360e328
diff --git a/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md b/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md
index d88c4d3ea0..71ce360658 100644
--- a/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md
+++ b/docs/c-runtime-library/reference/fprintf-fprintf-l-fwprintf-fwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "fprintf, _fprintf_l, fwprintf, _fwprintf_l"
ms.date: "11/04/2016"
-apiname: ["fwprintf", "fprintf", "_fprintf_l", "_fwprintf_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["fwprintf", "fprintf", "_fprintf_l", "_fwprintf_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fprintf", "fwprintf", "_ftprintf"]
helpviewer_keywords: ["_fwprintf_l function", "fprintf function", "fprintf_l function", "_fprintf_l function", "_ftprintf function", "fwprintf function", "ftprintf_l function", "ftprintf function", "_ftprintf_l function", "print formatted data to streams", "fwprintf_l function"]
ms.assetid: 34a87e1c-6e4d-4d48-a611-58314dd4dc4b
diff --git a/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md b/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md
index 33cbd70954..a75d223896 100644
--- a/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/fprintf-p-fprintf-p-l-fwprintf-p-fwprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_fprintf_p, _fprintf_p_l, _fwprintf_p, _fwprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_fwprintf_p", "_fprintf_p_l", "_fwprintf_p_l", "_fprintf_p"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_fwprintf_p", "_fprintf_p_l", "_fwprintf_p_l", "_fprintf_p"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fprintf_p", "_ftprintf_p", "fwprintf_p", "_fwprintf_p", "fprintf_p", "ftprintf_p"]
helpviewer_keywords: ["fprintf_p_l function", "fprintf_p function", "_fprintf_p_l function", "_fprintf_p function", "_ftprintf_p_l function", "streams, printing formatted data to", "_fwprintf_p function", "fwprintf_p function", "_ftprintf_p function", "_fwprintf_p_l function", "ftprintf_p function", "printing [C++], formatted data to streams", "ftprintf_p_l function", "fwprintf_p_l function"]
ms.assetid: 46b082e1-45ba-4383-9ee4-97015aa50bc6
diff --git a/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md b/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md
index 17c74ebe9f..12c0b7cfe1 100644
--- a/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/fprintf-s-fprintf-s-l-fwprintf-s-fwprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "fprintf_s, _fprintf_s_l, fwprintf_s, _fwprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_fprintf_s_l", "fwprintf_s", "fprintf_s", "_fwprintf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_fprintf_s_l", "fwprintf_s", "fprintf_s", "_fwprintf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftprintf_s", "fprintf_s", "fwprintf_s"]
helpviewer_keywords: ["ftprintf_s_l function", "ftprintf_s function", "_fprintf_s_l function", "_ftprintf_s function", "_ftprintf_s_l function", "fwprintf_s_l function", "fwprintf_s function", "fprintf_s_l function", "fprintf_s function", "_fwprintf_s_l function", "print formatted data to streams"]
ms.assetid: 16067c3c-69ce-472a-8272-9aadf1f5beed
diff --git a/docs/c-runtime-library/reference/fputc-fputwc.md b/docs/c-runtime-library/reference/fputc-fputwc.md
index 8632776e50..7de9a4caa6 100644
--- a/docs/c-runtime-library/reference/fputc-fputwc.md
+++ b/docs/c-runtime-library/reference/fputc-fputwc.md
@@ -1,9 +1,10 @@
---
title: "fputc, fputwc"
ms.date: "11/04/2016"
-apiname: ["fputc", "fputwc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fputc", "fputwc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fputc", "fputwc", "_fputtc"]
helpviewer_keywords: ["streams, writing characters to", "fputtc function", "_fputtc function", "fputwc function", "fputc function"]
ms.assetid: 5a0a593d-43f4-4fa2-a401-ec4e23de4d2f
diff --git a/docs/c-runtime-library/reference/fputc-nolock-fputwc-nolock.md b/docs/c-runtime-library/reference/fputc-nolock-fputwc-nolock.md
index cdc5edff15..4eb19867b3 100644
--- a/docs/c-runtime-library/reference/fputc-nolock-fputwc-nolock.md
+++ b/docs/c-runtime-library/reference/fputc-nolock-fputwc-nolock.md
@@ -1,9 +1,10 @@
---
title: "_fputc_nolock, _fputwc_nolock"
ms.date: "11/04/2016"
-apiname: ["_fputwc_nolock", "_fputc_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fputwc_nolock", "_fputc_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fputc_nolock", "fputwc_nolock", "fputc_nolock", "fputtc_nolock", "_fputwc_nolock", "_fputtc_nolock"]
helpviewer_keywords: ["streams, writing characters to", "fputwc_nolock function", "fputtc_nolock function", "_fputc_nolock function", "fputc_nolock function", "_fputtc_nolock function", "_fputwc_nolock function"]
ms.assetid: c63eb3ad-58fa-46d0-9249-9c25f815eab9
diff --git a/docs/c-runtime-library/reference/fputchar-fputwchar.md b/docs/c-runtime-library/reference/fputchar-fputwchar.md
index 4afea02137..1260a92bed 100644
--- a/docs/c-runtime-library/reference/fputchar-fputwchar.md
+++ b/docs/c-runtime-library/reference/fputchar-fputwchar.md
@@ -1,9 +1,10 @@
---
title: "_fputchar, _fputwchar"
ms.date: "11/04/2016"
-apiname: ["_fputchar", "_fputwchar"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fputchar", "_fputwchar"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fputtchar", "_fputwchar", "fputwchar", "_fputtchar", "fputchar", "_fputchar"]
helpviewer_keywords: ["fputchar function", "standard output, writing to", "_fputtchar function", "fputwchar function", "_fputwchar function", "fputtchar function", "_fputchar function"]
ms.assetid: b92ff600-a924-4f2b-b0e7-3097ee31bdff
diff --git a/docs/c-runtime-library/reference/fputchar.md b/docs/c-runtime-library/reference/fputchar.md
index fb5e52f2ff..374e0e4152 100644
--- a/docs/c-runtime-library/reference/fputchar.md
+++ b/docs/c-runtime-library/reference/fputchar.md
@@ -1,13 +1,16 @@
---
title: "fputchar"
-ms.date: "11/04/2016"
-apiname: ["fputchar"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["fputchar"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fputchar"]
helpviewer_keywords: ["fputchar function"]
ms.assetid: d6cf3492-ace9-47a7-9f7d-3c25aa8ad526
---
# fputchar
-This POSIX function is deprecated. Use the ISO C++ conformant [_fputchar](fputchar-fputwchar.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `fputchar` is a deprecated alias for the [_fputchar](fputchar-fputwchar.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_fputchar](fputchar-fputwchar.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/fputs-fputws.md b/docs/c-runtime-library/reference/fputs-fputws.md
index e9e8f60351..f8c9c2a8cb 100644
--- a/docs/c-runtime-library/reference/fputs-fputws.md
+++ b/docs/c-runtime-library/reference/fputs-fputws.md
@@ -1,9 +1,10 @@
---
title: "fputs, fputws"
ms.date: "11/04/2016"
-apiname: ["fputs", "fputws"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fputs", "fputws"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fputs", "fputws", "_fputts"]
helpviewer_keywords: ["streams, writing strings to", "fputws function", "_fputts function", "fputs function", "fputts function"]
ms.assetid: d48c82b8-aa17-4830-8c7d-30442ddbb326
diff --git a/docs/c-runtime-library/reference/fread-nolock-s2.md b/docs/c-runtime-library/reference/fread-nolock-s2.md
index 24a01a202e..bced4b7b97 100644
--- a/docs/c-runtime-library/reference/fread-nolock-s2.md
+++ b/docs/c-runtime-library/reference/fread-nolock-s2.md
@@ -1,9 +1,10 @@
---
title: "_fread_nolock_s2"
ms.date: "11/04/2016"
-apiname: ["_fread_nolock_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fread_nolock_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fread_nolock_s", "stdio/_fread_nolock_s"]
ms.assetid: 5badb9ab-11df-4e17-8162-30bda2a4572e
---
diff --git a/docs/c-runtime-library/reference/fread-nolock.md b/docs/c-runtime-library/reference/fread-nolock.md
index 73cb871871..03a5399232 100644
--- a/docs/c-runtime-library/reference/fread-nolock.md
+++ b/docs/c-runtime-library/reference/fread-nolock.md
@@ -1,9 +1,10 @@
---
title: "_fread_nolock"
ms.date: "11/04/2016"
-apiname: ["_fread_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fread_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fread_nolock", "fread_nolock"]
helpviewer_keywords: ["reading data [C++], from input streams", "data [C++], reading from input stream", "fread_nolock function", "_fread_nolock function", "streams [C++], reading data from"]
ms.assetid: 60e4958b-1097-46f5-a77b-94af5e7dba40
diff --git a/docs/c-runtime-library/reference/fread-s.md b/docs/c-runtime-library/reference/fread-s.md
index 29bbf99023..79666e1b89 100644
--- a/docs/c-runtime-library/reference/fread-s.md
+++ b/docs/c-runtime-library/reference/fread-s.md
@@ -1,9 +1,10 @@
---
title: "fread_s"
ms.date: "11/04/2016"
-apiname: ["fread_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fread_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fread_s", "stdio/fread_s"]
ms.assetid: ce735de0-f005-435d-a8f2-6f4b80ac775e
---
diff --git a/docs/c-runtime-library/reference/fread.md b/docs/c-runtime-library/reference/fread.md
index 1c92b0907f..6e847bef86 100644
--- a/docs/c-runtime-library/reference/fread.md
+++ b/docs/c-runtime-library/reference/fread.md
@@ -1,9 +1,10 @@
---
title: "fread"
ms.date: "11/28/2018"
-apiname: ["fread"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fread"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fread"]
helpviewer_keywords: ["reading data [C++], from input streams", "fread function", "data [C++], reading from input stream", "streams [C++], reading data from"]
ms.assetid: 9a3c1538-93dd-455e-ae48-77c1e23c53f0
diff --git a/docs/c-runtime-library/reference/free-dbg.md b/docs/c-runtime-library/reference/free-dbg.md
index ea26b30c83..5ccef5d7b7 100644
--- a/docs/c-runtime-library/reference/free-dbg.md
+++ b/docs/c-runtime-library/reference/free-dbg.md
@@ -1,9 +1,10 @@
---
title: "_free_dbg"
ms.date: "11/04/2016"
-apiname: ["_free_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_free_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_free_dbg", "free_dbg"]
helpviewer_keywords: ["memory blocks, deallocating", "freeing memory", "_free_dbg function", "free_dbg function"]
ms.assetid: fc5e8299-616d-48a0-b979-e037117278c6
diff --git a/docs/c-runtime-library/reference/free-locale.md b/docs/c-runtime-library/reference/free-locale.md
index df6a9b3285..334367b842 100644
--- a/docs/c-runtime-library/reference/free-locale.md
+++ b/docs/c-runtime-library/reference/free-locale.md
@@ -1,9 +1,10 @@
---
title: "_free_locale"
ms.date: "11/04/2016"
-apiname: ["_free_locale"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_free_locale"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__free_locale", "free_locale", "_free_locale"]
helpviewer_keywords: ["__free_locale function", "free_locale function", "locales, freeing", "_free_locale function"]
ms.assetid: 1f08d348-ab32-4028-a145-6cbd51b49af9
diff --git a/docs/c-runtime-library/reference/free.md b/docs/c-runtime-library/reference/free.md
index 0231d25696..35e5ed4fee 100644
--- a/docs/c-runtime-library/reference/free.md
+++ b/docs/c-runtime-library/reference/free.md
@@ -1,9 +1,10 @@
---
title: "free"
ms.date: "11/04/2016"
-apiname: ["free"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["free"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["free"]
helpviewer_keywords: ["memory blocks, deallocating", "free function"]
ms.assetid: 74ded9cf-1863-432e-9306-327a42080bb8
diff --git a/docs/c-runtime-library/reference/freea.md b/docs/c-runtime-library/reference/freea.md
index c8e3c43236..1bda717794 100644
--- a/docs/c-runtime-library/reference/freea.md
+++ b/docs/c-runtime-library/reference/freea.md
@@ -1,9 +1,10 @@
---
title: "_freea"
ms.date: "11/04/2016"
-apiname: ["_freea"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_freea"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["freea", "_freea"]
helpviewer_keywords: ["_freea function", "freea function", "memory deallocation"]
ms.assetid: dcd30584-dd9d-443b-8c4c-13237a1cecac
diff --git a/docs/c-runtime-library/reference/freopen-s-wfreopen-s.md b/docs/c-runtime-library/reference/freopen-s-wfreopen-s.md
index 7a48e90cbe..778d6dcca4 100644
--- a/docs/c-runtime-library/reference/freopen-s-wfreopen-s.md
+++ b/docs/c-runtime-library/reference/freopen-s-wfreopen-s.md
@@ -1,9 +1,10 @@
---
title: "freopen_s, _wfreopen_s"
ms.date: "11/04/2016"
-apiname: ["_wfreopen_s", "freopen_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wfreopen_s", "freopen_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["freopen_s", "_tfreopen_s", "_wfreopen_s"]
helpviewer_keywords: ["_tfreopen_s function", "_wfreopen_s function", "file pointers [C++], reassigning", "tfreopen_s function", "wfreopen_s function", "freopen_s function"]
ms.assetid: ad25a4da-6ad4-476b-a86d-660b221ca84d
diff --git a/docs/c-runtime-library/reference/freopen-wfreopen.md b/docs/c-runtime-library/reference/freopen-wfreopen.md
index 975f311a26..67ed7ea53b 100644
--- a/docs/c-runtime-library/reference/freopen-wfreopen.md
+++ b/docs/c-runtime-library/reference/freopen-wfreopen.md
@@ -1,9 +1,10 @@
---
title: "freopen, _wfreopen"
ms.date: "11/04/2016"
-apiname: ["freopen", "_wfreopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["freopen", "_wfreopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wfreopen", "_tfreopen", "freopen"]
helpviewer_keywords: ["_wfreopen function", "file pointers [C++], reassigning", "_tfreopen function", "freopen function", "tfreopen function", "wfreopen function"]
ms.assetid: de4b73f8-1043-4d62-98ee-30d2022da885
diff --git a/docs/c-runtime-library/reference/frexp.md b/docs/c-runtime-library/reference/frexp.md
index 1481e47086..f17ce020a4 100644
--- a/docs/c-runtime-library/reference/frexp.md
+++ b/docs/c-runtime-library/reference/frexp.md
@@ -1,9 +1,10 @@
---
title: "frexp, frexpf, frexpl"
ms.date: "04/05/2018"
-apiname: ["frexp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["frexp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["frexp", "_frexpl"]
helpviewer_keywords: ["_frexpl function", "mantissas, floating-point variables", "frexpl function", "exponent, floating-point numbers", "frexp function", "floating-point functions, mantissa and exponent"]
ms.assetid: 9b020f2e-3967-45ec-a6a8-d467a071aa55
diff --git a/docs/c-runtime-library/reference/fscanf-fscanf-l-fwscanf-fwscanf-l.md b/docs/c-runtime-library/reference/fscanf-fscanf-l-fwscanf-fwscanf-l.md
index b05a28b50c..00c56b14a5 100644
--- a/docs/c-runtime-library/reference/fscanf-fscanf-l-fwscanf-fwscanf-l.md
+++ b/docs/c-runtime-library/reference/fscanf-fscanf-l-fwscanf-fwscanf-l.md
@@ -1,9 +1,10 @@
---
title: "fscanf, _fscanf_l, fwscanf, _fwscanf_l"
ms.date: "11/04/2016"
-apiname: ["fscanf", "_fwscanf_l", "_fscanf_l", "fwscanf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["fscanf", "_fwscanf_l", "_fscanf_l", "fwscanf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fscanf", "fwscanf", "_ftscanf_l", "_fwscanf_l", "_ftscanf", "_fscanf_l"]
helpviewer_keywords: ["fscanf function", "fwscanf function", "formatted data [C++], reading from streams", "ftscanf_l function", "_ftscanf_l function", "_fwscanf_l function", "data [CRT], reading from streams", "_fscanf_l function", "ftscanf function", "fscanf_l function", "streams [C++], reading formatted data from", "_ftscanf function", "fwscanf_l function"]
ms.assetid: 9004e978-6c5f-4bb2-98fd-51e5948933f2
diff --git a/docs/c-runtime-library/reference/fscanf-s-fscanf-s-l-fwscanf-s-fwscanf-s-l.md b/docs/c-runtime-library/reference/fscanf-s-fscanf-s-l-fwscanf-s-fwscanf-s-l.md
index 65ead48234..944ce202a6 100644
--- a/docs/c-runtime-library/reference/fscanf-s-fscanf-s-l-fwscanf-s-fwscanf-s-l.md
+++ b/docs/c-runtime-library/reference/fscanf-s-fscanf-s-l-fwscanf-s-fwscanf-s-l.md
@@ -1,9 +1,10 @@
---
title: "fscanf_s, _fscanf_s_l, fwscanf_s, _fwscanf_s_l"
ms.date: "11/04/2016"
-apiname: ["fwscanf_s", "_fscanf_s_l", "_fwscanf_s_l", "fscanf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["fwscanf_s", "_fscanf_s_l", "_fwscanf_s_l", "fscanf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fwscanf_s_l", "_fscanf_s_l", "fscanf_s", "_ftscanf_s_l", "_ftscanf_s", "fwscanf_s"]
helpviewer_keywords: ["formatted data [C++], reading from streams", "_ftscanf_s_l function", "_fscanf_s_l function", "ftscanf_s function", "fwscanf_s function", "_ftscanf_s function", "data [CRT], reading from streams", "_fwscanf_s_l function", "fscanf_s function", "fwscanf_s_l function", "ftscanf_s_l function", "streams [C++], reading formatted data from", "fscanf_s_l function"]
ms.assetid: b6e88194-714b-4322-be82-1cc0b343fe01
diff --git a/docs/c-runtime-library/reference/fseek-fseeki64.md b/docs/c-runtime-library/reference/fseek-fseeki64.md
index ef931c1f05..0389bcfd6c 100644
--- a/docs/c-runtime-library/reference/fseek-fseeki64.md
+++ b/docs/c-runtime-library/reference/fseek-fseeki64.md
@@ -1,9 +1,10 @@
---
title: "fseek, _fseeki64"
ms.date: "11/04/2016"
-apiname: ["_fseeki64", "fseek"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fseeki64", "fseek"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fseek", "_fseeki64"]
helpviewer_keywords: ["_fseeki64 function", "fseeki64 function", "fseek function", "file pointers [C++], moving", "file pointers [C++]", "seek file pointers"]
ms.assetid: f6bb1f8b-891c-426e-9e14-0e7e5c62df70
diff --git a/docs/c-runtime-library/reference/fseek-nolock-fseeki64-nolock.md b/docs/c-runtime-library/reference/fseek-nolock-fseeki64-nolock.md
index 96ca1d83e9..0e4530a072 100644
--- a/docs/c-runtime-library/reference/fseek-nolock-fseeki64-nolock.md
+++ b/docs/c-runtime-library/reference/fseek-nolock-fseeki64-nolock.md
@@ -1,9 +1,10 @@
---
title: "_fseek_nolock, _fseeki64_nolock"
ms.date: "11/04/2016"
-apiname: ["_fseek_nolock", "_fseeki64_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fseek_nolock", "_fseeki64_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fseek_nolock", "_fseeki64_nolock", "fseek_nolock", "fseeki64_nolock"]
helpviewer_keywords: ["_fseek_nolock function", "fseeki64_nolock function", "file pointers [C++], moving", "fseek_nolock function", "_fseeki64_nolock function", "seek file pointers"]
ms.assetid: 2dd4022e-b715-462b-b935-837561605a02
diff --git a/docs/c-runtime-library/reference/fsetpos.md b/docs/c-runtime-library/reference/fsetpos.md
index b9b1467f26..bc9f1be0b4 100644
--- a/docs/c-runtime-library/reference/fsetpos.md
+++ b/docs/c-runtime-library/reference/fsetpos.md
@@ -1,9 +1,10 @@
---
title: "fsetpos"
ms.date: "11/04/2016"
-apiname: ["fsetpos"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fsetpos"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fsetpos"]
helpviewer_keywords: ["streams, setting position indicators", "fsetpos function"]
ms.assetid: 6d19ff48-1a2b-47b3-9f23-ed0a47b5a46e
diff --git a/docs/c-runtime-library/reference/fsopen-wfsopen.md b/docs/c-runtime-library/reference/fsopen-wfsopen.md
index 1beb889dcb..07cca7db3f 100644
--- a/docs/c-runtime-library/reference/fsopen-wfsopen.md
+++ b/docs/c-runtime-library/reference/fsopen-wfsopen.md
@@ -1,9 +1,10 @@
---
title: "_fsopen, _wfsopen"
ms.date: "11/04/2016"
-apiname: ["_wfsopen", "_fsopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wfsopen", "_fsopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wfsopen", "fsopen", "tfsopen", "_tfsopen", "_wfsopen", "_fsopen"]
helpviewer_keywords: ["opening files, streams", "fsopen function", "tfsopen function", "wfsopen function", "_fsopen function", "files [C++], opening", "_tfsopen function", "_wfsopen function", "file sharing [C++]"]
ms.assetid: 5e4502ab-48a9-4bee-a263-ebac8d638dec
diff --git a/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md b/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md
index d516da8c6c..4cfde4472f 100644
--- a/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md
+++ b/docs/c-runtime-library/reference/fstat-fstat32-fstat64-fstati64-fstat32i64-fstat64i32.md
@@ -1,9 +1,10 @@
---
title: "_fstat, _fstat32, _fstat64, _fstati64, _fstat32i64, _fstat64i32"
ms.date: "11/04/2016"
-apiname: ["_fstat32", "_fstat64", "_fstati64", "_fstat", "_fstat64i32", "_fstat32i64"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fstat32", "_fstat64", "_fstati64", "_fstat", "_fstat64i32", "_fstat32i64"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fstat32i64", "fstat", "fstat64i32", "_fstat64", "_fstati64", "fstat64", "_fstat32", "fstat32i64", "fstati64", "_fstat", "fstat32", "_fstat64i32"]
helpviewer_keywords: ["_fstat64 function", "fstati64 function", "_fstat64i32 function", "_fstat32i64 function", "_fstat32 function", "file information", "fstat64i32 function", "fstat32 function", "fstat function", "fstat64 function", "_fstat function", "_fstati64 function", "fstat32i64 function"]
ms.assetid: 088f5e7a-9636-4cf7-ab8e-e28d2aa4280a
diff --git a/docs/c-runtime-library/reference/ftell-ftelli64.md b/docs/c-runtime-library/reference/ftell-ftelli64.md
index 22b333d276..47c5e20499 100644
--- a/docs/c-runtime-library/reference/ftell-ftelli64.md
+++ b/docs/c-runtime-library/reference/ftell-ftelli64.md
@@ -1,9 +1,10 @@
---
title: "ftell, _ftelli64"
ms.date: "11/04/2016"
-apiname: ["_ftelli64", "ftell"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ftelli64", "ftell"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftelli64", "ftell"]
helpviewer_keywords: ["ftell function", "ftelli64 function", "_ftelli64 function", "file pointers [C++], getting current position", "file pointers [C++]"]
ms.assetid: 40149cd8-65f2-42ff-b70c-68e3e918cdd7
diff --git a/docs/c-runtime-library/reference/ftell-nolock-ftelli64-nolock.md b/docs/c-runtime-library/reference/ftell-nolock-ftelli64-nolock.md
index 53a9e48737..24e48f3789 100644
--- a/docs/c-runtime-library/reference/ftell-nolock-ftelli64-nolock.md
+++ b/docs/c-runtime-library/reference/ftell-nolock-ftelli64-nolock.md
@@ -1,9 +1,10 @@
---
title: "_ftell_nolock, _ftelli64_nolock"
ms.date: "11/04/2016"
-apiname: ["_ftelli64_nolock", "_ftell_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ftelli64_nolock", "_ftell_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftelli64_nolock", "ftelli64_nolock", "ftell_nolock", "_ftell_nolock"]
helpviewer_keywords: ["ftelli64_nolock function", "_ftelli64_nolock function", "_ftell_nolock function", "ftell_nolock function", "file pointers [C++], getting current position"]
ms.assetid: 84e68b0a-32f8-4c4a-90ad-3f2387685ede
diff --git a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md
index 772a78e7c8..f755ce20cd 100644
--- a/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md
+++ b/docs/c-runtime-library/reference/ftime-ftime32-ftime64.md
@@ -1,9 +1,10 @@
---
title: "_ftime, _ftime32, _ftime64"
ms.date: "11/04/2016"
-apiname: ["_ftime64", "_ftime", "_ftime32"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ftime64", "_ftime", "_ftime32"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftime32", "_ftime", "_ftime64", "ftime64", "ftime", "ftime32"]
helpviewer_keywords: ["ftime64 function", "_ftime64 function", "current time", "_ftime function", "ftime function", "_ftime32 function", "ftime32 function", "time, getting current"]
ms.assetid: 96bc464c-3bcd-41d5-a212-8bbd836b814a
diff --git a/docs/c-runtime-library/reference/ftime-s-ftime32-s-ftime64-s.md b/docs/c-runtime-library/reference/ftime-s-ftime32-s-ftime64-s.md
index a73abb8dae..65e08c6972 100644
--- a/docs/c-runtime-library/reference/ftime-s-ftime32-s-ftime64-s.md
+++ b/docs/c-runtime-library/reference/ftime-s-ftime32-s-ftime64-s.md
@@ -1,9 +1,10 @@
---
title: "_ftime_s, _ftime32_s, _ftime64_s"
ms.date: "11/04/2016"
-apiname: ["_ftime_s", "_ftime64_s", "_ftime32_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ftime_s", "_ftime64_s", "_ftime32_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftime_s", "_ftime64_s", "ftime_s", "_ftime32_s", "ftime32_s", "ftime64_s"]
helpviewer_keywords: ["ftime32_s function", "ftime_s function", "_ftime64_s function", "current time", "ftime64_s function", "time, getting current", "_ftime_s function", "_ftime32_s function"]
ms.assetid: d03080d9-a520-45be-aa65-504bdb197e8b
diff --git a/docs/c-runtime-library/reference/fullpath-dbg-wfullpath-dbg.md b/docs/c-runtime-library/reference/fullpath-dbg-wfullpath-dbg.md
index 88156b2d43..7ea5325485 100644
--- a/docs/c-runtime-library/reference/fullpath-dbg-wfullpath-dbg.md
+++ b/docs/c-runtime-library/reference/fullpath-dbg-wfullpath-dbg.md
@@ -1,9 +1,10 @@
---
title: "_fullpath_dbg, _wfullpath_dbg"
ms.date: "11/04/2016"
-apiname: ["_wfullpath_dbg", "_fullpath_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_wfullpath_dbg", "_fullpath_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wfullpath_dbg", "_wfullpath_dbg", "_fullpath_dbg", "fullpath_dbg"]
helpviewer_keywords: ["_fullpath_dbg function", "relative file paths", "absolute paths", "fullpath_dbg function", "_wfullpath_dbg function", "wfullpath_dbg function"]
ms.assetid: 81f72f85-07da-4f5c-866a-598e0fb03f6b
diff --git a/docs/c-runtime-library/reference/fullpath-wfullpath.md b/docs/c-runtime-library/reference/fullpath-wfullpath.md
index 7f44d683b8..37166db831 100644
--- a/docs/c-runtime-library/reference/fullpath-wfullpath.md
+++ b/docs/c-runtime-library/reference/fullpath-wfullpath.md
@@ -1,9 +1,10 @@
---
title: "_fullpath, _wfullpath"
ms.date: "11/04/2016"
-apiname: ["_fullpath", "_wfullpath"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fullpath", "_wfullpath"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wfullpath", "fullpath", "_wfullpath", "_fullpath"]
helpviewer_keywords: ["_wfullpath function", "relative file paths", "absolute paths", "wfullpath function", "_fullpath function", "fullpath function"]
ms.assetid: 4161ec17-0d22-45dd-b07d-0222553afae9
diff --git a/docs/c-runtime-library/reference/futime-futime32-futime64.md b/docs/c-runtime-library/reference/futime-futime32-futime64.md
index 9047dd8f73..e71ee46ce8 100644
--- a/docs/c-runtime-library/reference/futime-futime32-futime64.md
+++ b/docs/c-runtime-library/reference/futime-futime32-futime64.md
@@ -1,9 +1,10 @@
---
title: "_futime, _futime32, _futime64"
ms.date: "11/04/2016"
-apiname: ["_futime64", "_futime32", "_futime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_futime64", "_futime32", "_futime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["futime", "_futime", "futime64", "_futime64"]
helpviewer_keywords: ["_futime function", "futime32 function", "futime64 function", "file modification time [C++]", "_futime64 function", "futime function", "_futime32 function"]
ms.assetid: b942ce8f-5cc7-4fa8-ab47-de5965eded53
diff --git a/docs/c-runtime-library/reference/fwide.md b/docs/c-runtime-library/reference/fwide.md
index cb141cb614..88ef548192 100644
--- a/docs/c-runtime-library/reference/fwide.md
+++ b/docs/c-runtime-library/reference/fwide.md
@@ -1,9 +1,10 @@
---
title: "fwide"
ms.date: "11/04/2016"
-apiname: ["fwide"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["fwide"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fwide"]
helpviewer_keywords: ["fwide function"]
ms.assetid: a4641f5b-d74f-4946-95d5-53a64610d28d
diff --git a/docs/c-runtime-library/reference/fwrite-nolock.md b/docs/c-runtime-library/reference/fwrite-nolock.md
index e1be95fd28..ad3ebe83d3 100644
--- a/docs/c-runtime-library/reference/fwrite-nolock.md
+++ b/docs/c-runtime-library/reference/fwrite-nolock.md
@@ -1,9 +1,10 @@
---
title: "_fwrite_nolock"
ms.date: "11/04/2016"
-apiname: ["_fwrite_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_fwrite_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fwrite_nolock", "fwrite_nolock"]
helpviewer_keywords: ["fwrite_nolock function", "streams, writing data to", "_fwrite_nolock function"]
ms.assetid: 2b4ec6ce-742e-4615-8407-44a0a18ec1d7
diff --git a/docs/c-runtime-library/reference/fwrite.md b/docs/c-runtime-library/reference/fwrite.md
index 5750e4f48a..12817005f4 100644
--- a/docs/c-runtime-library/reference/fwrite.md
+++ b/docs/c-runtime-library/reference/fwrite.md
@@ -1,9 +1,10 @@
---
title: "fwrite"
ms.date: "11/04/2016"
-apiname: ["fwrite"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["fwrite"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fwrite"]
helpviewer_keywords: ["streams, writing data to", "fwrite function"]
ms.assetid: 7afacf3a-72d7-4a50-ba2e-bea1ab9f4124
diff --git a/docs/c-runtime-library/reference/gcvt-s.md b/docs/c-runtime-library/reference/gcvt-s.md
index 7aaf6a93da..eebbd55a0b 100644
--- a/docs/c-runtime-library/reference/gcvt-s.md
+++ b/docs/c-runtime-library/reference/gcvt-s.md
@@ -1,9 +1,10 @@
---
title: "_gcvt_s"
ms.date: "04/05/2018"
-apiname: ["_gcvt_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_gcvt_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_gcvt_s", "gcvt_s"]
helpviewer_keywords: ["_gcvt_s function", "_CVTBUFSIZE", "floating-point functions, converting number to string", "gcvt_s function", "numbers, converting to strings", "conversions, floating point to strings", "strings [C++], converting from floating point", "CVTBUFSIZE"]
ms.assetid: 0a8d8a26-5940-4ae3-835e-0aa6ec1b0744
@@ -65,7 +66,7 @@ The **_gcvt_s** function converts a floating-point *value* to a character string
In C++, using this function is simplified by a template overload; the overload can infer buffer length automatically, eliminating the need to specify a size argument. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug version of this function first fills the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug version of this function first fills the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
## Requirements
diff --git a/docs/c-runtime-library/reference/gcvt.md b/docs/c-runtime-library/reference/gcvt.md
index 60e99ba447..c461cfe6b0 100644
--- a/docs/c-runtime-library/reference/gcvt.md
+++ b/docs/c-runtime-library/reference/gcvt.md
@@ -1,9 +1,10 @@
---
title: "_gcvt"
ms.date: "04/05/2018"
-apiname: ["_gcvt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_gcvt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_gcvt"]
helpviewer_keywords: ["_gcvt function", "_CVTBUFSIZE", "gcvt function", "floating-point functions, converting number to string", "numbers, converting to strings", "conversions, floating point to strings", "strings [C++], converting from floating point", "CVTBUFSIZE"]
ms.assetid: 5761411e-c06b-409a-912f-810fe7f4bcb5
diff --git a/docs/c-runtime-library/reference/get-current-locale.md b/docs/c-runtime-library/reference/get-current-locale.md
index dfcdf818cf..e4302798db 100644
--- a/docs/c-runtime-library/reference/get-current-locale.md
+++ b/docs/c-runtime-library/reference/get-current-locale.md
@@ -1,9 +1,10 @@
---
title: "_get_current_locale"
ms.date: "11/04/2016"
-apiname: ["_get_current_locale"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_current_locale"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_current_locale", "__get_current_locale", "_get_current_locale"]
helpviewer_keywords: ["get_current_locale function", "_get_current_locale function", "locales, getting information on", "__get_current_locale function"]
ms.assetid: 572217f2-a37a-4105-a293-a250b4fabd99
diff --git a/docs/c-runtime-library/reference/get-daylight.md b/docs/c-runtime-library/reference/get-daylight.md
index e69b565a45..13aaffc361 100644
--- a/docs/c-runtime-library/reference/get-daylight.md
+++ b/docs/c-runtime-library/reference/get-daylight.md
@@ -1,9 +1,10 @@
---
title: "_get_daylight"
ms.date: "11/04/2016"
-apiname: ["__daylight", "_get_daylight"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["__daylight", "_get_daylight"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_daylight", "_get_daylight"]
helpviewer_keywords: ["get_daylight function", "daylight saving time offset", "_get_daylight function"]
ms.assetid: f85a6ba3-e187-4ca7-aed7-ffc694c8ac4c
diff --git a/docs/c-runtime-library/reference/get-doserrno.md b/docs/c-runtime-library/reference/get-doserrno.md
index 443c98f8af..8fdcf972a0 100644
--- a/docs/c-runtime-library/reference/get-doserrno.md
+++ b/docs/c-runtime-library/reference/get-doserrno.md
@@ -1,9 +1,10 @@
---
title: "_get_doserrno"
ms.date: "11/04/2016"
-apiname: ["_get_doserrno"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_doserrno"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_get_doserrno", "get_doserrno"]
helpviewer_keywords: ["get_doserrno function", "_get_doserrno function"]
ms.assetid: 7fec7be3-6e39-4181-846b-8ef24489361c
diff --git a/docs/c-runtime-library/reference/get-dstbias.md b/docs/c-runtime-library/reference/get-dstbias.md
index e7c062ae26..0da2530628 100644
--- a/docs/c-runtime-library/reference/get-dstbias.md
+++ b/docs/c-runtime-library/reference/get-dstbias.md
@@ -1,9 +1,10 @@
---
title: "_get_dstbias"
ms.date: "11/04/2016"
-apiname: ["_get_dstbias", "__dstbias"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_dstbias", "__dstbias"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__dstbias", "_get_dstbias", "get_dstbias"]
helpviewer_keywords: ["__dstbias", "daylight saving time offset", "get_dstbias function", "_get_dstbias function"]
ms.assetid: e751358c-1ecc-411b-ae2c-81b2ec54ea45
diff --git a/docs/c-runtime-library/reference/get-errno.md b/docs/c-runtime-library/reference/get-errno.md
index fcdff444d7..827fcfaba0 100644
--- a/docs/c-runtime-library/reference/get-errno.md
+++ b/docs/c-runtime-library/reference/get-errno.md
@@ -1,9 +1,10 @@
---
title: "_get_errno"
ms.date: "11/04/2016"
-apiname: ["_get_errno"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_errno"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_get_errno"]
helpviewer_keywords: ["get_errno function", "errno global variable", "_get_errno function"]
ms.assetid: b3fd5ebc-f41b-4314-a2f4-2f2d79d6e740
diff --git a/docs/c-runtime-library/reference/get-fma3-enable-set-fma3-enable.md b/docs/c-runtime-library/reference/get-fma3-enable-set-fma3-enable.md
index bb43d693df..08942528c6 100644
--- a/docs/c-runtime-library/reference/get-fma3-enable-set-fma3-enable.md
+++ b/docs/c-runtime-library/reference/get-fma3-enable-set-fma3-enable.md
@@ -1,9 +1,10 @@
---
title: "_get_FMA3_enable, _set_FMA3_enable"
ms.date: "04/05/2018"
-apiname: ["_get_FMA3_enable", "_set_FMA3_enable"]
-apilocation: ["msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_FMA3_enable", "_set_FMA3_enable"]
+api_location: ["msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_get_FMA3_enable", "_set_FMA3_enable", "math/_get_FMA3_enable", "math/_set_FMA3_enable"]
helpviewer_keywords: ["_get_FMA3_enable", "_set_FMA3_enable"]
ms.assetid: 4c1dc4bc-e86b-451b-9211-5a2ba6c98ee4
@@ -42,7 +43,7 @@ The **_set_FMA3_enable** and **_get_FMA3_enable** functions are only available i
|-------------|---------------------|
|**_set_FMA3_enable**, **_get_FMA3_enable**| C: \
C++: \ or \|
-The **_set_FMA3_enable** and **_get_FMA3_enable** functions are Microsoft specific. For compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+The **_set_FMA3_enable** and **_get_FMA3_enable** functions are Microsoft-specific. For compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
## See also
diff --git a/docs/c-runtime-library/reference/get-fmode.md b/docs/c-runtime-library/reference/get-fmode.md
index 7e74716e24..4b1fac7b71 100644
--- a/docs/c-runtime-library/reference/get-fmode.md
+++ b/docs/c-runtime-library/reference/get-fmode.md
@@ -1,9 +1,10 @@
---
title: "_get_fmode"
ms.date: "11/04/2016"
-apiname: ["_get_fmode"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_fmode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_fmode", "_get_fmode"]
helpviewer_keywords: ["_get_fmode function", "file translation [C++], default mode", "get_fmode function"]
ms.assetid: 22ea70e2-b9b5-422d-b514-64f4beaea45c
diff --git a/docs/c-runtime-library/reference/get-heap-handle.md b/docs/c-runtime-library/reference/get-heap-handle.md
index eb41c5bdbc..e5b4bcc773 100644
--- a/docs/c-runtime-library/reference/get-heap-handle.md
+++ b/docs/c-runtime-library/reference/get-heap-handle.md
@@ -1,9 +1,10 @@
---
title: "_get_heap_handle"
ms.date: "11/04/2016"
-apiname: ["_get_heap_handle"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_get_heap_handle"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_get_heap_handle", "get_heap_handle"]
helpviewer_keywords: ["heap functions", "memory allocation, heap memory", "_get_heap_handle function", "get_heap_handle function"]
ms.assetid: a4d05049-8528-494a-8281-a470d1e1115c
diff --git a/docs/c-runtime-library/reference/get-invalid-parameter-handler-get-thread-local-invalid-parameter-handler.md b/docs/c-runtime-library/reference/get-invalid-parameter-handler-get-thread-local-invalid-parameter-handler.md
index 10e0442624..889c0e59b0 100644
--- a/docs/c-runtime-library/reference/get-invalid-parameter-handler-get-thread-local-invalid-parameter-handler.md
+++ b/docs/c-runtime-library/reference/get-invalid-parameter-handler-get-thread-local-invalid-parameter-handler.md
@@ -1,9 +1,10 @@
---
title: "_get_invalid_parameter_handler, _get_thread_local_invalid_parameter_handler"
ms.date: "11/04/2016"
-apiname: ["_get_invalid_parameter_handler", "_get_thread_local_invalid_parameter_handler"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_invalid_parameter_handler", "_get_thread_local_invalid_parameter_handler"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_get_invalid_parameter_handler", "stdlib/_get_invalid_parameter_handler", "_get_thread_local_invalid_parameter_handler", "stdlib/_get_thread_local_invalid_parameter_handler"]
helpviewer_keywords: ["_get_thread_local_invalid_parameter_handler function", "_get_invalid_parameter_handler function"]
ms.assetid: a176da0e-38ca-4d99-92bb-b0e2b8072f53
@@ -47,7 +48,7 @@ For details on the invalid parameter handler, see the prototype in [_set_invalid
|-------------|---------------------|
|**_get_invalid_parameter_handler**, **_get_thread_local_invalid_parameter_handler**|C: \
C++: \ or \|
-The **_get_invalid_parameter_handler** and **_get_thread_local_invalid_parameter_handler** functions are Microsoft specific. For compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+The **_get_invalid_parameter_handler** and **_get_thread_local_invalid_parameter_handler** functions are Microsoft-specific. For compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
## See also
diff --git a/docs/c-runtime-library/reference/get-osfhandle.md b/docs/c-runtime-library/reference/get-osfhandle.md
index bd4dcecddc..ef5960a844 100644
--- a/docs/c-runtime-library/reference/get-osfhandle.md
+++ b/docs/c-runtime-library/reference/get-osfhandle.md
@@ -1,9 +1,10 @@
---
title: "_get_osfhandle"
ms.date: "05/29/2018"
-apiname: ["_get_osfhandle"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_osfhandle"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_osfhandle", "_get_osfhandle"]
helpviewer_keywords: ["operating systems, getting file handles", "get_osfhandle function", "_get_osfhandle function", "file handles [C++], operating system"]
ms.assetid: 0bdd728a-4fd8-410b-8c9f-01a121135196
diff --git a/docs/c-runtime-library/reference/get-pgmptr.md b/docs/c-runtime-library/reference/get-pgmptr.md
index 1bd6002648..e6a3322b1f 100644
--- a/docs/c-runtime-library/reference/get-pgmptr.md
+++ b/docs/c-runtime-library/reference/get-pgmptr.md
@@ -1,9 +1,10 @@
---
title: "_get_pgmptr"
ms.date: "11/04/2016"
-apiname: ["_get_pgmptr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_pgmptr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_pgmptr", "_get_pgmptr"]
helpviewer_keywords: ["get_pgmptr function", "_get_pgmptr function", "pgmptr global variable", "_pgmptr global variable"]
ms.assetid: 29f16a9f-a685-4721-add3-7fad4f67eece
diff --git a/docs/c-runtime-library/reference/get-printf-count-output.md b/docs/c-runtime-library/reference/get-printf-count-output.md
index a9623a9802..eea52d86d0 100644
--- a/docs/c-runtime-library/reference/get-printf-count-output.md
+++ b/docs/c-runtime-library/reference/get-printf-count-output.md
@@ -1,9 +1,10 @@
---
title: "_get_printf_count_output"
ms.date: "11/04/2016"
-apiname: ["_get_printf_count_output"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_printf_count_output"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_printf_count_output", "_get_printf_count_output"]
helpviewer_keywords: ["%n format", "get_printf_count_output function", "_get_printf_count_output function"]
ms.assetid: 850f9f33-8319-433e-98d8-6a694200d994
diff --git a/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md b/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md
index 7a82a7c562..e88b6daf4f 100644
--- a/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md
+++ b/docs/c-runtime-library/reference/get-purecall-handler-set-purecall-handler.md
@@ -1,9 +1,10 @@
---
title: "_get_purecall_handler, _set_purecall_handler"
ms.date: "11/04/2016"
-apiname: ["_set_purecall_handler", "_set_purecall_handler_m", "_get_purecall_handler"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_set_purecall_handler", "_set_purecall_handler_m", "_get_purecall_handler"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_purecall_handler", "_set_purecall_handler_m", "set_purecall_handler_m", "set_purecall_handler", "stdlib/_set_purecall_handler", "stdlib/_get_purecall_handler", "_get_purecall_handler"]
helpviewer_keywords: ["_set_purecall_handler function", "set_purecall_handler function", "purecall_handler", "set_purecall_handler_m function", "_purecall_handler", "_set_purecall_handler_m function", "_get_purecall_handler function"]
ms.assetid: 2759b878-8afa-4129-86e7-72afc2153d9c
diff --git a/docs/c-runtime-library/reference/get-terminate.md b/docs/c-runtime-library/reference/get-terminate.md
index 5591fdf3a5..1497d6aecc 100644
--- a/docs/c-runtime-library/reference/get-terminate.md
+++ b/docs/c-runtime-library/reference/get-terminate.md
@@ -1,9 +1,10 @@
---
title: "_get_terminate"
ms.date: "11/04/2016"
-apiname: ["_get_terminate"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_terminate"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_terminate", "_get_terminate", "__get_terminate"]
helpviewer_keywords: ["__get_terminate function", "get_terminate function", "_get_terminate function"]
ms.assetid: c8f168c4-0ad5-4832-a522-dd1ef383c208
diff --git a/docs/c-runtime-library/reference/get-timezone.md b/docs/c-runtime-library/reference/get-timezone.md
index 5c72d17aa1..e238ff8e3b 100644
--- a/docs/c-runtime-library/reference/get-timezone.md
+++ b/docs/c-runtime-library/reference/get-timezone.md
@@ -1,9 +1,10 @@
---
title: "_get_timezone"
ms.date: "11/04/2016"
-apiname: ["_get_timezone"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_timezone"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_get_timezone", "get_timezone"]
helpviewer_keywords: ["time zones", "get_timezone function", "_get_timezone function"]
ms.assetid: 30ab0838-0ae9-4a2f-bfe6-a49ee443b21e
diff --git a/docs/c-runtime-library/reference/get-tzname.md b/docs/c-runtime-library/reference/get-tzname.md
index 4a47d7041a..f0b855208a 100644
--- a/docs/c-runtime-library/reference/get-tzname.md
+++ b/docs/c-runtime-library/reference/get-tzname.md
@@ -1,9 +1,10 @@
---
title: "_get_tzname"
ms.date: "10/22/2018"
-apiname: ["_get_tzname"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_tzname"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_get_tzname", "get_tzname"]
helpviewer_keywords: ["_get_tzname function", "time zones", "get_tzname function"]
ms.assetid: df0065ff-095f-4237-832c-2fe9ab913875
diff --git a/docs/c-runtime-library/reference/get-unexpected.md b/docs/c-runtime-library/reference/get-unexpected.md
index 8a3e718088..498a952f7c 100644
--- a/docs/c-runtime-library/reference/get-unexpected.md
+++ b/docs/c-runtime-library/reference/get-unexpected.md
@@ -1,9 +1,10 @@
---
title: "_get_unexpected"
ms.date: "11/04/2016"
-apiname: ["_get_unexpected"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_get_unexpected"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__get_unexpected", "_get_unexpected", "get_unexpected"]
helpviewer_keywords: ["__get_unexpected function", "get_unexpected function", "_get_unexpected function"]
ms.assetid: a5f7a7a0-18e0-485e-953d-db291068a1e8
diff --git a/docs/c-runtime-library/reference/get-wpgmptr.md b/docs/c-runtime-library/reference/get-wpgmptr.md
index ae7443c389..8fb6b98c2c 100644
--- a/docs/c-runtime-library/reference/get-wpgmptr.md
+++ b/docs/c-runtime-library/reference/get-wpgmptr.md
@@ -1,9 +1,10 @@
---
title: "_get_wpgmptr"
ms.date: "11/04/2016"
-apiname: ["_get_wpgmptr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_get_wpgmptr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["get_wpgmptr", "_get_wpgmptr"]
helpviewer_keywords: ["_wpgmptr global variable", "get_wpgmptr function", "wpgmptr global variable", "_get_wpgmptr function"]
ms.assetid: a77cdd13-2303-4b7c-9a60-8debdbef2011
diff --git a/docs/c-runtime-library/reference/getc-getwc.md b/docs/c-runtime-library/reference/getc-getwc.md
index 71b79f0901..0f4272a01a 100644
--- a/docs/c-runtime-library/reference/getc-getwc.md
+++ b/docs/c-runtime-library/reference/getc-getwc.md
@@ -1,9 +1,10 @@
---
title: "getc, getwc"
ms.date: "11/04/2016"
-apiname: ["getwc", "getc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["getwc", "getc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_gettc", "getwc", "_gettchar", "getc"]
helpviewer_keywords: ["characters, reading", "_gettc function", "getwchar function", "streams, reading characters from", "reading characters from streams", "getc function", "getwc function", "gettc function"]
ms.assetid: 354ef514-d0c7-404b-92f5-995f6a834bb3
diff --git a/docs/c-runtime-library/reference/getc-nolock-getwc-nolock.md b/docs/c-runtime-library/reference/getc-nolock-getwc-nolock.md
index 2a141807bc..d6499b9a23 100644
--- a/docs/c-runtime-library/reference/getc-nolock-getwc-nolock.md
+++ b/docs/c-runtime-library/reference/getc-nolock-getwc-nolock.md
@@ -1,9 +1,10 @@
---
title: "_getc_nolock, _getwc_nolock"
ms.date: "11/04/2016"
-apiname: ["_getc_nolock", "_getwc_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getc_nolock", "_getwc_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getc_nolock", "_gettc_nolock", "_getc_nolock", "getwc_nolock", "gettc_nolock", "_getwc_nolock"]
helpviewer_keywords: ["characters, reading", "_getc_nolock function", "_getwc_nolock function", "getwc_nolock function", "streams, reading characters from", "reading characters from streams", "getc_nolock function", "gettc_nolock function", "_gettc_nolock function"]
ms.assetid: eb37b272-e177-41c9-b077-12ce7ffd3b88
diff --git a/docs/c-runtime-library/reference/getch-getwch.md b/docs/c-runtime-library/reference/getch-getwch.md
index 2e846e0a23..539fbdebc9 100644
--- a/docs/c-runtime-library/reference/getch-getwch.md
+++ b/docs/c-runtime-library/reference/getch-getwch.md
@@ -1,9 +1,10 @@
---
title: "_getch, _getwch"
ms.date: "11/04/2016"
-apiname: ["_getch", "_getwch"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getch", "_getwch"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getwch", "_getch", "_getwch"]
helpviewer_keywords: ["characters, getting from console", "getch function", "_getwch function", "console, reading from", "_getch function", "getwch function"]
ms.assetid: cc116be7-cff2-4274-970f-5e7b18ccc05c
diff --git a/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md b/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md
index 2767576ad8..4963ae1adb 100644
--- a/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md
+++ b/docs/c-runtime-library/reference/getch-nolock-getwch-nolock.md
@@ -1,9 +1,10 @@
---
title: "_getch_nolock, _getwch_nolock"
ms.date: "11/04/2016"
-apiname: ["_getwch_nolock", "_getch_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getwch_nolock", "_getch_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getch_nolock", "getwch_nolock", "getch_nolock", "_getwch_nolock", "_gettch_nolock", "gettch_nolock"]
helpviewer_keywords: ["characters, getting from console", "_getwch_nolock function", "_getch_nolock function", "getwch_nolock function", "_gettch_nolock function", "console, reading from", "getch_nolock function", "gettch_nolock function"]
ms.assetid: 9d248546-26ca-482c-b0c6-55812a987e83
diff --git a/docs/c-runtime-library/reference/getch.md b/docs/c-runtime-library/reference/getch.md
index 0f96d79092..d49965b1a6 100644
--- a/docs/c-runtime-library/reference/getch.md
+++ b/docs/c-runtime-library/reference/getch.md
@@ -1,16 +1,19 @@
---
title: "getch"
-ms.date: "11/04/2016"
-apiname: ["getch"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["getch"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getch"]
helpviewer_keywords: ["getch function"]
ms.assetid: d3a0b744-d63c-4f71-960e-24e619dccd01
---
# getch
-This POSIX function is deprecated. Use the ISO C++ conformant [_getch](getch-getwch.md) instead.
+The Microsoft-specific function name `getch` is a deprecated alias for the [_getch](getch-getwch.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_getch](getch-getwch.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/getchar-getwchar.md b/docs/c-runtime-library/reference/getchar-getwchar.md
index a014571c20..60a7ebe2ae 100644
--- a/docs/c-runtime-library/reference/getchar-getwchar.md
+++ b/docs/c-runtime-library/reference/getchar-getwchar.md
@@ -1,9 +1,10 @@
---
title: "getchar, getwchar"
ms.date: "11/04/2016"
-apiname: ["getchar", "getwchar"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["getchar", "getwchar"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getwchar", "GetChar"]
helpviewer_keywords: ["gettchar function", "characters, reading", "getwchar function", "_gettchar function", "standard input, reading from"]
ms.assetid: 19fda588-3e33-415c-bb60-dd73c028086a
diff --git a/docs/c-runtime-library/reference/getchar-nolock-getwchar-nolock.md b/docs/c-runtime-library/reference/getchar-nolock-getwchar-nolock.md
index 5d1bf91f33..7df7c3be04 100644
--- a/docs/c-runtime-library/reference/getchar-nolock-getwchar-nolock.md
+++ b/docs/c-runtime-library/reference/getchar-nolock-getwchar-nolock.md
@@ -1,9 +1,10 @@
---
title: "_getchar_nolock, _getwchar_nolock"
ms.date: "11/04/2016"
-apiname: ["_getchar_nolock", "_getwchar_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_getchar_nolock", "_getwchar_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getwchar_nolock", "_getwchar_nolock", "_getchar_nolock", "getchar_nolock"]
helpviewer_keywords: ["_getwchar_nolock function", "getwchar_nolock function", "characters, reading", "_getchar_nolock function", "getchar_nolock function", "standard input, reading from"]
ms.assetid: dc49ba60-0647-4ae9-aa9a-a0618b1666de
diff --git a/docs/c-runtime-library/reference/getche-getwche.md b/docs/c-runtime-library/reference/getche-getwche.md
index 557dc47afc..42734c3228 100644
--- a/docs/c-runtime-library/reference/getche-getwche.md
+++ b/docs/c-runtime-library/reference/getche-getwche.md
@@ -1,9 +1,10 @@
---
title: "_getche, _getwche"
ms.date: "11/04/2016"
-apiname: ["_getwche", "_getche"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getwche", "_getche"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getwche", "_getche", "_getwche"]
helpviewer_keywords: ["characters, getting from console", "_getwche function", "getche function", "console, reading from", "getwche function", "_getche function"]
ms.assetid: eac978a8-c43a-4130-938f-54f12e2a0fda
diff --git a/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md b/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md
index ab7b7bd213..4efc95e84b 100644
--- a/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md
+++ b/docs/c-runtime-library/reference/getche-nolock-getwche-nolock.md
@@ -1,9 +1,10 @@
---
title: "_getche_nolock, _getwche_nolock"
ms.date: "11/04/2016"
-apiname: ["_getche_nolock", "_getwche_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getche_nolock", "_getwche_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getche_nolock", "_gettche_nolock", "_getwche_nolock", "getche_nolock", "getwche_nolock", "gettche_nolock"]
helpviewer_keywords: ["characters, getting from console", "_gettche_nolock function", "getwche_nolock function", "_getche_nolock function", "getche_nolock function", "console, reading from", "_getwche_nolock function", "gettche_nolock function"]
ms.assetid: 9e853ad4-4d8a-4442-9ae5-da4b434f0b8c
diff --git a/docs/c-runtime-library/reference/getche.md b/docs/c-runtime-library/reference/getche.md
index 5529dca454..0dcf97db48 100644
--- a/docs/c-runtime-library/reference/getche.md
+++ b/docs/c-runtime-library/reference/getche.md
@@ -1,16 +1,19 @@
---
title: "getche"
-ms.date: "11/04/2016"
-apiname: ["getche"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["getche"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getche"]
helpviewer_keywords: ["getche function"]
ms.assetid: 95e62bb8-eec0-4145-b2e8-f6406849af52
---
# getche
-This POSIX function is deprecated. Use the ISO C++ conformant [_getche](getche-getwche.md) instead.
+The Microsoft-specific function name `getche` is a deprecated alias for the [_getche](getche-getwche.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_getche](getche-getwche.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/getcwd-dbg-wgetcwd-dbg.md b/docs/c-runtime-library/reference/getcwd-dbg-wgetcwd-dbg.md
index 5e31ce6a88..c99397ca9f 100644
--- a/docs/c-runtime-library/reference/getcwd-dbg-wgetcwd-dbg.md
+++ b/docs/c-runtime-library/reference/getcwd-dbg-wgetcwd-dbg.md
@@ -1,9 +1,10 @@
---
title: "_getcwd_dbg, _wgetcwd_dbg"
ms.date: "11/04/2016"
-apiname: ["_wgetcwd_dbg", "_getcwd_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wgetcwd_dbg", "_getcwd_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getcwd_dbg", "_wgetcwd_dbg", "getcwd_dbg", "wgetcwd_dbg"]
helpviewer_keywords: ["wgetcwd_dbg function", "working directory", "_getcwd_dbg function", "getcwd_dbg function", "current working directory", "_wgetcwd_dbg function", "directories [C++], current working"]
ms.assetid: 8d5d151f-d844-4aa6-a28c-1c11a22dc00d
diff --git a/docs/c-runtime-library/reference/getcwd-wgetcwd.md b/docs/c-runtime-library/reference/getcwd-wgetcwd.md
index 37261097f9..adaa7d4588 100644
--- a/docs/c-runtime-library/reference/getcwd-wgetcwd.md
+++ b/docs/c-runtime-library/reference/getcwd-wgetcwd.md
@@ -1,9 +1,11 @@
---
title: "_getcwd, _wgetcwd"
-ms.date: "11/04/2016"
-apiname: ["_wgetcwd", "_getcwd"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+description: C Runtime Library functions _getcwd, _wgetcwd get the current working directory.
+ms.date: "09/24/2019"
+api_name: ["_wgetcwd", "_getcwd"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getcwd", "wgetcwd", "_wgetcwd", "tgetcwd", "_tgetcwd"]
helpviewer_keywords: ["getcwd function", "working directory", "_wgetcwd function", "_getcwd function", "current working directory", "wgetcwd function", "directories [C++], current working"]
ms.assetid: 888dc8c6-5595-4071-be55-816b38e3e739
@@ -27,10 +29,10 @@ wchar_t *_wgetcwd(
### Parameters
-*buffer*
+*buffer*\
Storage location for the path.
-*maxlen*
+*maxlen*\
Maximum length of the path in characters: **char** for **_getcwd** and **wchar_t** for **_wgetcwd**.
## Return Value
@@ -43,7 +45,7 @@ For more information about these and other return codes, see [_doserrno, errno,
The **_getcwd** function gets the full path of the current working directory for the default drive and stores it at *buffer*. The integer argument *maxlen* specifies the maximum length for the path. An error occurs if the length of the path (including the terminating null character) exceeds *maxlen*. The *buffer* argument can be **NULL**; a buffer of at least size *maxlen* (more only if necessary) is automatically allocated, using **malloc**, to store the path. This buffer can later be freed by calling **free** and passing it the **_getcwd** return value (a pointer to the allocated buffer).
-**_getcwd** returns a string that represents the path of the current working directory. If the current working directory is the root, the string ends with a backslash ( **\\** ). If the current working directory is a directory other than the root, the string ends with the directory name and not with a backslash.
+**_getcwd** returns a string that represents the path of the current working directory. If the current working directory is the root, the string ends with a backslash (`\`). If the current working directory is a directory other than the root, the string ends with the directory name and not with a backslash.
**_wgetcwd** is a wide-character version of **_getcwd**; the *buffer* argument and return value of **_wgetcwd** are wide-character strings. **_wgetcwd** and **_getcwd** behave identically otherwise.
@@ -68,26 +70,28 @@ For more compatibility information, see [Compatibility](../../c-runtime-library/
```C
// crt_getcwd.c
+// Compile with: cl /W4 crt_getcwd.c
// This program places the name of the current directory in the
// buffer array, then displays the name of the current directory
// on the screen. Passing NULL as the buffer forces getcwd to allocate
// memory for the path, which allows the code to support file paths
// longer than _MAX_PATH, which are supported by NTFS.
-#include
-#include
-#include
+#include // _getcwd
+#include // free, perror
+#include // printf
+#include // strlen
int main( void )
{
char* buffer;
// Get the current working directory:
- if( (buffer = _getcwd( NULL, 0 )) == NULL )
+ if ( (buffer = _getcwd( NULL, 0 )) == NULL )
perror( "_getcwd error" );
else
{
- printf( "%s \nLength: %d\n", buffer, strnlen(buffer) );
+ printf( "%s \nLength: %zu\n", buffer, strlen(buffer) );
free(buffer);
}
}
@@ -99,7 +103,7 @@ C:\Code
## See also
-[Directory Control](../../c-runtime-library/directory-control.md)
-[_chdir, _wchdir](chdir-wchdir.md)
-[_mkdir, _wmkdir](mkdir-wmkdir.md)
-[_rmdir, _wrmdir](rmdir-wrmdir.md)
+[Directory Control](../../c-runtime-library/directory-control.md)\
+[_chdir, _wchdir](chdir-wchdir.md)\
+[_mkdir, _wmkdir](mkdir-wmkdir.md)\
+[_rmdir, _wrmdir](rmdir-wrmdir.md)
diff --git a/docs/c-runtime-library/reference/getcwd.md b/docs/c-runtime-library/reference/getcwd.md
index 6b200c7a06..0d4a5fd04e 100644
--- a/docs/c-runtime-library/reference/getcwd.md
+++ b/docs/c-runtime-library/reference/getcwd.md
@@ -1,16 +1,19 @@
---
title: "getcwd"
-ms.date: "11/04/2016"
-apiname: ["getcwd"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["getcwd"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getcwd"]
helpviewer_keywords: ["getcwd function"]
ms.assetid: c740ab06-9ba0-4036-a025-ce3acded3ffe
---
# getcwd
-This POSIX function is deprecated. Use the ISO C++ conformant [_getcwd](getcwd-wgetcwd.md) instead.
+The Microsoft-implemented POSIX function name `getcwd` is a deprecated alias for the [_getcwd](getcwd-wgetcwd.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_getcwd](getcwd-wgetcwd.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/getdcwd-dbg-wgetdcwd-dbg.md b/docs/c-runtime-library/reference/getdcwd-dbg-wgetdcwd-dbg.md
index 84c8201559..93bd34be94 100644
--- a/docs/c-runtime-library/reference/getdcwd-dbg-wgetdcwd-dbg.md
+++ b/docs/c-runtime-library/reference/getdcwd-dbg-wgetdcwd-dbg.md
@@ -1,9 +1,10 @@
---
title: "_getdcwd_dbg, _wgetdcwd_dbg"
ms.date: "11/04/2016"
-apiname: ["_getdcwd_dbg", "_wgetdcwd_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_getdcwd_dbg", "_wgetdcwd_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getdcwd_dbg", "getdcwd_dbg", "_wgetdcwd_dbg", "wgetdcwd_dbg"]
helpviewer_keywords: ["working directory", "_getdcwd_dbg function", "wgetdcwd_dbg function", "current working directory", "getdcwd_dbg function", "_wgetdcwd_dbg function", "directories [C++], current working"]
ms.assetid: 266bf6f0-0417-497f-963d-2e0f306d9385
diff --git a/docs/c-runtime-library/reference/getdcwd-nolock-wgetdcwd-nolock.md b/docs/c-runtime-library/reference/getdcwd-nolock-wgetdcwd-nolock.md
index a3a49bae2c..3d1bfc67c0 100644
--- a/docs/c-runtime-library/reference/getdcwd-nolock-wgetdcwd-nolock.md
+++ b/docs/c-runtime-library/reference/getdcwd-nolock-wgetdcwd-nolock.md
@@ -1,9 +1,10 @@
---
title: "_getdcwd_nolock, _wgetdcwd_nolock"
ms.date: "11/04/2016"
-apiname: ["_wgetdcwd_nolock", "_getdcwd_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_wgetdcwd_nolock", "_getdcwd_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wgetdcwd_nolock", "tgetdcwd_nolock", "wgetdcwd_nolock", "_getdcwd_nolock", "_tgetdcwd_nolock", "getdcwd_nolock"]
helpviewer_keywords: ["getdcwd_nolock function", "_tgetdcwd_nolock function", "working directory", "tgetdcwd_nolock function", "_getdcwd_nolock function", "current working directory", "wgetdcwd_nolock function", "_wgetdcwd_nolock function", "directories [C++], current working"]
ms.assetid: d9bdf712-43f8-4173-8f9a-844e82beaa97
diff --git a/docs/c-runtime-library/reference/getdcwd-wgetdcwd.md b/docs/c-runtime-library/reference/getdcwd-wgetdcwd.md
index 56b0eb4e70..2fcfb9da08 100644
--- a/docs/c-runtime-library/reference/getdcwd-wgetdcwd.md
+++ b/docs/c-runtime-library/reference/getdcwd-wgetdcwd.md
@@ -1,9 +1,10 @@
---
title: "_getdcwd, _wgetdcwd"
ms.date: "11/04/2016"
-apiname: ["_getdcwd", "_wgetdcwd"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getdcwd", "_wgetdcwd"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wgetdcwd", "getdcwd", "_getdcwd", "tgetdcwd", "_wgetdcwd", "_tgetdcwd"]
helpviewer_keywords: ["wgetdcwd function", "working directory", "getdcwd function", "_getdcwd function", "_wgetdcwd function", "current working directory", "directories [C++], current working"]
ms.assetid: 184152f5-c7b0-495b-918d-f9a6adc178bd
diff --git a/docs/c-runtime-library/reference/getdiskfree.md b/docs/c-runtime-library/reference/getdiskfree.md
index 539e3306a3..e87cd9163f 100644
--- a/docs/c-runtime-library/reference/getdiskfree.md
+++ b/docs/c-runtime-library/reference/getdiskfree.md
@@ -1,9 +1,10 @@
---
title: "_getdiskfree"
ms.date: "11/04/2016"
-apiname: ["_getdiskfree"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getdiskfree"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getdiskfree", "_getdiskfree"]
helpviewer_keywords: ["diskfree_t type", "_getdiskfree function", "_diskfree_t type", "disk size", "getdiskfree function"]
ms.assetid: 47a3f6cf-4816-452a-8f3d-1c3ae02a0f2a
diff --git a/docs/c-runtime-library/reference/getdrive.md b/docs/c-runtime-library/reference/getdrive.md
index b8cc51f56f..16ee69c807 100644
--- a/docs/c-runtime-library/reference/getdrive.md
+++ b/docs/c-runtime-library/reference/getdrive.md
@@ -1,9 +1,10 @@
---
title: "_getdrive"
-ms.date: "11/04/2016"
-apiname: ["_getdrive"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "09/19/2019"
+api_name: ["_getdrive"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getdrive", "getdrive"]
helpviewer_keywords: ["current disk drive", "getdrive function", "disk drives", "_getdrive function"]
ms.assetid: e40631a0-8f1a-4897-90ac-e1037ff30bca
@@ -23,7 +24,7 @@ int _getdrive( void );
## Return Value
-Returns the current (default) drive (1=A, 2=B, and so on). There is no error return.
+Returns the current (default) drive (1=A, 2=B, and so on). A return value of zero means that the current path doesn't start with a letter drive name, such as a UNC path. Or, it means that an internal buffer allocation failed. If an internal allocation fails, `errno` is set to ENOMEM.
## Requirements
diff --git a/docs/c-runtime-library/reference/getdrives.md b/docs/c-runtime-library/reference/getdrives.md
index 2748035026..8b3a3b7797 100644
--- a/docs/c-runtime-library/reference/getdrives.md
+++ b/docs/c-runtime-library/reference/getdrives.md
@@ -1,9 +1,10 @@
---
title: "_getdrives"
ms.date: "11/04/2016"
-apiname: ["_getdrives"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getdrives"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getdrives", "_getdrives"]
helpviewer_keywords: ["_getdrives function", "getdrives function", "disk drives"]
ms.assetid: 869bb51f-4209-4328-846e-3aadebaceb9c
diff --git a/docs/c-runtime-library/reference/getenv-s-wgetenv-s.md b/docs/c-runtime-library/reference/getenv-s-wgetenv-s.md
index 257158afdf..ed6fd364aa 100644
--- a/docs/c-runtime-library/reference/getenv-s-wgetenv-s.md
+++ b/docs/c-runtime-library/reference/getenv-s-wgetenv-s.md
@@ -1,12 +1,15 @@
---
title: "getenv_s, _wgetenv_s"
-ms.date: "11/04/2016"
-apiname: ["getenv_s", "_wgetenv_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "Describes the Microsoft C runtime library getenv_s and _wgetenv_s functions."
+ms.date: "01/15/2020"
+api_name: ["getenv_s", "_wgetenv_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getenv_s", "_tgetenv_s", "_wgetenv_s"]
helpviewer_keywords: ["_tgetenv_s function", "wgetenv_s function", "_wgetenv_s function", "getenv_s function", "environment variables", "tgetenv_s function"]
ms.assetid: c3ae1ffe-d4cd-4bae-bcb1-3afa754c613a
+no-loc: [getenv_s, _wgetenv_s, _putenv_s, main, wmain, errno, EINVAL, ERANGE, _environ, _wenviron, _putenv, _wputenv, _tgetenv_s, _tzset, _dupenv_s, _wdupenv_s]
---
# getenv_s, _wgetenv_s
@@ -76,7 +79,7 @@ Also, if the buffer is too small, these functions return **ERANGE**. They do not
## Remarks
-The **getenv_s** function searches the list of environment variables for *varname*. **getenv_s** is not case sensitive in the Windows operating system. **getenv_s** and [_putenv_s](putenv-s-wputenv-s.md) use the copy of the environment that's pointed to by the global variable **_environ** to access the environment. **getenv_s** operates only on the data structures that are accessible to the run-time library and not on the environment "segment" that's created for the process by the operating system. Therefore, programs that use the *envp* argument to [main](../../cpp/main-program-startup.md) or [wmain](../../cpp/main-program-startup.md) might retrieve invalid information.
+The **getenv_s** function searches the list of environment variables for *varname*. **getenv_s** is not case sensitive in the Windows operating system. **getenv_s** and [_putenv_s](putenv-s-wputenv-s.md) use the copy of the environment that's pointed to by the global variable **_environ** to access the environment. **getenv_s** operates only on the data structures that are accessible to the run-time library and not on the environment "segment" that's created for the process by the operating system. Therefore, programs that use the *envp* argument to [main](../../cpp/main-function-command-line-args.md) or [wmain](../../cpp/main-function-command-line-args.md) might retrieve invalid information.
**_wgetenv_s** is a wide-character version of **getenv_s**; the argument and return value of **_wgetenv_s** are wide-character strings. The **_wenviron** global variable is a wide-character version of **_environ**.
diff --git a/docs/c-runtime-library/reference/getenv-wgetenv.md b/docs/c-runtime-library/reference/getenv-wgetenv.md
index 872c43022d..c910171c8a 100644
--- a/docs/c-runtime-library/reference/getenv-wgetenv.md
+++ b/docs/c-runtime-library/reference/getenv-wgetenv.md
@@ -1,12 +1,15 @@
---
title: "getenv, _wgetenv"
-ms.date: "11/04/2016"
-apiname: ["getenv", "_wgetenv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "Describes the Microsoft C runtime library getenv and _wgetenv functions."
+ms.date: "01/15/2020"
+api_name: ["getenv", "_wgetenv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wgetenv", "getenv", "_tgetenv"]
helpviewer_keywords: ["getenv function", "tgetenv function", "wgetenv function", "environment values", "environment variables", "_tgetenv function", "_wgetenv function"]
ms.assetid: 3b9cb9ab-a126-4e0e-a44f-6c5a7134daf4
+no-loc: [getenv, _wgetenv, getenv_s, _wgetenv_s, _putenv_s, main, wmain, errno, EINVAL, ERANGE, _environ, _wenviron, _putenv, _wputenv, _tgetenv_s, _tzset, _dupenv_s, _wdupenv_s]
---
# getenv, _wgetenv
@@ -31,13 +34,13 @@ wchar_t *_wgetenv(
*varname*
Environment variable name.
-## Return Value
+## Return value
Returns a pointer to the environment table entry containing *varname*. It is not safe to modify the value of the environment variable using the returned pointer. Use the [_putenv](putenv-wputenv.md) function to modify the value of an environment variable. The return value is **NULL** if *varname* is not found in the environment table.
## Remarks
-The **getenv** function searches the list of environment variables for *varname*. **getenv** is not case sensitive in the Windows operating system. **getenv** and **_putenv** use the copy of the environment pointed to by the global variable **_environ** to access the environment. **getenv** operates only on the data structures accessible to the run-time library and not on the environment "segment" created for the process by the operating system. Therefore, programs that use the *envp* argument to [main](../../cpp/main-program-startup.md) or [wmain](../../cpp/main-program-startup.md) may retrieve invalid information.
+The **getenv** function searches the list of environment variables for *varname*. **getenv** is not case sensitive in the Windows operating system. **getenv** and **_putenv** use the copy of the environment pointed to by the global variable **_environ** to access the environment. **getenv** operates only on the data structures accessible to the run-time library and not on the environment "segment" created for the process by the operating system. Therefore, programs that use the *envp* argument to [main](../../cpp/main-function-command-line-args.md) or [wmain](../../cpp/main-function-command-line-args.md) may retrieve invalid information.
If *varname* is **NULL**, this function invokes an invalid parameter handler, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, this function sets **errno** to **EINVAL** and returns **NULL**.
@@ -116,6 +119,6 @@ New LIB variable is: c:\mylib;c:\yourlib
## See also
-[Process and Environment Control](../../c-runtime-library/process-and-environment-control.md)
+[Process and environment control](../../c-runtime-library/process-and-environment-control.md)
[_putenv, _wputenv](putenv-wputenv.md)
-[Environmental Constants](../../c-runtime-library/environmental-constants.md)
+[Environmental constants](../../c-runtime-library/environmental-constants.md)
diff --git a/docs/c-runtime-library/reference/getmaxstdio.md b/docs/c-runtime-library/reference/getmaxstdio.md
index e288a19386..7a4c8112bd 100644
--- a/docs/c-runtime-library/reference/getmaxstdio.md
+++ b/docs/c-runtime-library/reference/getmaxstdio.md
@@ -1,9 +1,10 @@
---
title: "_getmaxstdio"
ms.date: "11/04/2016"
-apiname: ["_getmaxstdio"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getmaxstdio"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getmaxstdio", "getmaxstdio"]
helpviewer_keywords: ["files [C++], number open", "_getmaxstdio function", "getmaxstdio function", "open files, getting number"]
ms.assetid: 700ca8ce-4a8c-4e00-9467-dfa9d6b831a0
diff --git a/docs/c-runtime-library/reference/getmbcp.md b/docs/c-runtime-library/reference/getmbcp.md
index 6ff0c515a9..19ee32704c 100644
--- a/docs/c-runtime-library/reference/getmbcp.md
+++ b/docs/c-runtime-library/reference/getmbcp.md
@@ -1,9 +1,10 @@
---
title: "_getmbcp"
ms.date: "11/04/2016"
-apiname: ["_getmbcp"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getmbcp"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getmbcp", "getmbcp"]
helpviewer_keywords: ["code pages, determining current", "_getmbcp function", "getmbcp function"]
ms.assetid: 2db202d4-5c3d-4871-a0b8-ceb0b79ee7bb
diff --git a/docs/c-runtime-library/reference/getpid.md b/docs/c-runtime-library/reference/getpid.md
index f0a6241cff..e19c5f8533 100644
--- a/docs/c-runtime-library/reference/getpid.md
+++ b/docs/c-runtime-library/reference/getpid.md
@@ -1,9 +1,10 @@
---
title: "_getpid"
ms.date: "11/04/2016"
-apiname: ["_getpid"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getpid"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getpid"]
helpviewer_keywords: ["getpid function", "_getpid function", "process identification numbers"]
ms.assetid: d3e13bae-9a0c-4f33-86d3-ec9df9519285
diff --git a/docs/c-runtime-library/reference/gets-s-getws-s.md b/docs/c-runtime-library/reference/gets-s-getws-s.md
index caa8c687ce..9c925b847f 100644
--- a/docs/c-runtime-library/reference/gets-s-getws-s.md
+++ b/docs/c-runtime-library/reference/gets-s-getws-s.md
@@ -1,9 +1,10 @@
---
title: "gets_s, _getws_s"
ms.date: "11/04/2016"
-apiname: ["_getws_s", "gets_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getws_s", "gets_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getws_s", "gets_s"]
helpviewer_keywords: ["getws_s function", "_getws_s function", "lines, getting", "streams, getting lines", "buffers, avoiding overruns", "buffer overruns", "buffers, buffer overruns", "gets_s function", "standard input, reading from"]
ms.assetid: 5880c36f-122c-4061-a1a5-aeeced6fe58c
diff --git a/docs/c-runtime-library/reference/getw.md b/docs/c-runtime-library/reference/getw.md
index 21a482254c..dfb166e57f 100644
--- a/docs/c-runtime-library/reference/getw.md
+++ b/docs/c-runtime-library/reference/getw.md
@@ -1,9 +1,10 @@
---
title: "_getw"
ms.date: "11/04/2016"
-apiname: ["_getw"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_getw"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_getw"]
helpviewer_keywords: ["_getw function", "integers, getting from streams", "getw function"]
ms.assetid: ef75facc-b84e-470f-9f5f-8746c90822a0
diff --git a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md
index 11cafa9a9f..fb9150538e 100644
--- a/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md
+++ b/docs/c-runtime-library/reference/gmtime-gmtime32-gmtime64.md
@@ -1,9 +1,10 @@
---
title: "gmtime, _gmtime32, _gmtime64"
ms.date: "11/04/2016"
-apiname: ["_gmtime32", "gmtime", "_gmtime64"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_gmtime32", "gmtime", "_gmtime64"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["gmtime", "_gmtime32", "_gmtime64"]
helpviewer_keywords: ["gmtime32 function", "_gmtime64 function", "gmtime function", "time functions", "_gmtime32 function", "gmtime64 function", "time structure conversion"]
ms.assetid: 315501f3-477e-475d-a414-ef100ee0db27
diff --git a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md
index 8cc7edc8f0..0c82f52835 100644
--- a/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md
+++ b/docs/c-runtime-library/reference/gmtime-s-gmtime32-s-gmtime64-s.md
@@ -1,9 +1,10 @@
---
title: "gmtime_s, _gmtime32_s, _gmtime64_s"
ms.date: "11/04/2016"
-apiname: ["_gmtime32_s", "gmtime_s", "_gmtime64_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_gmtime32_s", "gmtime_s", "_gmtime64_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_gmtime_s", "gmtime64_s", "gmtime32_s", "_gmtime64_s", "gmtime_s", "_gmtime32_s"]
helpviewer_keywords: ["gmtime_s function", "gmtime32_s function", "time functions", "gmtime64_s function", "_gmtime64_s function", "time structure conversion", "_gmtime_s function", "_gmtime32_s function"]
ms.assetid: 261c7df0-2b0c-44ba-ba61-cb83efaec60f
diff --git a/docs/c-runtime-library/reference/heapchk.md b/docs/c-runtime-library/reference/heapchk.md
index 114e66639e..bc3e604096 100644
--- a/docs/c-runtime-library/reference/heapchk.md
+++ b/docs/c-runtime-library/reference/heapchk.md
@@ -1,9 +1,10 @@
---
title: "_heapchk"
ms.date: "11/04/2016"
-apiname: ["_heapchk"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_heapchk"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_heapchk", "heapchk"]
helpviewer_keywords: ["debugging [CRT], heap-related problems", "consistency checking of heaps", "heapchk function", "heaps, checking consistency", "_heapchk function"]
ms.assetid: 859619a5-1e35-4f02-9e09-11d9fa266ec0
diff --git a/docs/c-runtime-library/reference/heapmin.md b/docs/c-runtime-library/reference/heapmin.md
index a01c4a01d9..aec9bf7404 100644
--- a/docs/c-runtime-library/reference/heapmin.md
+++ b/docs/c-runtime-library/reference/heapmin.md
@@ -1,9 +1,10 @@
---
title: "_heapmin"
ms.date: "11/04/2016"
-apiname: ["_heapmin"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_heapmin"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_heapmin", "heapmin"]
helpviewer_keywords: ["heap memory", "minimizing heaps", "memory, releasing", "heaps, releasing unused memory", "_heapmin function", "heapmin function"]
ms.assetid: c0bccdf6-2d14-4d7b-a7ff-d6a17bdb410f
diff --git a/docs/c-runtime-library/reference/heapwalk.md b/docs/c-runtime-library/reference/heapwalk.md
index 861d9e2acb..cb8e7fba47 100644
--- a/docs/c-runtime-library/reference/heapwalk.md
+++ b/docs/c-runtime-library/reference/heapwalk.md
@@ -1,9 +1,10 @@
---
title: "_heapwalk"
ms.date: "11/04/2016"
-apiname: ["_heapwalk"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_heapwalk"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["heapwalk", "_heapwalk"]
helpviewer_keywords: ["debugging [CRT], heap-related problems", "heapwalk function", "_heapwalk function"]
ms.assetid: 2df67649-fb00-4570-a8b1-a4eca5738744
diff --git a/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md b/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md
index f02ea5ce62..90c83b6511 100644
--- a/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md
+++ b/docs/c-runtime-library/reference/hypot-hypotf-hypotl-hypot-hypotf-hypotl.md
@@ -1,9 +1,10 @@
---
title: "hypot, hypotf, hypotl, _hypot, _hypotf, _hypotl"
ms.date: "04/05/2018"
-apiname: ["_hypotf", "hypot", "hypotf", "_hypot", "_hypotl", "hypotl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_hypotf", "hypot", "hypotf", "_hypot", "_hypotl", "hypotl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["hypotf", "hypotl", "_hypotl", "hypot", "_hypot", "_hypotf"]
helpviewer_keywords: ["hypotenuse calculation", "hypot function", "hypotf function", "triangles, calculating hypotenuse", "hypotl function", "calculating hypotenuses", "_hypot function"]
ms.assetid: 6a13887f-bd53-43fc-9d77-5b42d6e49925
diff --git a/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md b/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md
index dced1a63bd..6733f23a84 100644
--- a/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md
+++ b/docs/c-runtime-library/reference/ilogb-ilogbf-ilogbl2.md
@@ -1,9 +1,10 @@
---
title: "ilogb, ilogbf, ilogbl2"
ms.date: "04/05/2018"
-apiname: ["ilogb", "ilogbf", "ilogbl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ilogb", "ilogbf", "ilogbl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ilogb", "ilogbf", "ilogbl", "math/ilogb", "math/ilogbf", "math/ilogbl"]
helpviewer_keywords: ["ilogb function", "ilogbf function", "ilogbl function"]
ms.assetid: 9ef19d57-1caa-41d5-8233-2faad3562fcb
diff --git a/docs/c-runtime-library/reference/imaxabs.md b/docs/c-runtime-library/reference/imaxabs.md
index 504bad3e13..28480d7ab3 100644
--- a/docs/c-runtime-library/reference/imaxabs.md
+++ b/docs/c-runtime-library/reference/imaxabs.md
@@ -1,9 +1,10 @@
---
title: "imaxabs"
ms.date: "04/05/2018"
-apiname: ["imaxabs"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["imaxabs"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["imaxabs"]
helpviewer_keywords: ["imaxabs function"]
ms.assetid: de2566a3-1415-4e9a-91b5-7ac3a49ebf5e
diff --git a/docs/c-runtime-library/reference/imaxdiv.md b/docs/c-runtime-library/reference/imaxdiv.md
index 92f0989c79..fdc8b7fc5b 100644
--- a/docs/c-runtime-library/reference/imaxdiv.md
+++ b/docs/c-runtime-library/reference/imaxdiv.md
@@ -1,9 +1,10 @@
---
title: "imaxdiv"
ms.date: "04/05/2018"
-apiname: ["imaxdiv"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["imaxdiv"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["imaxdiv"]
helpviewer_keywords: ["imaxdiv function"]
ms.assetid: 7d90126f-fdc2-4986-9cdf-94e4c9123d26
diff --git a/docs/c-runtime-library/reference/initterm-initterm-e.md b/docs/c-runtime-library/reference/initterm-initterm-e.md
index 5545f4367f..550af6e7e6 100644
--- a/docs/c-runtime-library/reference/initterm-initterm-e.md
+++ b/docs/c-runtime-library/reference/initterm-initterm-e.md
@@ -1,9 +1,10 @@
---
title: "_initterm, _initterm_e"
ms.date: "11/04/2016"
-apiname: ["_initterm_e", "_initterm"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_initterm_e", "_initterm"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_initterm_e", "initterm", "_initterm", "initterm_e"]
helpviewer_keywords: ["initterm function", "initterm_e function", "_initterm function", "_initterm_e function"]
ms.assetid: 85131efe-c747-429a-8897-bcdedb000172
diff --git a/docs/c-runtime-library/reference/invalid-parameter-functions.md b/docs/c-runtime-library/reference/invalid-parameter-functions.md
index 38ccecd354..f07ce41c11 100644
--- a/docs/c-runtime-library/reference/invalid-parameter-functions.md
+++ b/docs/c-runtime-library/reference/invalid-parameter-functions.md
@@ -1,9 +1,10 @@
---
title: "_invalid_parameter, _invalid_parameter_noinfo, _invalid_parameter_noinfo_noreturn, _invoke_watson"
ms.date: "11/04/2016"
-apiname: ["_invalid_parameter", "_invalid_parameter_noinfo", "_invalid_parameter_noinfo_noreturn", "_invoke_watson"]
-apilocation: ["api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_invalid_parameter", "_invalid_parameter_noinfo", "_invalid_parameter_noinfo_noreturn", "_invoke_watson"]
+api_location: ["api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["CORECRT/_invalid_parameter", "_invalid_parameter", "CORECRT/_invalid_parameter_noinfo", "_invalid_parameter_noinfo", "CORECRT/_invalid_parameter_noinfo_noreturn", "_invalid_parameter_noinfo_noreturn", "CORECRT/_invoke_watson", "_invoke_watson"]
ms.assetid: a4d6f1fd-ce56-4783-8719-927151a7a814
---
diff --git a/docs/c-runtime-library/reference/isalnum-iswalnum-isalnum-l-iswalnum-l.md b/docs/c-runtime-library/reference/isalnum-iswalnum-isalnum-l-iswalnum-l.md
index 55d2674550..3cc0ea4d52 100644
--- a/docs/c-runtime-library/reference/isalnum-iswalnum-isalnum-l-iswalnum-l.md
+++ b/docs/c-runtime-library/reference/isalnum-iswalnum-isalnum-l-iswalnum-l.md
@@ -1,9 +1,10 @@
---
title: "isalnum, iswalnum, _isalnum_l, _iswalnum_l"
ms.date: "11/04/2016"
-apiname: ["_iswalnum_l", "_isalnum_l", "iswalnum", "isalnum"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_iswalnum_l", "_isalnum_l", "iswalnum", "isalnum"]
+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-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_istalnum_l", "_iswalnum_l", "iswalnum", "_isalnum_l", "isalnum", "_istalnum"]
helpviewer_keywords: ["_istalnum function", "_ismbcalnum_l function", "iswalnum function", "isalnum function", "istalnum function", "_isalnum_l function", "_istalnum_l function", "_iswalnum_l function"]
ms.assetid: 0dc51306-ade8-4944-af27-e4176fc89093
diff --git a/docs/c-runtime-library/reference/isalpha-iswalpha-isalpha-l-iswalpha-l.md b/docs/c-runtime-library/reference/isalpha-iswalpha-isalpha-l-iswalpha-l.md
index bd6a3b3b75..00a0aee635 100644
--- a/docs/c-runtime-library/reference/isalpha-iswalpha-isalpha-l-iswalpha-l.md
+++ b/docs/c-runtime-library/reference/isalpha-iswalpha-isalpha-l-iswalpha-l.md
@@ -1,9 +1,10 @@
---
title: "isalpha, iswalpha, _isalpha_l, _iswalpha_l"
ms.date: "11/04/2016"
-apiname: ["iswalpha", "_iswalpha_l", "isalpha", "_isalpha_l"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["iswalpha", "_iswalpha_l", "isalpha", "_isalpha_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_istalpha", "_ismbcalpha_l", "isalpha", "_isalpha_l", "iswalpha", "_istalpha_l", "_iswalpha_l"]
helpviewer_keywords: ["_iswalpha_l function", "_isalpha_l function", "_ismbcalpha_l function", "_istalpha_l function", "_ismbcalpha function", "isalpha function", "iswalpha function", "istalpha function", "_istalpha function"]
ms.assetid: ed6cc2be-c4b0-4475-87ac-bc06d8c23064
diff --git a/docs/c-runtime-library/reference/isascii-isascii-iswascii.md b/docs/c-runtime-library/reference/isascii-isascii-iswascii.md
index e190cb4011..ca85b0160b 100644
--- a/docs/c-runtime-library/reference/isascii-isascii-iswascii.md
+++ b/docs/c-runtime-library/reference/isascii-isascii-iswascii.md
@@ -1,9 +1,10 @@
---
title: "isascii, __isascii, iswascii"
ms.date: "11/04/2016"
-apiname: ["iswascii", "__isascii"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["iswascii", "__isascii"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["iswascii", "istascii", "__isascii", "_istascii", "isascii", "ctype/isascii", "ctype/__isascii", "corecrt_wctype/iswascii"]
helpviewer_keywords: ["__isascii function", "_isascii function", "isascii function", "_istascii function", "istascii function", "iswascii function"]
ms.assetid: ba4325ad-7cb3-4fb9-b096-58906d67971a
@@ -53,7 +54,7 @@ For backward compatibility, **isascii** is implemented as a macro only if [_
|**isascii**, **__isascii**|C: \
C++: \ or \|
|**iswascii**|C: \, \, or \
C++: \, \, \, \, or \|
-The **isascii**, **__isascii** and **iswascii** functions are Microsoft specific. For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+The **isascii**, **__isascii** and **iswascii** functions are Microsoft-specific. For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
## See also
diff --git a/docs/c-runtime-library/reference/isatty.md b/docs/c-runtime-library/reference/isatty.md
index 3e2b48f08a..63d71cbdba 100644
--- a/docs/c-runtime-library/reference/isatty.md
+++ b/docs/c-runtime-library/reference/isatty.md
@@ -1,9 +1,10 @@
---
title: "_isatty"
ms.date: "11/04/2016"
-apiname: ["_isatty"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_isatty"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_isatty"]
helpviewer_keywords: ["isatty function", "character device checking", "_isatty function", "checking character devices"]
ms.assetid: 9f1b2e87-0cd7-4079-b187-f2b7ca15fcbe
diff --git a/docs/c-runtime-library/reference/isblank-iswblank-isblank-l-iswblank-l.md b/docs/c-runtime-library/reference/isblank-iswblank-isblank-l-iswblank-l.md
index f90d81e3fe..ead6621f4e 100644
--- a/docs/c-runtime-library/reference/isblank-iswblank-isblank-l-iswblank-l.md
+++ b/docs/c-runtime-library/reference/isblank-iswblank-isblank-l-iswblank-l.md
@@ -1,9 +1,10 @@
---
title: "isblank, iswblank, _isblank_l, _iswblank_l"
ms.date: "11/04/2016"
-apiname: ["isblank", "_isblank_l", "iswblank", "_iswblank_l"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["isblank", "_isblank_l", "iswblank", "_iswblank_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_iswblank_l", "isblank", "_istblank_l", "_istblank", "_isblank_l", "iswblank"]
ms.assetid: 33ce96c0-f387-411a-8283-c3d2a69e56bd
---
diff --git a/docs/c-runtime-library/reference/iscntrl-iswcntrl-iscntrl-l-iswcntrl-l.md b/docs/c-runtime-library/reference/iscntrl-iswcntrl-iscntrl-l-iswcntrl-l.md
index 025d031ded..500739204a 100644
--- a/docs/c-runtime-library/reference/iscntrl-iswcntrl-iscntrl-l-iswcntrl-l.md
+++ b/docs/c-runtime-library/reference/iscntrl-iswcntrl-iscntrl-l-iswcntrl-l.md
@@ -1,9 +1,10 @@
---
title: "iscntrl, iswcntrl, _iscntrl_l, _iswcntrl_l"
ms.date: "11/04/2016"
-apiname: ["iscntrl", "_iswcntrl_l", "_iscntrl_l", "iswcntrl"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["iscntrl", "_iswcntrl_l", "_iscntrl_l", "iswcntrl"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_istcntrl_l", "_iswcntrl_l", "iswcntrl", "_iscntrl_l", "iscntrl", "_istcntrl"]
helpviewer_keywords: ["iscntrl function", "_iscntrl_l function", "_iswcntrl_l function", "_istcntrl function", "istcntrl function", "iswcntrl function", "_istcntrl_l function"]
ms.assetid: 616eebf9-aed4-49ba-ba2c-8677c8fe6fb5
diff --git a/docs/c-runtime-library/reference/iscsym-functions.md b/docs/c-runtime-library/reference/iscsym-functions.md
index 94bd5162c8..14e1024b59 100644
--- a/docs/c-runtime-library/reference/iscsym-functions.md
+++ b/docs/c-runtime-library/reference/iscsym-functions.md
@@ -1,9 +1,10 @@
---
title: "iscsym, iscsymf, __iscsym, __iswcsym, __iscsymf, __iswcsymf, _iscsym_l, _iswcsym_l, _iscsymf_l, _iswcsymf_l"
ms.date: "11/04/2016"
-apiname: ["_iswcsym_l", "__iswcsym", "__iscsym", "_iswcsymf_l", "_iscsym_l", "__iswcsymf", "__iscsymf", "_iscsymf_l"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_iswcsym_l", "__iswcsym", "__iscsym", "_iswcsymf_l", "_iscsym_l", "__iswcsymf", "__iscsymf", "_iscsymf_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_iswcsym_l", "_iswcsymf_l", "iscsymf", "iswcsymf", "__iswcsym", "__iswcsymf", "iscsym", "iswcsym", "__iscsym", "_iscsym_l", "_iscsymf_l", "__iscsymf", "ctype/iscsym", "ctype/iscsymf", "ctype/__iscsym", "ctype/__iscsymf", "ctype/__iscsym_l", "ctype/__iscsymf_l", "ctype/__iswcsym", "ctype/__iswcsymf", "ctype/__iswcsym_l", "ctype/__iswcsymf_l"]
helpviewer_keywords: ["iscsymf_l function", "iswsym_l function", "_iswcsym_l function", "iscsym_l function", "_iscsymf_l function", "_iswcsymf_l function", "_iscsym_l function", "__iscsym function", "__iswcsymf function", "iswsymf_l function", "__iscsymf function", "__iswcsym function", "iscsym function", "iscsymf function"]
ms.assetid: 944dfb99-f2b8-498c-9f55-dbcf370d0a2c
@@ -71,7 +72,7 @@ For backward compatibility, **iscsym** and **iscsymf** are defined as macros onl
|-------------|---------------------|
|**iscsym**, **iscsymf**, **__iscsym**, **__iswcsym**, **__iscsymf**, **__iswcsymf**, **_iscsym_l**, **_iswcsym_l**, **_iscsymf_l**, **_iswcsymf_l**|C: \
C++: \ or \|
-The **iscsym**, **iscsymf**, **__iscsym**, **__iswcsym**, **__iscsymf**, **__iswcsymf**, **_iscsym_l**, **_iswcsym_l**, **_iscsymf_l**, and **_iswcsymf_l** routines are Microsoft specific. For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+The **iscsym**, **iscsymf**, **__iscsym**, **__iswcsym**, **__iscsymf**, **__iswcsymf**, **_iscsym_l**, **_iswcsym_l**, **_iscsymf_l**, and **_iswcsymf_l** routines are Microsoft-specific. For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
## See also
diff --git a/docs/c-runtime-library/reference/isctype-iswctype-isctype-l-iswctype-l.md b/docs/c-runtime-library/reference/isctype-iswctype-isctype-l-iswctype-l.md
index a9fb99caca..3d5ff08742 100644
--- a/docs/c-runtime-library/reference/isctype-iswctype-isctype-l-iswctype-l.md
+++ b/docs/c-runtime-library/reference/isctype-iswctype-isctype-l-iswctype-l.md
@@ -1,9 +1,10 @@
---
title: "_isctype, iswctype, _isctype_l, _iswctype_l"
ms.date: "11/04/2016"
-apiname: ["_isctype_l", "iswctype", "_iswctype_l", "_isctype"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_isctype_l", "iswctype", "_iswctype_l", "_isctype"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["iswctype", "_isctype", "_isctype_l", "_iswctype", "isctype", "iswctype_l", "isctype_l", "_iswctype_l"]
helpviewer_keywords: ["isctype_l function", "iswctype_l function", "iswctype function", "_isctype function", "_isctype_l function", "_iswctype_l function", "isctype function", "_iswctype function"]
ms.assetid: cf7509b7-12fc-4d95-8140-ad2eb98173d3
diff --git a/docs/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md b/docs/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md
index 2ac8d682f9..0841a777f8 100644
--- a/docs/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md
+++ b/docs/c-runtime-library/reference/isdigit-iswdigit-isdigit-l-iswdigit-l.md
@@ -1,9 +1,10 @@
---
title: "isdigit, iswdigit, _isdigit_l, _iswdigit_l"
ms.date: "11/04/2016"
-apiname: ["_isdigit_l", "iswdigit", "_iswdigit_l", "isdigit"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_isdigit_l", "iswdigit", "_iswdigit_l", "isdigit"]
+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-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_iswdigit_l", "_isdigit_l", "iswdigit", "isdigit", "_istdigit", "_istdigit_l"]
helpviewer_keywords: ["iswdigit function", "iswdigit_l function", "_iswdigit_l function", "_istdigit_l function", "_istdigit function", "istdigit function", "isdigit function", "isdigit_l function", "_ismbcdigit_l function", "_isdigit_l function"]
ms.assetid: 350b0093-843a-47b0-954e-c1776e8a3853
diff --git a/docs/c-runtime-library/reference/isgraph-iswgraph-isgraph-l-iswgraph-l.md b/docs/c-runtime-library/reference/isgraph-iswgraph-isgraph-l-iswgraph-l.md
index b7963bc6ee..39bc3bd1ec 100644
--- a/docs/c-runtime-library/reference/isgraph-iswgraph-isgraph-l-iswgraph-l.md
+++ b/docs/c-runtime-library/reference/isgraph-iswgraph-isgraph-l-iswgraph-l.md
@@ -1,9 +1,10 @@
---
title: "isgraph, iswgraph, _isgraph_l, _iswgraph_l"
ms.date: "11/04/2016"
-apiname: ["isgraph", "iswgraph", "_iswgraph_l", "_isgraph_l"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["isgraph", "iswgraph", "_iswgraph_l", "_isgraph_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_isgraph_l", "_iswgraph_l", "_ismbcgraph_l", "Isgraph", "_istgraph_l", "_istgraph", "iswgraph"]
helpviewer_keywords: ["isgraph function", "_istgraph_l function", "istgraph function", "_isgraph_l function", "iswgraph function", "_iswgraph_l function", "_istgraph function", "_ismbcgraph_l function"]
ms.assetid: 531a5f34-4302-4d0a-8a4f-b7ea150ad941
diff --git a/docs/c-runtime-library/reference/isleadbyte-isleadbyte-l.md b/docs/c-runtime-library/reference/isleadbyte-isleadbyte-l.md
index ba4ce8c9c3..fa901e37b6 100644
--- a/docs/c-runtime-library/reference/isleadbyte-isleadbyte-l.md
+++ b/docs/c-runtime-library/reference/isleadbyte-isleadbyte-l.md
@@ -1,9 +1,10 @@
---
title: "isleadbyte, _isleadbyte_l"
ms.date: "11/04/2016"
-apiname: ["_isleadbyte_l", "isleadbyte"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_isleadbyte_l", "isleadbyte"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_istleadbyte", "_isleadbyte_l", "isleadbyte"]
helpviewer_keywords: ["lead bytes", "_isleadbyte_l function", "_istleadbyte function", "istleadbyte function", "isleadbyte function"]
ms.assetid: 3b2bcf09-d82b-4803-9e80-59d04942802a
diff --git a/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md b/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md
index ca0960039b..2f7aea2fde 100644
--- a/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md
+++ b/docs/c-runtime-library/reference/islower-iswlower-islower-l-iswlower-l.md
@@ -1,9 +1,10 @@
---
title: "islower, iswlower, _islower_l, _iswlower_l"
ms.date: "11/04/2016"
-apiname: ["iswlower", "_islower_l", "islower", "_iswlower_l"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["iswlower", "_islower_l", "islower", "_iswlower_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_istlower", "islower", "_ismbclower_l", "_liswlower_l", "_istlower_l", "_iswlower_l", "_islower _l", "_islower_l", "iswlower"]
helpviewer_keywords: ["_islower _l function", "_ismbclower_l function", "islower function", "_iswlower_l function", "_liswlower_l function", "_istlower_l function", "istlower function", "_istlower function", "iswlower function", "_islower_l function"]
ms.assetid: fcc3b70a-2b47-45fd-944d-e5c1942e6457
diff --git a/docs/c-runtime-library/reference/ismbbalnum-ismbbalnum-l.md b/docs/c-runtime-library/reference/ismbbalnum-ismbbalnum-l.md
index 9e55c3e8a2..5e31615954 100644
--- a/docs/c-runtime-library/reference/ismbbalnum-ismbbalnum-l.md
+++ b/docs/c-runtime-library/reference/ismbbalnum-ismbbalnum-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbalnum, _ismbbalnum_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbalnum", "_ismbbalnum_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbalnum", "_ismbbalnum_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbbalnum", "ismbbalnum", "_ismbbalnum_l", "ismbbalnum_l"]
helpviewer_keywords: ["_ismbbalnum_l function", "ismbbalnum function", "ismbbalnum_l function", "_ismbbalnum function"]
ms.assetid: 8025de50-a871-49fd-9ae6-f437b47aa987
diff --git a/docs/c-runtime-library/reference/ismbbalpha-ismbbalpha-l.md b/docs/c-runtime-library/reference/ismbbalpha-ismbbalpha-l.md
index 3273fd0ce3..4a03ba13e5 100644
--- a/docs/c-runtime-library/reference/ismbbalpha-ismbbalpha-l.md
+++ b/docs/c-runtime-library/reference/ismbbalpha-ismbbalpha-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbalpha, _ismbbalpha_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbalpha", "_ismbbalpha_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbalpha", "_ismbbalpha_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ismbbalpha", "ismbbalpha_l", "_ismbbalpha", "_ismbbalpha_l"]
helpviewer_keywords: ["ismbbalpha function", "ismbbalpha_l function", "_ismbbalpha function", "_ismbbalpha_l function"]
ms.assetid: 8e54cb92-fc2b-41f5-8ab4-b22ac8aa9ad0
diff --git a/docs/c-runtime-library/reference/ismbbblank-ismbbblank-l.md b/docs/c-runtime-library/reference/ismbbblank-ismbbblank-l.md
index d4c37b4b12..17f416618e 100644
--- a/docs/c-runtime-library/reference/ismbbblank-ismbbblank-l.md
+++ b/docs/c-runtime-library/reference/ismbbblank-ismbbblank-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbblank, _ismbbblank_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbblank_l", "_ismbbblank"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbblank_l", "_ismbbblank"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
ms.assetid: d21b2e41-7206-41f5-85bb-9c9ab4f3e21b
---
# _ismbbblank, _ismbbblank_l
diff --git a/docs/c-runtime-library/reference/ismbbgraph-ismbbgraph-l.md b/docs/c-runtime-library/reference/ismbbgraph-ismbbgraph-l.md
index dbc88a624a..b89dcf88c5 100644
--- a/docs/c-runtime-library/reference/ismbbgraph-ismbbgraph-l.md
+++ b/docs/c-runtime-library/reference/ismbbgraph-ismbbgraph-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbgraph, _ismbbgraph_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbgraph_l", "_ismbbgraph"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbgraph_l", "_ismbbgraph"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbbgraph", "_ismbbgraph_l", "ismbbgraph", "ismbbgraph_l"]
helpviewer_keywords: ["_ismbbgraph_l function", "ismbbgraph_l function", "_ismbbgraph function", "ismbbgraph function"]
ms.assetid: b60db718-134f-4796-acc1-592d0b9efbb7
diff --git a/docs/c-runtime-library/reference/ismbbkalnum-ismbbkalnum-l.md b/docs/c-runtime-library/reference/ismbbkalnum-ismbbkalnum-l.md
index d8aaa21296..9e6bccd71d 100644
--- a/docs/c-runtime-library/reference/ismbbkalnum-ismbbkalnum-l.md
+++ b/docs/c-runtime-library/reference/ismbbkalnum-ismbbkalnum-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbkalnum, _ismbbkalnum_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbkalnum", "_ismbbkalnum_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbkalnum", "_ismbbkalnum_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbbkalnum", "ismbbkalnum", "ismbbkalnum_l", "_ismbbkalnum_l"]
helpviewer_keywords: ["_ismbbkalnum_l function", "ismbbkalnum_l function", "_ismbbkalnum function", "ismbbkalnum function"]
ms.assetid: e1d70e7b-29d0-469c-9d93-442b99de22ac
diff --git a/docs/c-runtime-library/reference/ismbbkana-ismbbkana-l.md b/docs/c-runtime-library/reference/ismbbkana-ismbbkana-l.md
index 03f8c7e932..a738eb73ab 100644
--- a/docs/c-runtime-library/reference/ismbbkana-ismbbkana-l.md
+++ b/docs/c-runtime-library/reference/ismbbkana-ismbbkana-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbkana, _ismbbkana_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbkana_l", "_ismbbkana"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbkana_l", "_ismbbkana"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbbkana_l", "ismbbkana_l", "ismbbkana", "_ismbbkana"]
helpviewer_keywords: ["_ismbbkana_l function", "_ismbbkana function", "ismbbkana function", "ismbbkana_l function"]
ms.assetid: 64d4eb4a-205a-40ef-be35-ff9d77fabbaf
diff --git a/docs/c-runtime-library/reference/ismbbkprint-ismbbkprint-l.md b/docs/c-runtime-library/reference/ismbbkprint-ismbbkprint-l.md
index 81f1ea236c..32fafacf4f 100644
--- a/docs/c-runtime-library/reference/ismbbkprint-ismbbkprint-l.md
+++ b/docs/c-runtime-library/reference/ismbbkprint-ismbbkprint-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbkprint, _ismbbkprint_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbkprint", "_ismbbkprint_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbkprint", "_ismbbkprint_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbbkprint_l", "ismbbkprint", "_ismbbkprint", "ismbbkprint_l"]
helpviewer_keywords: ["_ismbbkprint function", "ismbbkprint_l function", "ismbbkprint function", "_ismbbkprint_l function"]
ms.assetid: 8d1d3258-1e34-4365-81ed-97c95de25475
diff --git a/docs/c-runtime-library/reference/ismbbkpunct-ismbbkpunct-l.md b/docs/c-runtime-library/reference/ismbbkpunct-ismbbkpunct-l.md
index 674c51f598..89ffc0056c 100644
--- a/docs/c-runtime-library/reference/ismbbkpunct-ismbbkpunct-l.md
+++ b/docs/c-runtime-library/reference/ismbbkpunct-ismbbkpunct-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbkpunct, _ismbbkpunct_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbkpunct_l", "_ismbbkpunct"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbkpunct_l", "_ismbbkpunct"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ismbbkpunct_l", "_ismbbkpunct_l", "ismbbkpunct", "_ismbbkpunct"]
helpviewer_keywords: ["_ismbbkpunct_l function", "ismbbkpunct_l function", "ismbbkpunct function", "_ismbbkpunct function"]
ms.assetid: a04c59cd-5ca7-4296-bec0-2b0d7f04edd0
diff --git a/docs/c-runtime-library/reference/ismbblead-ismbblead-l.md b/docs/c-runtime-library/reference/ismbblead-ismbblead-l.md
index 805cf1a834..1104dc5735 100644
--- a/docs/c-runtime-library/reference/ismbblead-ismbblead-l.md
+++ b/docs/c-runtime-library/reference/ismbblead-ismbblead-l.md
@@ -1,16 +1,18 @@
---
title: "_ismbblead, _ismbblead_l"
-ms.date: "11/04/2016"
-apiname: ["_ismbblead_l", "_ismbblead"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "Describes the Microsoft C Runtime Library (CRT) _ismbblead and _ismbblead_l functions."
+ms.date: "01/08/2020"
+api_name: ["_ismbblead_l", "_ismbblead"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ismbblead_l", "istlead", "_ismbblead", "_ismbblead_l", "ismbblead", "_istlead"]
helpviewer_keywords: ["_ismbblead_l function", "ismbblead function", "_ismbblead function", "istlead function", "ismbblead_l function", "_istlead function"]
ms.assetid: 2abc6f75-ed5c-472e-bfd0-e905a1835ccf
---
# _ismbblead, _ismbblead_l
-Tests a character to determine whether it is a lead byte of a multibyte character.
+Tests a character to determine whether it's a lead byte of a multibyte character.
## Syntax
@@ -26,13 +28,13 @@ int _ismbblead_l(
### Parameters
-*c*
+*c*\
Integer to be tested.
-*locale*
+*locale*\
Locale to use.
-## Return Value
+## Return value
Returns a nonzero value if the integer *c* is the first byte of a multibyte character.
@@ -42,7 +44,11 @@ Multibyte characters consist of a lead byte followed by a trailing byte. Lead by
**_ismbblead** uses the current locale for locale-dependent behavior. **_ismbblead_l** is identical except that it uses the locale passed in instead. For more information, see [Locale](../../c-runtime-library/locale.md).
-### Generic-Text Routine Mappings
+When the locale is UTF-8, **_ismbblead** and **_ismbblead_l** always return 0 (false), whether *c* is a lead byte or not.
+
+**_ismbblead** and **_ismbblead_l** are Microsoft-specific, not part of the Standard C library. We don't recommend you use them where you want portable code. For Standard C compatibility, use **mbrlen** instead.
+
+### Generic-text routine mappings
|Tchar.h routine|_UNICODE and _MBCS not defined|_MBCS defined|_UNICODE defined|
|---------------------|--------------------------------------|--------------------|-----------------------|
@@ -61,5 +67,6 @@ For more compatibility information, see [Compatibility](../../c-runtime-library/
## See also
-[Byte Classification](../../c-runtime-library/byte-classification.md)
-[_ismbb Routines](../../c-runtime-library/ismbb-routines.md)
+[Byte classification](../../c-runtime-library/byte-classification.md)\
+[_ismbb routines](../../c-runtime-library/ismbb-routines.md)\
+[mbrlen](mbrlen.md)
diff --git a/docs/c-runtime-library/reference/ismbbprint-ismbbprint-l.md b/docs/c-runtime-library/reference/ismbbprint-ismbbprint-l.md
index fcedceaad9..5ebb0bb50d 100644
--- a/docs/c-runtime-library/reference/ismbbprint-ismbbprint-l.md
+++ b/docs/c-runtime-library/reference/ismbbprint-ismbbprint-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbprint, _ismbbprint_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbprint_l", "_ismbbprint"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbprint_l", "_ismbbprint"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbbprint_l", "_ismbbprint", "ismbbprint", "ismbbprint_l"]
helpviewer_keywords: ["ismbbprint_l function", "ismbbprint function", "_ismbbprint function", "_ismbbprint_l function"]
ms.assetid: d08a061c-18a8-48f2-a75d-bff4870aec9d
diff --git a/docs/c-runtime-library/reference/ismbbpunct-ismbbpunct-l.md b/docs/c-runtime-library/reference/ismbbpunct-ismbbpunct-l.md
index bd692fcf5b..9a3a4dd5c9 100644
--- a/docs/c-runtime-library/reference/ismbbpunct-ismbbpunct-l.md
+++ b/docs/c-runtime-library/reference/ismbbpunct-ismbbpunct-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbpunct, _ismbbpunct_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbpunct", "_ismbbpunct_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbpunct", "_ismbbpunct_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ismbbpunct", "ismbbpunct_l", "_ismbbpunct_l", "_ismbbpunct"]
helpviewer_keywords: ["ismbbpunct function", "_ismbbpunct function", "ismbbpunct_l function", "_ismbbpunct_l function"]
ms.assetid: 1976c9d3-7d1a-415f-ac52-2715c7bb56eb
diff --git a/docs/c-runtime-library/reference/ismbbtrail-ismbbtrail-l.md b/docs/c-runtime-library/reference/ismbbtrail-ismbbtrail-l.md
index d36a447f06..c8bcadbbe4 100644
--- a/docs/c-runtime-library/reference/ismbbtrail-ismbbtrail-l.md
+++ b/docs/c-runtime-library/reference/ismbbtrail-ismbbtrail-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbbtrail, _ismbbtrail_l"
ms.date: "11/04/2016"
-apiname: ["_ismbbtrail", "_ismbbtrail_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbbtrail", "_ismbbtrail_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbbtrail", "ismbbtrail", "_ismbbtrail_l", "ismbbtrail_l"]
helpviewer_keywords: ["ismbbtrail_l function", "_ismbbtrail function", "_ismbbtrail_l function", "ismbbtrail function"]
ms.assetid: dfdd0292-960b-4c1d-bf11-146e0fc80247
diff --git a/docs/c-runtime-library/reference/ismbcalnum-functions.md b/docs/c-runtime-library/reference/ismbcalnum-functions.md
index 1daf3c3588..f51f543458 100644
--- a/docs/c-runtime-library/reference/ismbcalnum-functions.md
+++ b/docs/c-runtime-library/reference/ismbcalnum-functions.md
@@ -1,9 +1,10 @@
---
title: "_ismbcalnum, _ismbcalnum_l, _ismbcalpha, _ismbcalpha_l, _ismbcdigit, _ismbcdigit_l"
ms.date: "11/04/2016"
-apiname: ["_ismbcalpha", "_ismbcalnum", "_ismbcdigit", "_ismbcalnum_l", "_ismbcdigit_l", "_ismbcalpha_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbcalpha", "_ismbcalnum", "_ismbcdigit", "_ismbcalnum_l", "_ismbcdigit_l", "_ismbcalpha_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbcdigit", "ismbcalnum_l", "_ismbcdigit_l", "_ismbcalpha", "ismbcalnum", "ismbcdigit", "ismbcalpha", "_ismbcalnum_l", "_ismbcalnum", "ismbcdigit_l"]
helpviewer_keywords: ["ismbcalpha function", "_ismbcalnum function", "ismbcdigit_l function", "_ismbcalnum_l function", "_ismbcdigit function", "ismbcalnum function", "_ismbcalpha_l function", "ismbcdigit function", "_ismbcalpha function", "_ismbcdigit_l function", "ismbcalnum_l function", "ismbcalpha_l function"]
ms.assetid: 12d57925-aebe-46e0-80b0-82b84c4c31ec
diff --git a/docs/c-runtime-library/reference/ismbcgraph-functions.md b/docs/c-runtime-library/reference/ismbcgraph-functions.md
index 7ed238a14c..e7dff4ea07 100644
--- a/docs/c-runtime-library/reference/ismbcgraph-functions.md
+++ b/docs/c-runtime-library/reference/ismbcgraph-functions.md
@@ -1,9 +1,10 @@
---
title: "_ismbcgraph, _ismbcgraph_l, _ismbcprint, _ismbcprint_l, _ismbcpunct, _ismbcpunct_l, _ismbcblank, _ismbcblank_l, _ismbcspace, _ismbcspace_l"
ms.date: "11/04/2016"
-apiname: ["_ismbcpunct_l", "_ismbcblank", "_ismbcprint", "_ismbcgraph_l", "_ismbcblank_l", "_ismbcpunct", "_ismbcprint_l", "_ismbcspace_l", "_ismbcspace", "_ismbcgraph"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbcpunct_l", "_ismbcblank", "_ismbcprint", "_ismbcgraph_l", "_ismbcblank_l", "_ismbcpunct", "_ismbcprint_l", "_ismbcspace_l", "_ismbcspace", "_ismbcgraph"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbcspace", "_ismbcgraph", "_ismbcpunct", "ismbcspace_l", "ismbcgraph", "_ismbcgraph_l", "_ismbcprint", "_ismbcspace_l", "ismbcprint", "ismbcgraph_l", "ismbcspace", "ismbcpunct"]
helpviewer_keywords: ["ismbcspace_l function", "_ismbcprint_l function", "ismbcspace function", "ismbcpunct function", "_ismbcspace_l function", "_ismbcprint function", "ismbcprint function", "_ismbcgraph function", "ismbcgraph_l function", "_ismbcpunct_l function", "ismbcpunct_l function", "ismbcprint_l function", "_ismbcpunct function", "ismbcgraph function", "_ismbcgraph_l function", "_ismbcspace function"]
ms.assetid: 8e0a5f47-ba64-4411-92a3-3c525d16e3be
diff --git a/docs/c-runtime-library/reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md b/docs/c-runtime-library/reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md
index f356565e0e..9dad6be7d8 100644
--- a/docs/c-runtime-library/reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md
+++ b/docs/c-runtime-library/reference/ismbchira-ismbchira-l-ismbckata-ismbckata-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbchira, _ismbchira_l, _ismbckata, _ismbckata_l"
ms.date: "11/04/2016"
-apiname: ["_ismbckata", "_ismbchira_l", "_ismbchira", "_ismbckata_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbckata", "_ismbchira_l", "_ismbchira", "_ismbckata_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ismbckata_l", "_ismbckata_l", "ismbckata", "ismbchira", "_ismbckata", "ismbchira_l", "_ismbchira_l", "_ismbchira"]
helpviewer_keywords: ["_ismbckata function", "_ismbchira function", "_ismbckata_l function", "Katakana", "ismbchira function", "_ismbchira_l function", "ismbchira_l function", "ismbdkata_l function", "Hiragana", "ismbckata function"]
ms.assetid: 2db388a2-be31-489b-81c8-f6bf3f0582d3
diff --git a/docs/c-runtime-library/reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md b/docs/c-runtime-library/reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md
index bf7bf297d1..7504c3a4aa 100644
--- a/docs/c-runtime-library/reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md
+++ b/docs/c-runtime-library/reference/ismbcl0-ismbcl0-l-ismbcl1-ismbcl1-l-ismbcl2-ismbcl2-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbcl0, _ismbcl0_l, _ismbcl1, _ismbcl1_l, _ismbcl2, _ismbcl2_l"
ms.date: "11/04/2016"
-apiname: ["_ismbcl2", "_ismbcl1", "_ismbcl0", "_ismbcl2_l", "_ismbcl1_l", "_ismbcl0_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbcl2", "_ismbcl1", "_ismbcl0", "_ismbcl2_l", "_ismbcl1_l", "_ismbcl0_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ismbcl0", "_ismbcl1_l", "_ismbcl0", "ismbcl1", "ismbcl0_l", "_ismbcl2_l", "ismbcl2", "ismbcl1_l", "_ismbcl1", "_ismbcl0_l", "_ismbcl2", "ismbcl2_l"]
helpviewer_keywords: ["_ismbcl0_l function", "_ismbcl2 function", "_ismbcl1_l function", "ismbcl2 function", "_ismbcl1 function", "ismbcl0_l function", "ismbcl2_l function", "ismbcl1_l function", "ismbcl0 function", "ismbcl1 function", "_ismbcl2_l function", "_ismbcl0 function"]
ms.assetid: ee15ebd1-462c-4a43-95f3-6735836d626a
diff --git a/docs/c-runtime-library/reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md b/docs/c-runtime-library/reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md
index f677fea66a..1749dcda8b 100644
--- a/docs/c-runtime-library/reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md
+++ b/docs/c-runtime-library/reference/ismbclegal-ismbclegal-l-ismbcsymbol-ismbcsymbol-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbclegal, _ismbclegal_l, _ismbcsymbol, _ismbcsymbol_l"
ms.date: "11/04/2016"
-apiname: ["_ismbclegal_l", "_ismbclegal", "_ismbcsymbol", "_ismbcsymbol_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbclegal_l", "_ismbclegal", "_ismbcsymbol", "_ismbcsymbol_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ismbcsymbol_l", "_ismbcsymbol_l", "_ismbcsymbol", "_ismbclegal_l", "_ismbclegal", "ismbclegal_l", "ismbcsymbol", "ismbclegal"]
helpviewer_keywords: ["ismbcsymbol function", "ismbclegal_l function", "_istlegal_l function", "istlegal function", "_istlegal function", "_ismbcsymbol function", "_ismbclegal_l function", "ismbclegal function", "ismbcsymbol_l function", "_ismbclegal function", "_ismbcsymbol_l function", "istlegal_l function"]
ms.assetid: 31bf1ea5-b56f-4e28-b21e-b49a2cf93ffc
diff --git a/docs/c-runtime-library/reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md b/docs/c-runtime-library/reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md
index 63c018581c..b8db68358d 100644
--- a/docs/c-runtime-library/reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md
+++ b/docs/c-runtime-library/reference/ismbclower-ismbclower-l-ismbcupper-ismbcupper-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbclower, _ismbclower_l, _ismbcupper, _ismbcupper_l"
ms.date: "11/04/2016"
-apiname: ["_ismbclower", "_ismbclower_l", "_ismbcupper_l", "_ismbcupper"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbclower", "_ismbclower_l", "_ismbcupper_l", "_ismbcupper"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbcupper", "_ismbclower"]
helpviewer_keywords: ["_ismbcupper function", "ismbclower function", "_ismbclower_l function", "ismbcupper_l function", "_ismbclower function", "ismbcupper function", "ismbclower_l function", "_ismbcupper_l function"]
ms.assetid: 17d89587-65bc-477c-ba8f-a84e63cf59e7
diff --git a/docs/c-runtime-library/reference/ismbslead-ismbstrail-ismbslead-l-ismbstrail-l.md b/docs/c-runtime-library/reference/ismbslead-ismbstrail-ismbslead-l-ismbstrail-l.md
index 328ab398a7..bac438fddd 100644
--- a/docs/c-runtime-library/reference/ismbslead-ismbstrail-ismbslead-l-ismbstrail-l.md
+++ b/docs/c-runtime-library/reference/ismbslead-ismbstrail-ismbslead-l-ismbstrail-l.md
@@ -1,9 +1,10 @@
---
title: "_ismbslead, _ismbstrail, _ismbslead_l, _ismbstrail_l"
ms.date: "11/04/2016"
-apiname: ["_ismbstrail", "_ismbslead_l", "_ismbslead", "_ismbstrail_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ismbstrail", "_ismbslead_l", "_ismbslead", "_ismbstrail_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ismbslead", "ismbs", "ismbslead_l", "_ismbs", "ismbstrail_l", "ismbslead", "_ismbstrail", "_ismbstrail_l", "ismbstrail", "_ismbslead_l"]
helpviewer_keywords: ["ismbstrail function", "_ismbslead function", "ismbslead function", "ismbslead_l function", "_ismbstrail function", "_ismbslead_l function", "ismbstrail_l function", "_ismbstrail_l function"]
ms.assetid: 86d2cd7a-3cff-443a-b713-14cc17a231e9
diff --git a/docs/c-runtime-library/reference/isnan-isnan-isnanf.md b/docs/c-runtime-library/reference/isnan-isnan-isnanf.md
index 837d52bd9a..2a3ab36116 100644
--- a/docs/c-runtime-library/reference/isnan-isnan-isnanf.md
+++ b/docs/c-runtime-library/reference/isnan-isnan-isnanf.md
@@ -1,9 +1,10 @@
---
title: "isnan, _isnan, _isnanf"
ms.date: "01/31/2019"
-apiname: ["_isnan", "_isnanf", "isnan"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_isnan", "_isnanf", "isnan"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_isnan", "isnan", "math/isnan", "math/_isnan", "math/_isnanf", "_isnanf"]
helpviewer_keywords: ["NAN (not a number)", "_isnan function", "IEEE floating-point representation", "Not a Number (NANs)", "isnan function"]
ms.assetid: 391fbc5b-89a4-4fba-997e-68f1131caf82
diff --git a/docs/c-runtime-library/reference/isprint-iswprint-isprint-l-iswprint-l.md b/docs/c-runtime-library/reference/isprint-iswprint-isprint-l-iswprint-l.md
index cf9f25dbd8..8caa6f4b60 100644
--- a/docs/c-runtime-library/reference/isprint-iswprint-isprint-l-iswprint-l.md
+++ b/docs/c-runtime-library/reference/isprint-iswprint-isprint-l-iswprint-l.md
@@ -1,9 +1,10 @@
---
title: "isprint, iswprint, _isprint_l, _iswprint_l"
ms.date: "11/04/2016"
-apiname: ["iswprint", "isprint", "_isprint_l", "_iswprint_l"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["iswprint", "isprint", "_isprint_l", "_iswprint_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["iswprint", "_istprint", "isprint"]
helpviewer_keywords: ["_istprint function", "iswprint function", "_iswprint_l function", "isprint_l function", "istprint function", "isprint function", "iswprint_l function", "_isprint_l function"]
ms.assetid: a8bbcdb0-e8d0-4d8c-ae4e-56d3bdee6ca3
diff --git a/docs/c-runtime-library/reference/ispunct-iswpunct-ispunct-l-iswpunct-l.md b/docs/c-runtime-library/reference/ispunct-iswpunct-ispunct-l-iswpunct-l.md
index 6259be6776..13292eae09 100644
--- a/docs/c-runtime-library/reference/ispunct-iswpunct-ispunct-l-iswpunct-l.md
+++ b/docs/c-runtime-library/reference/ispunct-iswpunct-ispunct-l-iswpunct-l.md
@@ -1,9 +1,10 @@
---
title: "ispunct, iswpunct, _ispunct_l, _iswpunct_l"
ms.date: "11/04/2016"
-apiname: ["ispunct", "_iswpunct_l", "iswpunct", "_ispunct_l"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ispunct", "_iswpunct_l", "iswpunct", "_ispunct_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["iswpunct", "_istpunct", "ispunct"]
helpviewer_keywords: ["_istpunct function", "_ispunct_l function", "iswpunct function", "ispunct function", "istpunct function", "ispunct_l function", "_iswpunct_l function", "iswpunct_l function"]
ms.assetid: 94403240-85c8-40a4-9c2b-e3e95c729c76
diff --git a/docs/c-runtime-library/reference/isspace-iswspace-isspace-l-iswspace-l.md b/docs/c-runtime-library/reference/isspace-iswspace-isspace-l-iswspace-l.md
index 00cc911a14..eb02ce7b44 100644
--- a/docs/c-runtime-library/reference/isspace-iswspace-isspace-l-iswspace-l.md
+++ b/docs/c-runtime-library/reference/isspace-iswspace-isspace-l-iswspace-l.md
@@ -1,9 +1,10 @@
---
title: "isspace, iswspace, _isspace_l, _iswspace_l"
ms.date: "11/04/2016"
-apiname: ["iswspace", "_isspace_l", "_iswspace_l", "isspace"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["iswspace", "_isspace_l", "_iswspace_l", "isspace"]
+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-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["iswspace", "_istspace", "isspace"]
helpviewer_keywords: ["iswspace function", "isspace function", "_iswspace_l function", "_isspace_l function", "iswspace_l function", "isspace_l function", "_istspace function", "istspace function"]
ms.assetid: b851e0c0-36bb-4dac-a1a3-533540939035
diff --git a/docs/c-runtime-library/reference/isupper-isupper-l-iswupper-iswupper-l.md b/docs/c-runtime-library/reference/isupper-isupper-l-iswupper-iswupper-l.md
index 6baac40508..949977a6d9 100644
--- a/docs/c-runtime-library/reference/isupper-isupper-l-iswupper-iswupper-l.md
+++ b/docs/c-runtime-library/reference/isupper-isupper-l-iswupper-iswupper-l.md
@@ -1,9 +1,10 @@
---
title: "isupper, _isupper_l, iswupper, _iswupper_l"
ms.date: "11/04/2016"
-apiname: ["isupper", "iswupper", "_iswupper_l", "_isupper_l"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["isupper", "iswupper", "_iswupper_l", "_isupper_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["isupper", "_istupper", "iswupper"]
helpviewer_keywords: ["istupper function", "iswupper function", "isupper_l function", "_isupper_l function", "iswupper_l function", "_istupper function", "_iswupper_l function", "isupper function"]
ms.assetid: da2bcc9f-241c-48c0-9a0e-ad273827e16a
diff --git a/docs/c-runtime-library/reference/isxdigit-iswxdigit-isxdigit-l-iswxdigit-l.md b/docs/c-runtime-library/reference/isxdigit-iswxdigit-isxdigit-l-iswxdigit-l.md
index e98bf2a983..cd12631cb3 100644
--- a/docs/c-runtime-library/reference/isxdigit-iswxdigit-isxdigit-l-iswxdigit-l.md
+++ b/docs/c-runtime-library/reference/isxdigit-iswxdigit-isxdigit-l-iswxdigit-l.md
@@ -1,9 +1,10 @@
---
title: "isxdigit, iswxdigit, _isxdigit_l, _iswxdigit_l"
ms.date: "11/04/2016"
-apiname: ["_iswxdigit_l", "iswxdigit", "isxdigit", "_isxdigit_l"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_iswxdigit_l", "iswxdigit", "isxdigit", "_isxdigit_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["iswxdigit", "isxdigit", "_istxdigit"]
helpviewer_keywords: ["isxdigit function", "istxdigit function", "_iswxdigit_l function", "_istxdigit function", "_isxdigit_l function", "iswxdigit_l function", "isxdigit_l function", "hexadecimal characters", "iswxdigit function"]
ms.assetid: c8bc5146-0b58-4e3f-bee3-f2318dd0f829
diff --git a/docs/c-runtime-library/reference/itoa-itow.md b/docs/c-runtime-library/reference/itoa-itow.md
index 29116592a0..a3d50af4dc 100644
--- a/docs/c-runtime-library/reference/itoa-itow.md
+++ b/docs/c-runtime-library/reference/itoa-itow.md
@@ -1,9 +1,10 @@
---
title: "_itoa, _itow functions"
ms.date: "08/19/2019"
-apiname: ["itoa", "_itoa", "ltoa", "_ltoa", "ultoa", "_ultoa", "_i64toa", "_ui64toa", "_itow", "_ltow", "_ultow", "_i64tow", "_ui64tow"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["itoa", "_itoa", "ltoa", "_ltoa", "ultoa", "_ultoa", "_i64toa", "_ui64toa", "_itow", "_ltow", "_ultow", "_i64tow", "_ui64tow"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_itoa", "_ltoa", "_ultoa", "_i64toa", "_ui64toa", "_itow", "_ltow", "_ultow", "_i64tow", "_ui64tow", "itoa", "ltoa", "ultoa", "i64toa", "ui64toa", "itow", "ltow", "ultow", "i64tow", "ui64tow", "itot", "_itot", "ltot", "_ltot", "ultot", "_ultot", "i64tot", "_i64tot", "ui64tot", "_ui64tot", "_MAX_ITOSTR_BASE16_COUNT", "_MAX_ITOSTR_BASE10_COUNT", "_MAX_ITOSTR_BASE8_COUNT", "_MAX_ITOSTR_BASE2_COUNT", "_MAX_LTOSTR_BASE16_COUNT", "_MAX_LTOSTR_BASE10_COUNT", "_MAX_LTOSTR_BASE8_COUNT", "_MAX_LTOSTR_BASE2_COUNT", "_MAX_ULTOSTR_BASE16_COUNT", "_MAX_ULTOSTR_BASE10_COUNT", "_MAX_ULTOSTR_BASE8_COUNT", "_MAX_ULTOSTR_BASE2_COUNT", "_MAX_I64TOSTR_BASE16_COUNT", "_MAX_I64TOSTR_BASE10_COUNT", "_MAX_I64TOSTR_BASE8_COUNT", "_MAX_I64TOSTR_BASE2_COUNT", "_MAX_U64TOSTR_BASE16_COUNT", "_MAX_U64TOSTR_BASE10_COUNT", "_MAX_U64TOSTR_BASE8_COUNT", "_MAX_U64TOSTR_BASE2_COUNT"]
helpviewer_keywords: ["_itot function", "ui64toa function", "_ui64toa function", "converting integers", "itot function", "_i64tow function", "_i64toa function", "_itow function", "ui64tow function", "integers, converting", "itoa function", "_ui64tow function", "i64tow function", "itow function", "i64toa function", "converting numbers, to strings", "_itoa function"]
ms.assetid: 46592a00-77bb-4e73-98c0-bf629d96cea6
@@ -27,7 +28,7 @@ wchar_t * _ultow( unsigned long value, wchar_t *buffer, int radix );
wchar_t * _i64tow( long long value, wchar_t *buffer, int radix );
wchar_t * _ui64tow( unsigned long long value, wchar_t *buffer, int radix );
-// These Posix versions of the functions have deprecated names:
+// These POSIX versions of the functions have deprecated names:
char * itoa( int value, char *buffer, int radix );
char * ltoa( long value, char *buffer, int radix );
char * ultoa( unsigned long value, char *buffer, int radix );
@@ -101,9 +102,9 @@ To use these functions without the deprecation warning, define the **_CRT_SECURE
In C++, these functions have template overloads that invoke their safer counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The Posix names **itoa**, **ltoa**, and **ultoa** exist as aliases for the **_itoa**, **_ltoa**, and **_ultoa** functions. The Posix names are deprecated because they do not follow the implementation-specific function name conventions of ISO C. By default, these functions cause deprecation warning [C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md): **The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name:** *new_name*. We recommend you change your source code to use the safer versions of these functions, **_itoa_s**, **_ltoa_s**, or **_ultoa_s**. For more information, see [_itoa_s, _itow_s functions](itoa-s-itow-s.md).
+The POSIX names **itoa**, **ltoa**, and **ultoa** exist as aliases for the **_itoa**, **_ltoa**, and **_ultoa** functions. The POSIX names are deprecated because they do not follow the implementation-specific global function name conventions of ISO C. By default, these functions cause deprecation warning [C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md): **The POSIX name for this item is deprecated. Instead, use the ISO C and C++ conformant name:** *new_name*. We recommend you change your source code to use the safer versions of these functions, **_itoa_s**, **_ltoa_s**, or **_ultoa_s**. For more information, see [_itoa_s, _itow_s functions](itoa-s-itow-s.md).
-For source code portability, you may prefer to retain the Posix names in your code. To use these functions without the deprecation warning, define both the **_CRT_NONSTDC_NO_WARNINGS** and **_CRT_SECURE_NO_WARNINGS** preprocessor macros before including any CRT headers. You can do this on the command line in a developer command prompt by adding the **/D_CRT_SECURE_NO_WARNINGS** and **/D_CRT_NONSTDC_NO_WARNINGS** compiler options to the **cl** command. Otherwise, define the macros in your source files. If you use precompiled headers, define the macros at the top of the precompiled header include file. To define the macros in your source code, use **#define** directives before you include any CRT header, as in this example:
+For source code portability, you may prefer to retain the POSIX names in your code. To use these functions without the deprecation warning, define both the **_CRT_NONSTDC_NO_WARNINGS** and **_CRT_SECURE_NO_WARNINGS** preprocessor macros before including any CRT headers. You can do this on the command line in a developer command prompt by adding the **/D_CRT_SECURE_NO_WARNINGS** and **/D_CRT_NONSTDC_NO_WARNINGS** compiler options to the **cl** command. Otherwise, define the macros in your source files. If you use precompiled headers, define the macros at the top of the precompiled header include file. To define the macros in your source code, use **#define** directives before you include any CRT header, as in this example:
```C
#define _CRT_NONSTDC_NO_WARNINGS 1
diff --git a/docs/c-runtime-library/reference/itoa-s-itow-s.md b/docs/c-runtime-library/reference/itoa-s-itow-s.md
index 5049e1d45b..b2a4bc2096 100644
--- a/docs/c-runtime-library/reference/itoa-s-itow-s.md
+++ b/docs/c-runtime-library/reference/itoa-s-itow-s.md
@@ -1,9 +1,10 @@
---
title: "_itoa_s, _itow_s functions"
ms.date: "03/21/2018"
-apiname: ["_itoa_s", "_ltoa_s", "_ultoa_s", "_i64toa_s", "_ui64toa_s", "_itow_s", "_ltow_s", "_ultow_s", "_i64tow_s", "_ui64tow_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_itoa_s", "_ltoa_s", "_ultoa_s", "_i64toa_s", "_ui64toa_s", "_itow_s", "_ltow_s", "_ultow_s", "_i64tow_s", "_ui64tow_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_itoa_s", "_ltoa_s", "_ultoa_s", "_i64toa_s", "_ui64toa_s", "_itow_s", "_ltow_s", "_ultow_s", "_i64tow_s", "_ui64tow_s", "_itot_s", "_ltot_s", "_ultot_s", "_i64tot_s", "_ui64tot_s", "itoa_s", "ltoa_s", "ultoa_s", "i64toa_s", "ui64toa_s", "itow_s", "ltow_s", "ultow_s", "i64tow_s", "ui64tow_s", "itot_s", "ltot_s", "ultot_s", "i64tot_s", "ui64tot_s"]
helpviewer_keywords: ["_ui64toa_s function", "_itow_s function", "_i64tow_s function", "_itot_s function", "converting integers", "itow_s function", "i64toa_s function", "_ui64tow_s function", "integers, converting", "_i64tot_s function", "itoa_s function", "_itoa_s function", "ui64toa_s function", "i64tow_s function", "converting numbers, to strings", "_ui64tot_s function", "_i64toa_s function"]
ms.assetid: eb746581-bff3-48b5-a973-bfc0a4478ecf
@@ -92,7 +93,7 @@ Except for the parameters and return value, the **_itoa_s** and **_itow_s** func
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug library versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
The CRT includes convenient macros to define the size of the buffer required to convert the longest possible value of each integer type, including the null terminator and sign character, for several common bases. For information, see [Maximum conversion count macros](itoa-itow.md#maximum-conversion-count-macros).
diff --git a/docs/c-runtime-library/reference/j0-j1-jn.md b/docs/c-runtime-library/reference/j0-j1-jn.md
index 7394f44ab5..bcebca2552 100644
--- a/docs/c-runtime-library/reference/j0-j1-jn.md
+++ b/docs/c-runtime-library/reference/j0-j1-jn.md
@@ -1,13 +1,16 @@
---
title: "j0, j1, jn"
-ms.date: "11/04/2016"
-apiname: ["jn", "j0", "j1"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["jn", "j0", "j1"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["jn", "j1", "j0"]
helpviewer_keywords: ["jn function", "j1 function", "j0 function"]
ms.assetid: ec8a9512-aacb-423c-a845-fc8927e6e21d
---
# j0, j1, jn
-These POSIX functions are deprecated. Use the ISO C++ conformant [_j0, _j1, _jn](bessel-functions-j0-j1-jn-y0-y1-yn.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function names `j0`, `j1`, and `jn` are deprecated aliases for the [_j0, _j1, and _jn](bessel-functions-j0-j1-jn-y0-y1-yn.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_j0, _j1, and _jn](bessel-functions-j0-j1-jn-y0-y1-yn.md) instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/kbhit.md b/docs/c-runtime-library/reference/kbhit.md
index bd131b0a97..87db76c137 100644
--- a/docs/c-runtime-library/reference/kbhit.md
+++ b/docs/c-runtime-library/reference/kbhit.md
@@ -1,9 +1,10 @@
---
title: "_kbhit"
ms.date: "11/04/2016"
-apiname: ["_kbhit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_kbhit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_kbhit", "kbhit", "conio/_kbhit"]
helpviewer_keywords: ["keyboard input", "user input, checking for keyboard", "kbhit function", "console", "console, checking", "keyboards, keyboard input", "_kbhit function", "keyboards, checking input"]
ms.assetid: e82a1cc9-bbec-4150-b678-a7e433220fe4
diff --git a/docs/c-runtime-library/reference/ldexp.md b/docs/c-runtime-library/reference/ldexp.md
index 9c9322dc7a..b865dbb227 100644
--- a/docs/c-runtime-library/reference/ldexp.md
+++ b/docs/c-runtime-library/reference/ldexp.md
@@ -1,9 +1,10 @@
---
title: "ldexp, ldexpf, ldexpl"
ms.date: "04/05/2018"
-apiname: ["ldexp", "ldexpf", "ldexpl", "_ldexpl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ldexp", "ldexpf", "ldexpl", "_ldexpl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ldexp", "ldexpf", "ldexpl", "_ldexpl"]
helpviewer_keywords: ["calculating real numbers", "computing real numbers", "mantissas, floating-point variables", "ldexp function", "ldexpf function", "ldexpl function", "exponent, floating-point numbers", "floating-point functions, mantissa and exponent"]
ms.assetid: aa7f5310-3879-4f63-ae74-86a39fbdedfa
diff --git a/docs/c-runtime-library/reference/lfind-s.md b/docs/c-runtime-library/reference/lfind-s.md
index 97b8365bcd..639ab0fa04 100644
--- a/docs/c-runtime-library/reference/lfind-s.md
+++ b/docs/c-runtime-library/reference/lfind-s.md
@@ -1,9 +1,10 @@
---
title: "_lfind_s"
ms.date: "11/04/2016"
-apiname: ["_lfind_s"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_lfind_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lfind_s", "_lfind_s"]
helpviewer_keywords: ["linear searching", "keys, finding in arrays", "lfind_s function", "arrays [CRT], searching", "searching, linear", "_lfind_s function"]
ms.assetid: f1d9581d-5c9d-4222-a31c-a6dfafefa40d
diff --git a/docs/c-runtime-library/reference/lfind.md b/docs/c-runtime-library/reference/lfind.md
index b47a7c277e..61ae1e3208 100644
--- a/docs/c-runtime-library/reference/lfind.md
+++ b/docs/c-runtime-library/reference/lfind.md
@@ -1,9 +1,10 @@
---
title: "_lfind"
ms.date: "11/04/2016"
-apiname: ["_lfind"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_lfind"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lfind", "_lfind"]
helpviewer_keywords: ["linear searching", "lfind function", "arrays [CRT], searching", "searching, linear", "finding keys in arrays", "_lfind function"]
ms.assetid: a40ece70-1674-4b75-94bd-9f57cfff18f2
diff --git a/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md b/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md
index d69143f7a7..b70d74f831 100644
--- a/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md
+++ b/docs/c-runtime-library/reference/lgamma-lgammaf-lgammal.md
@@ -1,9 +1,10 @@
---
title: "lgamma, lgammaf, lgammal"
ms.date: "04/05/2018"
-apiname: ["lgamma", "lgammaf", "lgammal"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["lgamma", "lgammaf", "lgammal"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lgamma", "lgammaf", "lgammal", "math/lgamma", "math/lgammaf", "math/lgammal"]
helpviewer_keywords: ["lgamma function", "lgammal function", "lgammaf function"]
ms.assetid: 6e326c58-7077-481a-a329-c82ae56ae9e6
diff --git a/docs/c-runtime-library/reference/localeconv.md b/docs/c-runtime-library/reference/localeconv.md
index e0215ae880..b4e11741ca 100644
--- a/docs/c-runtime-library/reference/localeconv.md
+++ b/docs/c-runtime-library/reference/localeconv.md
@@ -1,9 +1,10 @@
---
title: "localeconv"
ms.date: "11/04/2016"
-apiname: ["localeconv"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["localeconv"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["localeconv"]
helpviewer_keywords: ["lconv type", "localeconv function", "locales, getting information on"]
ms.assetid: 7ecdb1f2-88f5-4037-a0e7-c754ab003660
diff --git a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md
index 1c58b7847f..a963d70b69 100644
--- a/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md
+++ b/docs/c-runtime-library/reference/localtime-localtime32-localtime64.md
@@ -1,9 +1,10 @@
---
title: "localtime, _localtime32, _localtime64"
ms.date: "11/04/2016"
-apiname: ["_localtime64", "_localtime32", "localtime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_localtime64", "_localtime32", "localtime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["localtime64", "_localtime64", "localtime32", "localtime", "_localtime32"]
helpviewer_keywords: ["localtime32 function", "_localtime32 function", "_localtime64 function", "localtime64 function", "localtime function", "time, converting values"]
ms.assetid: 4260ec3d-43ee-4538-b998-402a282bb9b8
diff --git a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md
index a84d3993af..c956c667c1 100644
--- a/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md
+++ b/docs/c-runtime-library/reference/localtime-s-localtime32-s-localtime64-s.md
@@ -1,9 +1,10 @@
---
title: "localtime_s, _localtime32_s, _localtime64_s"
ms.date: "07/09/2019"
-apiname: ["_localtime64_s", "_localtime32_s", "localtime_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_localtime64_s", "_localtime32_s", "localtime_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_localtime32_s", "localtime32_s", "localtime_s", "localtime64_s", "_localtime64_s"]
helpviewer_keywords: ["_localtime64_s function", "localtime32_s function", "_localtime32_s function", "localtime64_s function", "time, converting values", "localtime_s function"]
ms.assetid: 842d1dc7-d6f8-41d3-b340-108d4b90df54
diff --git a/docs/c-runtime-library/reference/lock-file.md b/docs/c-runtime-library/reference/lock-file.md
index bdda8c8579..6ec756a0a9 100644
--- a/docs/c-runtime-library/reference/lock-file.md
+++ b/docs/c-runtime-library/reference/lock-file.md
@@ -1,9 +1,10 @@
---
title: "_lock_file"
ms.date: "11/04/2016"
-apiname: ["_lock_file"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_lock_file"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_lock_file", "lock_file"]
helpviewer_keywords: ["file locking [C++]", "_lock_file function", "lock_file function"]
ms.assetid: 75c7e0e6-efff-4747-b6ed-9bcf2b0894c3
diff --git a/docs/c-runtime-library/reference/locking.md b/docs/c-runtime-library/reference/locking.md
index 6b1f70f0df..e1f0dc747a 100644
--- a/docs/c-runtime-library/reference/locking.md
+++ b/docs/c-runtime-library/reference/locking.md
@@ -1,9 +1,10 @@
---
title: "_locking"
ms.date: "11/04/2016"
-apiname: ["_locking"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_locking"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_locking"]
helpviewer_keywords: ["locking function", "bytes [C++], locking file", "files [C++], locking bytes", "files [C++], locking", "_locking function"]
ms.assetid: 099aaac1-d4ca-4827-aed6-24dff9844150
diff --git a/docs/c-runtime-library/reference/log-logf-log10-log10f.md b/docs/c-runtime-library/reference/log-logf-log10-log10f.md
index e50a898a56..30995f3951 100644
--- a/docs/c-runtime-library/reference/log-logf-log10-log10f.md
+++ b/docs/c-runtime-library/reference/log-logf-log10-log10f.md
@@ -1,9 +1,10 @@
---
title: "log, logf, logl, log10, log10f, log10l"
ms.date: "04/05/2018"
-apiname: ["log10f", "logf", "log10", "log", "log10l", "logl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["log10f", "logf", "log10", "log", "log10l", "logl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["logf", "logl", "_log10l", "log", "_logl", "log10f", "log10l", "log10"]
helpviewer_keywords: ["calculating logarithms", "log10f function", "log10 function", "log function", "log10l function", "logl function", "logf function", "logarithms"]
ms.assetid: 7adc77c2-04f7-4245-a980-21215563cfae
diff --git a/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md b/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md
index fd8f2ee4be..19c5875741 100644
--- a/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md
+++ b/docs/c-runtime-library/reference/log1p-log1pf-log1pl2.md
@@ -1,9 +1,10 @@
---
title: "log1p, log1pf, log1pl2"
ms.date: "04/05/2018"
-apiname: ["log1p", "log1pf", "log1pl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["log1p", "log1pf", "log1pl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["log1p", "log1pf", "log1pl", "math/log1p", "math/log1pf", "math/log1pl"]
helpviewer_keywords: ["log1p function", "log1pf function", "log1pl function"]
ms.assetid: a40d965d-b4f6-42f4-ba27-2395546f7c12
diff --git a/docs/c-runtime-library/reference/log2-log2f-log2l.md b/docs/c-runtime-library/reference/log2-log2f-log2l.md
index 0f9ded8950..8f3f40d8d1 100644
--- a/docs/c-runtime-library/reference/log2-log2f-log2l.md
+++ b/docs/c-runtime-library/reference/log2-log2f-log2l.md
@@ -1,9 +1,10 @@
---
title: "log2, log2f, log2l"
ms.date: "04/05/2018"
-apiname: ["log2", "log2l", "log2f"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["log2", "log2l", "log2f"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
ms.assetid: 94d11b38-70b7-4d3a-94ac-523153c92b2e
---
# log2, log2f, log2l
diff --git a/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md b/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md
index 0db701d30b..60c20204bd 100644
--- a/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md
+++ b/docs/c-runtime-library/reference/logb-logbf-logbl-logb-logbf.md
@@ -1,9 +1,10 @@
---
title: "logb, logbf, logbl, _logb, _logbf"
ms.date: "04/05/2018"
-apiname: ["logb", "_logb", "_logbl", "logbf", "logbl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["logb", "_logb", "_logbl", "logbf", "logbl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["logb", "logbl", "_logb", "_logbf", "logbf"]
helpviewer_keywords: ["_logbf function", "mantissas, floating-point variables", "logbf function", "_logb function", "exponent, floating-point numbers", "logbl function", "logb function", "floating-point functions", "floating-point functions, mantissa and exponent", "exponents and mantissas"]
ms.assetid: 780c4daa-6fe6-4fbc-9412-4c1ba1a1766f
diff --git a/docs/c-runtime-library/reference/longjmp.md b/docs/c-runtime-library/reference/longjmp.md
index 8726c4d887..94b6d10df1 100644
--- a/docs/c-runtime-library/reference/longjmp.md
+++ b/docs/c-runtime-library/reference/longjmp.md
@@ -1,9 +1,10 @@
---
title: "longjmp"
ms.date: "08/14/2018"
-apiname: ["longjmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["longjmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["longjmp"]
helpviewer_keywords: ["restoring stack environment and execution locale", "longjmp function"]
ms.assetid: 0e13670a-5130-45c1-ad69-6862505b7a2f
diff --git a/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md b/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md
index f9d4c52149..5d8ccdda53 100644
--- a/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md
+++ b/docs/c-runtime-library/reference/lrint-lrintf-lrintl-llrint-llrintf-llrintl.md
@@ -1,9 +1,10 @@
---
title: "lrint, lrintf, lrintl, llrint, llrintf, llrintl"
ms.date: "04/05/2018"
-apiname: ["lrint", "lrintl", "lrintf", "llrint", "llrintf", "llrintl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["lrint", "lrintl", "lrintf", "llrint", "llrintf", "llrintl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lrint", "lrintf", "lrintl", "llrint", "llrintf", "llrintl", "math/lrint", "math/lrintf", "math/lrintl", "math/llrint", "math/llrintf", "math/llrintl"]
helpviewer_keywords: ["lrint function", "lrintf function", "lrintl function", "llrint function", "llrintf function", "llrintl function"]
ms.assetid: 28ccd5b3-5e6f-434f-997d-a21d51b8ce7f
@@ -75,7 +76,7 @@ Because C++ allows overloading, you can call overloads of **lrint** and **llrint
If *x* does not represent the floating-point equivalent of an integral value, these functions raise **FE_INEXACT**.
-**Microsoft specific**: When the result is outside the range of the return type, or when the parameter is a NaN or infinity, the return value is implementation defined. The Microsoft compiler returns a zero (0) value.
+**Microsoft-specific**: When the result is outside the range of the return type, or when the parameter is a NaN or infinity, the return value is implementation defined. The Microsoft compiler returns a zero (0) value.
## Requirements
diff --git a/docs/c-runtime-library/reference/lrotl-lrotr.md b/docs/c-runtime-library/reference/lrotl-lrotr.md
index 47f8d6fabb..b0bfd20fa9 100644
--- a/docs/c-runtime-library/reference/lrotl-lrotr.md
+++ b/docs/c-runtime-library/reference/lrotl-lrotr.md
@@ -1,9 +1,10 @@
---
title: "_lrotl, _lrotr"
ms.date: "04/04/2018"
-apiname: ["_lrotl", "_lrotr"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_lrotl", "_lrotr"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lrotr", "lrotl", "_lrotr", "_lrotl"]
helpviewer_keywords: ["lrotl function", "bits", "_lrotr function", "lrotr function", "rotating bits", "_lrotl function", "bits, rotating"]
ms.assetid: d42f295b-35f9-49d2-9ee4-c66896ffe68e
diff --git a/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md b/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md
index d1785cfe1e..c55c58a667 100644
--- a/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md
+++ b/docs/c-runtime-library/reference/lround-lroundf-lroundl-llround-llroundf-llroundl.md
@@ -1,9 +1,10 @@
---
title: "lround, lroundf, lroundl, llround, llroundf, llroundl"
ms.date: "04/05/2018"
-apiname: ["llround", "llroundf", "llroundl", "lroundf", "lround", "lroundl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["llround", "llroundf", "llroundl", "lroundf", "lround", "lroundl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lround", "lroundl", "llroundl", "llround", "lroundf", "llroundf"]
helpviewer_keywords: ["lround function", "llroundl function", "llround function", "lroundf function", "llroundf function", "lroundl function"]
ms.assetid: cfb88a35-54c6-469f-85af-f7d695dcfdd8
diff --git a/docs/c-runtime-library/reference/lsearch-s.md b/docs/c-runtime-library/reference/lsearch-s.md
index 1ca36dcf6b..1bddffb694 100644
--- a/docs/c-runtime-library/reference/lsearch-s.md
+++ b/docs/c-runtime-library/reference/lsearch-s.md
@@ -1,9 +1,10 @@
---
title: "_lsearch_s"
ms.date: "11/04/2016"
-apiname: ["_lsearch_s"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_lsearch_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_lsearch_s", "lsearch_s"]
helpviewer_keywords: ["linear searching", "values, searching for", "keys, finding in arrays", "arrays [CRT], searching", "searching, linear", "_lsearch_s function", "lsearch_s function"]
ms.assetid: d2db0635-be7a-4799-8660-255f14450882
diff --git a/docs/c-runtime-library/reference/lsearch.md b/docs/c-runtime-library/reference/lsearch.md
index 690bc149ec..40598c2ba8 100644
--- a/docs/c-runtime-library/reference/lsearch.md
+++ b/docs/c-runtime-library/reference/lsearch.md
@@ -1,9 +1,10 @@
---
title: "_lsearch"
ms.date: "11/04/2016"
-apiname: ["_lsearch"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_lsearch"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_lsearch", "lsearch"]
helpviewer_keywords: ["_lsearch function", "values, searching for", "keys, finding in arrays", "arrays [CRT], searching", "linear searches", "searching, linear", "lsearch function"]
ms.assetid: 8200f608-159a-46f0-923b-1a37ee1af7e0
diff --git a/docs/c-runtime-library/reference/lseek-lseeki64.md b/docs/c-runtime-library/reference/lseek-lseeki64.md
index 9270de7202..fb3e080fcc 100644
--- a/docs/c-runtime-library/reference/lseek-lseeki64.md
+++ b/docs/c-runtime-library/reference/lseek-lseeki64.md
@@ -1,9 +1,10 @@
---
title: "_lseek, _lseeki64"
ms.date: "11/04/2016"
-apiname: ["_lseeki64", "_lseek"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_lseeki64", "_lseek"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_lseeki64", "_lseek", "lseeki64"]
helpviewer_keywords: ["lseek function", "_lseek function", "_lseeki64 function", "lseeki64 function", "file pointers [C++], moving", "seek file pointers"]
ms.assetid: aba8a768-d40e-48c3-b38e-473dbd782f93
diff --git a/docs/c-runtime-library/reference/lseek.md b/docs/c-runtime-library/reference/lseek.md
index 8a44e57eb0..d0814f7906 100644
--- a/docs/c-runtime-library/reference/lseek.md
+++ b/docs/c-runtime-library/reference/lseek.md
@@ -1,13 +1,16 @@
---
title: "lseek"
-ms.date: "11/04/2016"
-apiname: ["lseek"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["lseek"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lseek"]
helpviewer_keywords: ["lseek function"]
ms.assetid: 137d7741-5c2e-443e-811a-6a01417fcae7
---
# lseek
-This POSIX function is deprecated. Use the ISO C++ conformant [_lseek](lseek-lseeki64.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `lseek` is a deprecated alias for the [_lseek](lseek-lseeki64.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_lseek](lseek-lseeki64.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/makepath-s-wmakepath-s.md b/docs/c-runtime-library/reference/makepath-s-wmakepath-s.md
index ec53052320..f7d68afb85 100644
--- a/docs/c-runtime-library/reference/makepath-s-wmakepath-s.md
+++ b/docs/c-runtime-library/reference/makepath-s-wmakepath-s.md
@@ -1,9 +1,10 @@
---
title: "_makepath_s, _wmakepath_s"
ms.date: "11/04/2016"
-apiname: ["_wmakepath_s", "_makepath_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wmakepath_s", "_makepath_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wmakepath_s", "makepath_s", "_makepath_s", "wmakepath_s"]
helpviewer_keywords: ["_makepath_s function", "wmakepath_s function", "paths", "_wmakepath_s function", "makepath_s function"]
ms.assetid: 4405e43c-3d63-4697-bb80-9b8dcd21d027
@@ -101,7 +102,7 @@ If path is **NULL**, the invalid parameter handler is invoked, as described in [
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
## Requirements
diff --git a/docs/c-runtime-library/reference/makepath-wmakepath.md b/docs/c-runtime-library/reference/makepath-wmakepath.md
index d78e371ea0..969efc4de0 100644
--- a/docs/c-runtime-library/reference/makepath-wmakepath.md
+++ b/docs/c-runtime-library/reference/makepath-wmakepath.md
@@ -1,9 +1,10 @@
---
title: "_makepath, _wmakepath"
ms.date: "11/04/2016"
-apiname: ["_makepath", "_wmakepath"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_makepath", "_wmakepath"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wmakepath", "_tmakepath", "makepath", "tmakepath", "wmakepath", "_makepath"]
helpviewer_keywords: ["_makepath function", "wmakepath function", "makepath function", "_tmakepath function", "paths", "_wmakepath function", "tmakepath function"]
ms.assetid: 5930b197-a7b8-46eb-8519-2841a58cd026
diff --git a/docs/c-runtime-library/reference/malloc-dbg.md b/docs/c-runtime-library/reference/malloc-dbg.md
index 90706fe18d..48c8a55cf4 100644
--- a/docs/c-runtime-library/reference/malloc-dbg.md
+++ b/docs/c-runtime-library/reference/malloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_malloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_malloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_malloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["malloc_dbg", "_malloc_dbg"]
helpviewer_keywords: ["malloc_dbg function", "memory allocation", "_malloc_dbg function"]
ms.assetid: c97eca51-140b-4461-8bd2-28965b49ecdb
diff --git a/docs/c-runtime-library/reference/malloc.md b/docs/c-runtime-library/reference/malloc.md
index caeb2a0c75..a06757661c 100644
--- a/docs/c-runtime-library/reference/malloc.md
+++ b/docs/c-runtime-library/reference/malloc.md
@@ -1,9 +1,10 @@
---
title: "malloc"
ms.date: "11/04/2016"
-apiname: ["malloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["malloc"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["malloc"]
helpviewer_keywords: ["malloc function", "memory allocation"]
ms.assetid: 144fcee2-be34-4a03-bb7e-ed6d4b99eea0
diff --git a/docs/c-runtime-library/reference/malloca.md b/docs/c-runtime-library/reference/malloca.md
index 2a7566594a..718bce1735 100644
--- a/docs/c-runtime-library/reference/malloca.md
+++ b/docs/c-runtime-library/reference/malloca.md
@@ -1,9 +1,10 @@
---
title: "_malloca"
ms.date: "11/04/2016"
-apiname: ["_malloca"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_malloca"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["malloca", "_malloca"]
helpviewer_keywords: ["memory allocation, stack", "malloca function", "_malloca function"]
ms.assetid: 293992df-cfca-4bc9-b313-0a733a6bb936
diff --git a/docs/c-runtime-library/reference/matherr.md b/docs/c-runtime-library/reference/matherr.md
index 12a4d6190a..75975e3205 100644
--- a/docs/c-runtime-library/reference/matherr.md
+++ b/docs/c-runtime-library/reference/matherr.md
@@ -1,9 +1,10 @@
---
title: "_matherr"
ms.date: "04/05/2018"
-apiname: ["_matherr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_matherr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_matherr", "matherr"]
helpviewer_keywords: ["_matherr function", "matherr function"]
ms.assetid: b600d66e-165a-4608-a856-8fb418d46760
diff --git a/docs/c-runtime-library/reference/max.md b/docs/c-runtime-library/reference/max.md
index fdabf90141..bbcbc9414d 100644
--- a/docs/c-runtime-library/reference/max.md
+++ b/docs/c-runtime-library/reference/max.md
@@ -1,9 +1,10 @@
---
title: "__max"
ms.date: "04/05/2018"
-apiname: ["__max"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["__max"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["max", "__max"]
helpviewer_keywords: ["max macro", "maximum macro", "__max macro"]
ms.assetid: 05c936f6-0e22-45d6-a58d-4bc102e9dae2
diff --git a/docs/c-runtime-library/reference/mbbtombc-mbbtombc-l.md b/docs/c-runtime-library/reference/mbbtombc-mbbtombc-l.md
index 9b5d52a4cf..3f1aac7a9c 100644
--- a/docs/c-runtime-library/reference/mbbtombc-mbbtombc-l.md
+++ b/docs/c-runtime-library/reference/mbbtombc-mbbtombc-l.md
@@ -1,9 +1,10 @@
---
title: "_mbbtombc, _mbbtombc_l"
ms.date: "11/04/2016"
-apiname: ["_mbbtombc_l", "_mbbtombc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbbtombc_l", "_mbbtombc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbbtombc_l", "_mbbtombc", "mbbtombc_l", "mbbtombc"]
helpviewer_keywords: ["mbbtombc_l function", "mbbtombc function", "_mbbtombc_l function", "_mbbtombc function"]
ms.assetid: 78593389-b0fc-43b6-8c1f-2a6bf702d64e
diff --git a/docs/c-runtime-library/reference/mbbtype-mbbtype-l.md b/docs/c-runtime-library/reference/mbbtype-mbbtype-l.md
index 76c9609520..3e39223905 100644
--- a/docs/c-runtime-library/reference/mbbtype-mbbtype-l.md
+++ b/docs/c-runtime-library/reference/mbbtype-mbbtype-l.md
@@ -1,9 +1,10 @@
---
title: "_mbbtype, _mbbtype_l"
ms.date: "11/04/2016"
-apiname: ["_mbbtype", "_mbbtype_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbbtype", "_mbbtype_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbbtype_l", "mbbtype", "mbbtype_l", "_mbbtype"]
helpviewer_keywords: ["_mbbtype function", "_mbbtype_l function", "mbbtype function", "mbbtype_l function"]
ms.assetid: b8e34b40-842a-4298-aa39-0bd2d8e51c2a
diff --git a/docs/c-runtime-library/reference/mbccpy-mbccpy-l.md b/docs/c-runtime-library/reference/mbccpy-mbccpy-l.md
index ec0c6242bc..659a474f78 100644
--- a/docs/c-runtime-library/reference/mbccpy-mbccpy-l.md
+++ b/docs/c-runtime-library/reference/mbccpy-mbccpy-l.md
@@ -1,9 +1,10 @@
---
title: "_mbccpy, _mbccpy_l"
ms.date: "11/04/2016"
-apiname: ["_mbccpy", "_mbccpy_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbccpy", "_mbccpy_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbccpy", "tccpy", "ftccpy", "mbccpy", "_tccpy", "_ftccpy"]
helpviewer_keywords: ["_tccpy function", "_tccpy_l function", "tccpy_l function", "tccpy function", "mbccpy function", "_mbccpy_l function", "_mbccpy function", "mbccpy_l function"]
ms.assetid: 13f4de6e-7792-41ac-b319-dd9b135433aa
diff --git a/docs/c-runtime-library/reference/mbccpy-s-mbccpy-s-l.md b/docs/c-runtime-library/reference/mbccpy-s-mbccpy-s-l.md
index 6dd37a74dc..b3249b263c 100644
--- a/docs/c-runtime-library/reference/mbccpy-s-mbccpy-s-l.md
+++ b/docs/c-runtime-library/reference/mbccpy-s-mbccpy-s-l.md
@@ -1,9 +1,10 @@
---
title: "_mbccpy_s, _mbccpy_s_l"
ms.date: "11/04/2016"
-apiname: ["_mbccpy_s", "_mbccpy_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbccpy_s", "_mbccpy_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbccpy_s_l", "mbccpy_s_l", "mbccpy_s", "_mbccpy_s"]
helpviewer_keywords: ["tccpy_s_l function", "_tccpy_s function", "_mbccpy_s function", "mbccpy_s function", "tccpy_s function", "mbccpy_s_l function", "_tccpy_s_l function", "_mbccpy_s_l function"]
ms.assetid: b6e965fa-53c1-4ec3-85ef-a1c4b4f2b2da
diff --git a/docs/c-runtime-library/reference/mbcjistojms-mbcjistojms-l-mbcjmstojis-mbcjmstojis-l.md b/docs/c-runtime-library/reference/mbcjistojms-mbcjistojms-l-mbcjmstojis-mbcjmstojis-l.md
index 8060b8564e..df01a7c3f6 100644
--- a/docs/c-runtime-library/reference/mbcjistojms-mbcjistojms-l-mbcjmstojis-mbcjmstojis-l.md
+++ b/docs/c-runtime-library/reference/mbcjistojms-mbcjistojms-l-mbcjmstojis-mbcjmstojis-l.md
@@ -1,9 +1,10 @@
---
title: "_mbcjistojms, _mbcjistojms_l, _mbcjmstojis, _mbcjmstojis_l"
ms.date: "11/04/2016"
-apiname: ["_mbcjistojms", "_mbcjmstojis", "_mbcjistojms_l", "_mbcjmstojis_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbcjistojms", "_mbcjmstojis", "_mbcjistojms_l", "_mbcjmstojis_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbcjistojms", "_mbcjistojms", "_mbcjistojms_l", "_mbcjmstojis_l", "_mbcjmstojis", "mbcjmstojis_l", "mbcjistojms_l", "mbcjmstojis"]
helpviewer_keywords: ["_mbcjmstojis_l function", "_mbcjistojms function", "mbcjmstojis function", "_mbcjistojms_l function", "_mbcjmstojis function", "mbcjistojms function", "mbcjmstojis_l function", "mbcjistojms_l function"]
ms.assetid: dece5127-b337-40a4-aa10-53320a2c9432
diff --git a/docs/c-runtime-library/reference/mbclen-mblen-mblen-l.md b/docs/c-runtime-library/reference/mbclen-mblen-mblen-l.md
index 703f7bea29..e7383f843f 100644
--- a/docs/c-runtime-library/reference/mbclen-mblen-mblen-l.md
+++ b/docs/c-runtime-library/reference/mbclen-mblen-mblen-l.md
@@ -1,9 +1,11 @@
---
title: "_mbclen, mblen, _mblen_l, _mbclen_l"
-ms.date: "01/22/2019"
-apiname: ["_mbclen", "mblen", "_mblen_l", "_mbclen_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "Describes the Microsoft C Runtime Library (CRT) _mbclen, mblen, _mblen_l, and _mbclen_l functions."
+ms.date: "01/08/2020"
+api_name: ["_mbclen", "mblen", "_mblen_l", "_mbclen_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mblen", "ftclen", "_mbclen", "_mbclen_l", "tclen", "_ftclen", "_tclen", "mbclen"]
helpviewer_keywords: ["tclen function", "_mblen_l function", "_tclen function", "mblen_l function", "_mbclen function", "_mbclen_l function", "mbclen function", "mblen function"]
ms.assetid: d5eb92a0-b7a3-464a-aaf7-9890a8e3ed70
@@ -38,29 +40,33 @@ int _mblen_l(
### Parameters
-*c*
+*c*\
Multibyte character.
-*mbstr*
+*mbstr*\
Address of a multibyte-character byte sequence.
-*count*
+*count*\
Number of bytes to check.
-*locale*
+*locale*\
Locale to use.
## Return Value
-**_mbclen** returns 1 or 2, according to whether the multibyte character *c* is 1 or 2 bytes long. There is no error return for **_mbclen**. If *mbstr* isn't **NULL**, **mblen** returns the length, in bytes, of the multibyte character. If *mbstr* is **NULL** or it points to the wide-character null character, **mblen** returns 0. When the object that *mbstr* points to doesn't form a valid multibyte character within the first *count* characters, **mblen** returns -1.
+**_mbclen** and **_mbclen_l** return 1 or 2, according to the length of the multibyte character *c*. The functions always return 1 for UTF-8, whether *c* is multibyte or not. There's no error return for **_mbclen**.
+
+If *mbstr* isn't **NULL**, **mblen** and **_mblen_l** return the length, in bytes, of the multibyte character. The **mblen** and **_mblen_l** functions work correctly on UTF-8, and may return a value between 1 and 3. When *mbstr* is **NULL** (or it points to the wide-character null character), **mblen** and **_mblen_l** return 0. The object that *mbstr* points to must form a valid multibyte character within the first *count* characters, or **mblen** and **_mblen_l** return -1.
## Remarks
-The **_mbclen** function returns the length, in bytes, of the multibyte character *c*. If *c* doesn't point to the lead byte of a multibyte character as determined by an implicit call to **_ismbblead**, the result of **_mbclen** is unpredictable.
+The **_mbclen** function returns the length, in bytes, of the multibyte character *c*. If *c* doesn't point to the lead byte of a multibyte character (as determined by an implicit call to [_ismbblead](ismbblead-ismbblead-l.md), the result of **_mbclen** is unpredictable.
+
+**mblen** returns the length in bytes of *mbstr* if it's a valid multibyte character. It also determines multibyte-character validity associated with the code page. **mblen** examines *count* or fewer bytes contained in *mbstr*, but not more than **MB_CUR_MAX** bytes.
-**mblen** returns the length in bytes of *mbstr* if it's a valid multibyte character and determines multibyte-character validity associated with the code page. **mblen** examines *count* or fewer bytes contained in *mbstr*, but not more than **MB_CUR_MAX** bytes.
+The output value is affected by the **LC_CTYPE** category setting of the locale. The versions of these functions without the **_l** suffix use the current locale for this locale-dependent behavior. The **_l** suffixed versions behave the same, but they use the locale parameter passed in instead. For more information, see [setlocale](setlocale-wsetlocale.md) and [Locale](../../c-runtime-library/locale.md).
-The output value is affected by the **LC_CTYPE** category setting of the locale; see [setlocale](setlocale-wsetlocale.md) for more information. The versions of these functions without the **_l** suffix use the current locale for this locale-dependent behavior. The **_l** suffixed versions behave the same, but they use the locale parameter passed in instead. For more information, see [Locale](../../c-runtime-library/locale.md).
+**_mbclen**, **_mblen_l**, and **_mbclen_l** are Microsoft-specific, not part of the Standard C library. We don't recommend you use them where you want portable code. For Standard C compatibility, use **mblen** or **mbrlen** instead.
### Generic-Text Routine Mappings
@@ -119,8 +125,9 @@ Length in bytes of NULL multibyte character 0: 0
## See also
-[Character Classification](../../c-runtime-library/character-classification.md)
-[Locale](../../c-runtime-library/locale.md)
-[Interpretation of Multibyte-Character Sequences](../../c-runtime-library/interpretation-of-multibyte-character-sequences.md)
-[_mbccpy, _mbccpy_l](mbccpy-mbccpy-l.md)
-[strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l](strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md)
+[Character Classification](../../c-runtime-library/character-classification.md)\
+[Locale](../../c-runtime-library/locale.md)\
+[Interpretation of Multibyte-Character Sequences](../../c-runtime-library/interpretation-of-multibyte-character-sequences.md)\
+[_mbccpy, _mbccpy_l](mbccpy-mbccpy-l.md)\
+[mbrlen](mbrlen.md)\
+[strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l](strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md)
diff --git a/docs/c-runtime-library/reference/mbctohira-mbctohira-l-mbctokata-mbctokata-l.md b/docs/c-runtime-library/reference/mbctohira-mbctohira-l-mbctokata-mbctokata-l.md
index e14c20ef1d..c075bff24b 100644
--- a/docs/c-runtime-library/reference/mbctohira-mbctohira-l-mbctokata-mbctokata-l.md
+++ b/docs/c-runtime-library/reference/mbctohira-mbctohira-l-mbctokata-mbctokata-l.md
@@ -1,9 +1,10 @@
---
title: "_mbctohira, _mbctohira_l, _mbctokata, _mbctokata_l"
ms.date: "11/04/2016"
-apiname: ["_mbctohira", "_mbctohira_l", "_mbctokata", "_mbctokata_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbctohira", "_mbctohira_l", "_mbctokata", "_mbctokata_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbctokata", "mbctohira", "_mbctohira", "_mbctohira_l", "mbctokata", "mbctokata_l", "mbctohira_l", "_mbctokata_l"]
helpviewer_keywords: ["_mbctokata function", "_mbctokata_l function", "_mbctohira_l function", "mbctohira_l function", "mbctohira function", "mbctokata_l function", "_mbctohira function", "mbctokata function"]
ms.assetid: f949afd7-44d4-4f08-ac8f-1fef2c915a1c
diff --git a/docs/c-runtime-library/reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md b/docs/c-runtime-library/reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md
index 496f3eec3f..6932db62d0 100644
--- a/docs/c-runtime-library/reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md
+++ b/docs/c-runtime-library/reference/mbctolower-mbctolower-l-mbctoupper-mbctoupper-l.md
@@ -1,9 +1,10 @@
---
title: "_mbctolower, _mbctolower_l, _mbctoupper, _mbctoupper_l"
ms.date: "11/04/2016"
-apiname: ["_mbctolower_l", "_mbctoupper_l", "_mbctoupper", "_mbctolower"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbctolower_l", "_mbctoupper_l", "_mbctoupper", "_mbctolower"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbctoupper_l", "mbctolower_l", "_mbctolower", "_mbctolower_l", "_mbctoupper", "mbctoupper", "mbctolower", "_mbctoupper_l"]
helpviewer_keywords: ["_mbctolower function", "mbctolower_l function", "totupper function", "_mbctoupper function", "totlower function", "_mbctoupper_l function", "mbctolower function", "_totupper function", "_mbctolower_l function", "mbctoupper_l function", "_totlower function", "mbctoupper function"]
ms.assetid: 787fab71-3224-4ed7-bc93-4dcd8023fc54
diff --git a/docs/c-runtime-library/reference/mbctombb-mbctombb-l.md b/docs/c-runtime-library/reference/mbctombb-mbctombb-l.md
index a79228733c..1cb135906a 100644
--- a/docs/c-runtime-library/reference/mbctombb-mbctombb-l.md
+++ b/docs/c-runtime-library/reference/mbctombb-mbctombb-l.md
@@ -1,9 +1,10 @@
---
title: "_mbctombb, _mbctombb_l"
ms.date: "11/04/2016"
-apiname: ["_mbctombb_l", "_mbctombb"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbctombb_l", "_mbctombb"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbctombb_l", "_mbctombb", "mbctombb_l", "mbctombb"]
helpviewer_keywords: ["_mbctombb function", "mbctombb_l function", "mbctombb function", "_mbctombb_l function"]
ms.assetid: d90970b8-71ff-4586-b6a2-f9ceb811f776
diff --git a/docs/c-runtime-library/reference/mbrlen.md b/docs/c-runtime-library/reference/mbrlen.md
index 98c9bbdb3b..e200d4ecec 100644
--- a/docs/c-runtime-library/reference/mbrlen.md
+++ b/docs/c-runtime-library/reference/mbrlen.md
@@ -1,9 +1,10 @@
---
title: "mbrlen"
ms.date: "11/04/2016"
-apiname: ["mbrlen"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["mbrlen"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbrlen"]
helpviewer_keywords: ["mbrlen function"]
ms.assetid: dde8dee9-e091-4c4c-81b3-639808885ae1
diff --git a/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md b/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md
index f22a1a4db4..5fe60c1b69 100644
--- a/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md
+++ b/docs/c-runtime-library/reference/mbrtoc16-mbrtoc323.md
@@ -1,16 +1,17 @@
---
title: "mbrtoc16, mbrtoc323"
-ms.date: "11/04/2016"
-apiname: ["mbrtoc16", "mbrtoc32"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "10/22/2019"
+api_name: ["mbrtoc16", "mbrtoc32"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbrtoc16", "mbrtoc32", "uchar/mbrtoc16", "uchar/mbrtoc32"]
helpviewer_keywords: ["mbrtoc16 function", "mbrtoc32 function"]
ms.assetid: 099ade4d-56f7-4e61-8b45-493f1d7a64bd
---
# mbrtoc16, mbrtoc32
-Translates the first multibyte character in a narrow string into the equivalent UTF-16 or UTF-32 character.
+Translates the first UTF-8 multibyte character in a string into the equivalent UTF-16 or UTF-32 character.
## Syntax
@@ -32,37 +33,39 @@ size_t mbrtoc32(
### Parameters
-*destination*
-Pointer to the **char16_t** or **char32_t** equivalent of the multibyte character to convert. If null, the function does not store a value.
+*destination*\
+Pointer to the **char16_t** or **char32_t** equivalent of the UTF-8 multibyte character to convert. If null, the function doesn't store a value.
-*source*
-Pointer to the multibyte character string to convert.
+*source*\
+Pointer to the UTF-8 multibyte character string to convert.
-*max_bytes*
-The maximum number of bytes in *source* to examine for a character to convert. This should be a value between one and the number of bytes, including any null terminator, remaining in *source*.
+*max_bytes*\
+The maximum number of bytes in *source* to examine for a character to convert. This argument should be a value between one and the number of bytes, including any null terminator, remaining in *source*.
-*state*
-Pointer to a **mbstate_t** conversion state object used to interpret the multibyte string to one or more output characters.
+*state*\
+Pointer to a **mbstate_t** conversion state object used to interpret the UTF-8 multibyte string to one or more output characters.
-## Return Value
+## Return value
On success, returns the value of the first of these conditions that applies, given the current *state* value:
|Value|Condition|
|-----------|---------------|
-|0|The next *max_bytes* or fewer characters converted from *source* correspond to the null wide character, which is the value stored if *destination* is not null.
*state* contains the initial shift state.|
-|Between 1 and *max_bytes*, inclusive|The value returned is the number of bytes of *source* that complete a valid multibyte character. The converted wide character is stored if *destination* is not null.|
-|-3|The next wide character resulting from a previous call to the function has been stored in *destination* if *destination* is not null. No bytes from *source* are consumed by this call to the function.
When *source* points to a multibyte character that requires more than one wide character to represent (for example, a surrogate pair), then the *state* value is updated so that the next function call writes out the additional character.|
-|-2|The next *max_bytes* bytes represent an incomplete, but potentially valid, multibyte character. No value is stored in *destination*. This result can occur if *max_bytes* is zero.|
-|-1|An encoding error has occurred. The next *max_bytes* or fewer bytes do not contribute to a complete and valid multibyte character. No value is stored in *destination*.
**EILSEQ** is stored in **errno** and the conversion state *state* is unspecified.|
+|0|The next *max_bytes* or fewer characters converted from *source* correspond to the null wide character, which is the value stored if *destination* isn't null.
*state* contains the initial shift state.|
+|Between 1 and *max_bytes*, inclusive|The value returned is the number of bytes of *source* that complete a valid multibyte character. The converted wide character is stored if *destination* isn't null.|
+|-3|The next wide character resulting from a previous call to the function has been stored in *destination* if *destination* isn't null. No bytes from *source* are consumed by this call to the function.
When *source* points to a UTF-8 multibyte character that requires more than one wide character to represent (for example, a surrogate pair), then the *state* value is updated so that the next function call writes out the additional character.|
+|-2|The next *max_bytes* bytes represent an incomplete, but potentially valid, UTF-8 multibyte character. No value is stored in *destination*. This result can occur if *max_bytes* is zero.|
+|-1|An encoding error has occurred. The next *max_bytes* or fewer bytes do not contribute to a complete and valid UTF-8 multibyte character. No value is stored in *destination*.
**EILSEQ** is stored in **errno** and the conversion state value *state* is unspecified.|
## Remarks
-The **mbrtoc16** function reads up to *max_bytes* bytes from *source* to find the first complete, valid multibyte character, and then stores the equivalent UTF-16 character in *destination*. The source bytes are interpreted according to the current thread multibyte locale. If the multibyte character requires more than one UTF-16 output character, such as a surrogate pair, then the *state* value is set to store the next UTF-16 character in *destination* on the next call to **mbrtoc16**. The **mbrtoc32** function is identical, but output is stored as a UTF-32 character.
+The **mbrtoc16** function reads up to *max_bytes* bytes from *source* to find the first complete, valid UTF-8 multibyte character, and then stores the equivalent UTF-16 character in *destination*. If the character requires more than one UTF-16 output character, such as a surrogate pair, then the *state* value is set to store the next UTF-16 character in *destination* on the next call to **mbrtoc16**. The **mbrtoc32** function is identical, but output is stored as a UTF-32 character.
-If *source* is null, these functions return the equivalent of a call made using arguments of **NULL** for *destination*, **""** for *source*, and 1 for *max_bytes*. The passed values of *destination* and *max_bytes* are ignored.
+If *source* is null, these functions return the equivalent of a call made using arguments of **NULL** for *destination*, `""` (an empty, null-terminated string) for *source*, and 1 for *max_bytes*. The passed values of *destination* and *max_bytes* are ignored.
-If *source* is not null, the function starts at the beginning of the string and inspects up to *max_bytes* bytes to determine the number of bytes required to complete the next multibyte character, including any shift sequences. If the examined bytes contain a valid and complete multibyte character, the function converts the character into the equivalent 16-bit or 32-bit wide character or characters. If *destination* is not null, the function stores the first (and possibly only) result character in destination. If additional output characters are required, a value is set in *state*, so that subsequent calls to the function output the additional characters and return the value -3. If no more output characters are required, then *state* is set to the initial shift state.
+If *source* isn't null, the function starts at the beginning of the string and inspects up to *max_bytes* bytes to determine the number of bytes required to complete the next UTF-8 multibyte character, including any shift sequences. If the examined bytes contain a valid and complete UTF-8 multibyte character, the function converts the character into the equivalent 16-bit or 32-bit wide character or characters. If *destination* isn't null, the function stores the first (and possibly only) result character in destination. If additional output characters are required, a value is set in *state*, so that subsequent calls to the function output the additional characters and return the value -3. If no more output characters are required, then *state* is set to the initial shift state.
+
+To convert non-UTF-8 multibyte characters to UTF-16 LE characters, use the [mbrtowc](mbrtowc.md), [mbtowc, or _mbtowc_l](mbtowc-mbtowc-l.md) functions.
## Requirements
@@ -70,14 +73,14 @@ If *source* is not null, the function starts at the beginning of the string and
|--------------|--------------|------------------|
|**mbrtoc16**, **mbrtoc32**|\|\|
-For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+For additional compatibility information, see [Compatibility](../compatibility.md).
## See also
-[Data Conversion](../../c-runtime-library/data-conversion.md)
-[Locale](../../c-runtime-library/locale.md)
-[Interpretation of Multibyte-Character Sequences](../../c-runtime-library/interpretation-of-multibyte-character-sequences.md)
-[c16rtomb, c32rtomb](c16rtomb-c32rtomb1.md)
-[mbrtowc](mbrtowc.md)
-[mbsrtowcs](mbsrtowcs.md)
-[mbsrtowcs_s](mbsrtowcs-s.md)
+[Data conversion](../data-conversion.md)\
+[Locale](../locale.md)\
+[Interpretation of multibyte-character sequences](../interpretation-of-multibyte-character-sequences.md)\
+[c16rtomb, c32rtomb](c16rtomb-c32rtomb1.md)\
+[mbrtowc](mbrtowc.md)\
+[mbsrtowcs](mbsrtowcs.md)\
+[mbsrtowcs_s](mbsrtowcs-s.md)
diff --git a/docs/c-runtime-library/reference/mbrtowc.md b/docs/c-runtime-library/reference/mbrtowc.md
index 1cc706b56a..8bc2095261 100644
--- a/docs/c-runtime-library/reference/mbrtowc.md
+++ b/docs/c-runtime-library/reference/mbrtowc.md
@@ -1,9 +1,10 @@
---
title: "mbrtowc"
ms.date: "11/04/2016"
-apiname: ["mbrtowc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["mbrtowc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbrtowc"]
helpviewer_keywords: ["mbrtowc function"]
ms.assetid: a1e87fcc-6de0-4ca1-bf26-508d28490286
diff --git a/docs/c-runtime-library/reference/mbsbtype-mbsbtype-l.md b/docs/c-runtime-library/reference/mbsbtype-mbsbtype-l.md
index aaef4ca2e1..199d3fff66 100644
--- a/docs/c-runtime-library/reference/mbsbtype-mbsbtype-l.md
+++ b/docs/c-runtime-library/reference/mbsbtype-mbsbtype-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsbtype, _mbsbtype_l"
ms.date: "11/04/2016"
-apiname: ["_mbsbtype_l", "_mbsbtype"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsbtype_l", "_mbsbtype"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsbtype", "mbsbtype_l", "_mbsbtype_l", "_mbsbtype"]
helpviewer_keywords: ["_mbsbtype function", "mbsbtype function", "_mbsbtype_l function", "mbsbtype_l function"]
ms.assetid: 0d5dd91a-d32d-4f98-ac57-98dfc9e98eac
diff --git a/docs/c-runtime-library/reference/mbsinit.md b/docs/c-runtime-library/reference/mbsinit.md
index a46bb31740..a69c07b3bc 100644
--- a/docs/c-runtime-library/reference/mbsinit.md
+++ b/docs/c-runtime-library/reference/mbsinit.md
@@ -1,9 +1,10 @@
---
title: "mbsinit"
ms.date: "11/04/2016"
-apiname: ["mbsinit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["mbsinit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsinit"]
helpviewer_keywords: ["mbsinit function"]
ms.assetid: 4618555b-baaa-4d04-93fa-36abae411034
diff --git a/docs/c-runtime-library/reference/mbsnbcat-mbsnbcat-l.md b/docs/c-runtime-library/reference/mbsnbcat-mbsnbcat-l.md
index eecdd4096d..3896d3dca6 100644
--- a/docs/c-runtime-library/reference/mbsnbcat-mbsnbcat-l.md
+++ b/docs/c-runtime-library/reference/mbsnbcat-mbsnbcat-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbcat, _mbsnbcat_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbcat_l", "_mbsnbcat"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbcat_l", "_mbsnbcat"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsnbcat", "mbsnbcat_l", "_mbsnbcat", "_mbsnbcat_l"]
helpviewer_keywords: ["tcsncat_l function", "_tcsncat function", "mbsnbcat_l function", "mbsnbcat function", "_mbsnbcat_l function", "_tcsncat_l function", "_mbsnbcat function", "tcsncat function"]
ms.assetid: aa0f1d30-0ddd-48d1-88eb-c6884b20fd91
diff --git a/docs/c-runtime-library/reference/mbsnbcat-s-mbsnbcat-s-l.md b/docs/c-runtime-library/reference/mbsnbcat-s-mbsnbcat-s-l.md
index 4203f79cd1..ef7e080c07 100644
--- a/docs/c-runtime-library/reference/mbsnbcat-s-mbsnbcat-s-l.md
+++ b/docs/c-runtime-library/reference/mbsnbcat-s-mbsnbcat-s-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbcat_s, _mbsnbcat_s_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbcat_s_l", "_mbsnbcat_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbcat_s_l", "_mbsnbcat_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbsnbcat_s", "mbsnbcat_s", "_mbsnbcat_s_l", "mbsnbcat_s_l"]
helpviewer_keywords: ["_tcsncat function", "mbsnbcat_s function", "_mbsnbcat_s function", "_mbsnbcat_s_l function", "_tcsncat_s_l function", "tcsncat_s_l function", "mbsnbcat_s_l function", "tcsncat function"]
ms.assetid: 2c9e9be7-d979-4a54-8ada-23428b6648a9
@@ -85,7 +86,7 @@ The output value is affected by the setting of the **LC_CTYPE** category setting
In C++, the use of these functions is simplified by template overloads; the overloads can infer buffer length automatically and thereby eliminate the need to specify a size argument, and they can automatically use their newer, more secure functions to replace older, less-secure functions. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/mbsnbcmp-mbsnbcmp-l.md b/docs/c-runtime-library/reference/mbsnbcmp-mbsnbcmp-l.md
index 7702fc5eb6..72beff379d 100644
--- a/docs/c-runtime-library/reference/mbsnbcmp-mbsnbcmp-l.md
+++ b/docs/c-runtime-library/reference/mbsnbcmp-mbsnbcmp-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbcmp, _mbsnbcmp_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbcmp", "_mbsnbcmp_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbcmp", "_mbsnbcmp_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsnbcmp", "tcsnbmp", "_mbsnbcmp_l", "mbsnbcmp_l", "_mbsnbcmp"]
helpviewer_keywords: ["mbsnbcmp_l function", "mbsnbcmp function", "tcsncmp function", "_mbsnbcmp_l function", "_tcsncmp function", "_mbsnbcmp function"]
ms.assetid: dbc99e50-cf85-4e57-a13f-067591f18ac8
diff --git a/docs/c-runtime-library/reference/mbsnbcoll-mbsnbcoll-l-mbsnbicoll-mbsnbicoll-l.md b/docs/c-runtime-library/reference/mbsnbcoll-mbsnbcoll-l-mbsnbicoll-mbsnbicoll-l.md
index d7652ce48c..3d822a99b0 100644
--- a/docs/c-runtime-library/reference/mbsnbcoll-mbsnbcoll-l-mbsnbicoll-mbsnbicoll-l.md
+++ b/docs/c-runtime-library/reference/mbsnbcoll-mbsnbcoll-l-mbsnbicoll-mbsnbicoll-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbcoll, _mbsnbcoll_l, _mbsnbicoll, _mbsnbicoll_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbicoll_l", "_mbsnbcoll_l", "_mbsnbcoll", "_mbsnbicoll"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbicoll_l", "_mbsnbcoll_l", "_mbsnbcoll", "_mbsnbicoll"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsnbicoll", "mbsnbcoll", "mbsnbicoll_l", "_mbsnbcoll", "_mbsnbicoll", "_ftcsnicoll", "_ftcsncoll", "mbsnbcoll_l"]
helpviewer_keywords: ["_mbsnbcoll_l function", "mbsnbcoll_l function", "_mbsnbcoll function", "_tcsnicoll function", "mbsnbcoll function", "mbsnbicoll_l function", "mbsnbicoll function", "_tcsncoll function", "_mbsnbicoll function", "_mbsnbicoll_l function", "tcsncoll function", "tcsnicoll function"]
ms.assetid: d139ed63-ccba-4458-baa2-61cbcef03e94
diff --git a/docs/c-runtime-library/reference/mbsnbcpy-mbsnbcpy-l.md b/docs/c-runtime-library/reference/mbsnbcpy-mbsnbcpy-l.md
index eb5c5b2e1e..78d18251f6 100644
--- a/docs/c-runtime-library/reference/mbsnbcpy-mbsnbcpy-l.md
+++ b/docs/c-runtime-library/reference/mbsnbcpy-mbsnbcpy-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbcpy, _mbsnbcpy_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbcpy", "_mbsnbcpy_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbcpy", "_mbsnbcpy_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsnbcpy", "_ftcsncpy", "_mbsnbcpy", "mbsnbcpy_l", "_mbsnbcpy_l"]
helpviewer_keywords: ["mbsnbcpy function", "_mbsnbcpy_l function", "_mbsnbcpy function", "_tcsncpy function", "tcsncpy_l function", "_tcsncpy_l function", "mbsnbcpy_l function", "tcsncpy function"]
ms.assetid: 83d17b50-3cbf-4df9-bce8-3b6d52f85d04
diff --git a/docs/c-runtime-library/reference/mbsnbcpy-s-mbsnbcpy-s-l.md b/docs/c-runtime-library/reference/mbsnbcpy-s-mbsnbcpy-s-l.md
index eb12f00f66..e635712232 100644
--- a/docs/c-runtime-library/reference/mbsnbcpy-s-mbsnbcpy-s-l.md
+++ b/docs/c-runtime-library/reference/mbsnbcpy-s-mbsnbcpy-s-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbcpy_s, _mbsnbcpy_s_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbcpy_s_l", "_mbsnbcpy_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbcpy_s_l", "_mbsnbcpy_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsnbcpy_s_l", "_mbsnbcpy_s", "mbsnbcpy_s", "_mbsnbcpy_s_l"]
helpviewer_keywords: ["_mbsnbcpy_s function", "tcsncpy_s function", "mbsnbcpy_s_l function", "_tcsncpy_s_l function", "mbsnbcpy_s function", "tcsncpy_s_l function", "_mbsnbcpy_s_l function", "_tcsncpy_s function"]
ms.assetid: dfff64ab-fe6f-49c4-99ba-75014e2b0cd6
@@ -78,7 +79,7 @@ The output value is affected by the setting of the **LC_CTYPE** category setting
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/mbsnbicmp-mbsnbicmp-l.md b/docs/c-runtime-library/reference/mbsnbicmp-mbsnbicmp-l.md
index 86a79c573f..6d29cd2afc 100644
--- a/docs/c-runtime-library/reference/mbsnbicmp-mbsnbicmp-l.md
+++ b/docs/c-runtime-library/reference/mbsnbicmp-mbsnbicmp-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbicmp, _mbsnbicmp_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbicmp_l", "_mbsnbicmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbicmp_l", "_mbsnbicmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strnicmp", "_wcsnicmp_l", "_mbsnbicmp", "mbsnbicmp", "mbsnbicmp_l", "_tcsnicmp", "_strnicmp_l", "_tcsnicmp_l", "_wcsnicmp", "_mbsnbicmp_l"]
helpviewer_keywords: ["_tcsnicmp_l function", "_strnicmp function", "mbsnbicmp_l function", "_wcsnicmp_l function", "_mbsnbicmp function", "_mbsnbicmp_l function", "_tcsnicmp function", "_strnicmp_l function", "mbsnbicmp function", "_wcsnicmp function"]
ms.assetid: ddb44974-8b0c-42f0-90d0-56c9350bae0c
diff --git a/docs/c-runtime-library/reference/mbsnbset-mbsnbset-l.md b/docs/c-runtime-library/reference/mbsnbset-mbsnbset-l.md
index 8a42310da3..78138fcf48 100644
--- a/docs/c-runtime-library/reference/mbsnbset-mbsnbset-l.md
+++ b/docs/c-runtime-library/reference/mbsnbset-mbsnbset-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbset, _mbsnbset_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbset", "_mbsnbset_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbset", "_mbsnbset_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsnbset", "mbsnbset_l", "_mbsnbset", "_mbsnbset_l"]
helpviewer_keywords: ["tcsnset function", "_tcsnset_l function", "_mbsnbset function", "_tcsnset function", "_mbsnbset_l function", "mbsnbset_l function", "tcsnset_l function", "mbsnbset function"]
ms.assetid: 8e46ef75-9a56-42d2-a522-a08450c67c19
diff --git a/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md b/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md
index f0a3516b9a..63ed5282b4 100644
--- a/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md
+++ b/docs/c-runtime-library/reference/mbsnbset-s-mbsnbset-s-l.md
@@ -1,9 +1,10 @@
---
title: "_mbsnbset_s, _mbsnbset_s_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbset_s_l", "_mbsnbset_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbset_s_l", "_mbsnbset_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsnbset_s", "_mbsnbset_s_l", "_mbsnbset_s", "mbsnbset_s_l"]
helpviewer_keywords: ["tcsnset_s function", "mbsnbset_s function", "mbsnbset_s_l function", "_mbsnbset_s_l function", "_tcsnset_s_l function", "_mbsnbset_s function", "_tcsnset_s function", "tcsnset_s_l function"]
ms.assetid: 811f92c9-cc31-4bbd-8017-2d1bfc6fb96f
@@ -79,7 +80,7 @@ The output value is affected by the setting of the **LC_CTYPE** category setting
In C++, use of these functions is simplified by template overloads; the overloads can infer buffer length automatically and thereby eliminate the need to specify a size argument. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/mbsrtowcs-s.md b/docs/c-runtime-library/reference/mbsrtowcs-s.md
index 76b5942047..8d78360341 100644
--- a/docs/c-runtime-library/reference/mbsrtowcs-s.md
+++ b/docs/c-runtime-library/reference/mbsrtowcs-s.md
@@ -1,9 +1,10 @@
---
title: "mbsrtowcs_s"
ms.date: "11/04/2016"
-apiname: ["mbsrtowcs_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["mbsrtowcs_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsrtowcs_s"]
helpviewer_keywords: ["mbsrtowcs_s function"]
ms.assetid: 4ee084ec-b15d-4e5a-921d-6584ec3b5a60
diff --git a/docs/c-runtime-library/reference/mbsrtowcs.md b/docs/c-runtime-library/reference/mbsrtowcs.md
index b1173cb0cc..425503a353 100644
--- a/docs/c-runtime-library/reference/mbsrtowcs.md
+++ b/docs/c-runtime-library/reference/mbsrtowcs.md
@@ -1,9 +1,10 @@
---
title: "mbsrtowcs"
ms.date: "11/04/2016"
-apiname: ["mbsrtowcs"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["mbsrtowcs"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsrtowcs"]
helpviewer_keywords: ["mbsrtowcs function"]
ms.assetid: f3a29de8-e36e-425b-a7fa-a258e6d7909d
diff --git a/docs/c-runtime-library/reference/mbstowcs-mbstowcs-l.md b/docs/c-runtime-library/reference/mbstowcs-mbstowcs-l.md
index 52f914179f..02ec1525c8 100644
--- a/docs/c-runtime-library/reference/mbstowcs-mbstowcs-l.md
+++ b/docs/c-runtime-library/reference/mbstowcs-mbstowcs-l.md
@@ -1,9 +1,10 @@
---
title: "mbstowcs, _mbstowcs_l"
ms.date: "11/04/2016"
-apiname: ["mbstowcs", "_mbstowcs_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["mbstowcs", "_mbstowcs_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbstowcs"]
helpviewer_keywords: ["_mbstowcs_l function", "mbstowcs_l function", "mbstowcs function"]
ms.assetid: 96696b27-e068-4eeb-8006-3f7a0546ae6d
diff --git a/docs/c-runtime-library/reference/mbstowcs-s-mbstowcs-s-l.md b/docs/c-runtime-library/reference/mbstowcs-s-mbstowcs-s-l.md
index 443b08f680..f6839f14a8 100644
--- a/docs/c-runtime-library/reference/mbstowcs-s-mbstowcs-s-l.md
+++ b/docs/c-runtime-library/reference/mbstowcs-s-mbstowcs-s-l.md
@@ -1,9 +1,10 @@
---
title: "mbstowcs_s, _mbstowcs_s_l"
ms.date: "11/04/2016"
-apiname: ["_mbstowcs_s_l", "mbstowcs_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbstowcs_s_l", "mbstowcs_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbstowcs_s_l", "mbstowcs_s"]
helpviewer_keywords: ["_mbstowcs_s_l function", "mbstowcs_s function", "mbstowcs_s_l function"]
ms.assetid: 2fbda953-6918-498f-b440-3e7b21ed65a4
diff --git a/docs/c-runtime-library/reference/mbtowc-mbtowc-l.md b/docs/c-runtime-library/reference/mbtowc-mbtowc-l.md
index 32478dc127..2976300de8 100644
--- a/docs/c-runtime-library/reference/mbtowc-mbtowc-l.md
+++ b/docs/c-runtime-library/reference/mbtowc-mbtowc-l.md
@@ -1,9 +1,10 @@
---
title: "mbtowc, _mbtowc_l"
ms.date: "11/04/2016"
-apiname: ["mbtowc", "_mbtowc_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["mbtowc", "_mbtowc_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbtowc"]
helpviewer_keywords: ["mbtowc function", "_mbtowc_l function", "mbtowc_l function"]
ms.assetid: dfd1c8a7-e73a-4307-9353-53b70b45d4d1
diff --git a/docs/c-runtime-library/reference/memccpy.md b/docs/c-runtime-library/reference/memccpy.md
index 8727efc673..c08b836326 100644
--- a/docs/c-runtime-library/reference/memccpy.md
+++ b/docs/c-runtime-library/reference/memccpy.md
@@ -1,9 +1,10 @@
---
title: "_memccpy"
ms.date: "11/04/2016"
-apiname: ["_memccpy"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_memccpy"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_memccpy"]
helpviewer_keywords: ["_memccpy function", "memccpy function"]
ms.assetid: 9a2337df-6e85-4eba-b247-dd0532f45ddb
diff --git a/docs/c-runtime-library/reference/memchr-wmemchr.md b/docs/c-runtime-library/reference/memchr-wmemchr.md
index f6e468d334..322f866301 100644
--- a/docs/c-runtime-library/reference/memchr-wmemchr.md
+++ b/docs/c-runtime-library/reference/memchr-wmemchr.md
@@ -1,9 +1,10 @@
---
title: "memchr, wmemchr"
ms.date: "03/31/2019"
-apiname: ["wmemchr", "memchr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["wmemchr", "memchr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["memchr", "wmemchr"]
helpviewer_keywords: ["memchr function", "wmemchr function"]
ms.assetid: 5a348581-28f1-4256-8434-687245f7fc9f
diff --git a/docs/c-runtime-library/reference/memcmp-wmemcmp.md b/docs/c-runtime-library/reference/memcmp-wmemcmp.md
index 8b94af8375..b24bafe3fa 100644
--- a/docs/c-runtime-library/reference/memcmp-wmemcmp.md
+++ b/docs/c-runtime-library/reference/memcmp-wmemcmp.md
@@ -1,10 +1,10 @@
---
title: "memcmp, wmemcmp"
ms.date: "11/04/2016"
-apiname: ["memcmp", "wmemcmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
-topictype: "APIRef"
+api_name: ["memcmp", "wmemcmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["memcmp", "wmemcmp"]
helpviewer_keywords: ["wmemcmp function", "memcmp function"]
ms.assetid: 0c21c3e3-8ee4-40e5-add1-eb26d225fd8d
diff --git a/docs/c-runtime-library/reference/memcpy-s-wmemcpy-s.md b/docs/c-runtime-library/reference/memcpy-s-wmemcpy-s.md
index e781683dcd..fed98e02a6 100644
--- a/docs/c-runtime-library/reference/memcpy-s-wmemcpy-s.md
+++ b/docs/c-runtime-library/reference/memcpy-s-wmemcpy-s.md
@@ -1,9 +1,10 @@
---
title: "memcpy_s, wmemcpy_s"
ms.date: "11/04/2016"
-apiname: ["memcpy_s", "wmemcpy_s"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["memcpy_s", "wmemcpy_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wmemcpy_s", "memcpy_s"]
helpviewer_keywords: ["memcpy_s function", "wmemcpy_s function"]
ms.assetid: 5504e20a-83d9-4063-91fc-3f55f7dabe99
diff --git a/docs/c-runtime-library/reference/memcpy-wmemcpy.md b/docs/c-runtime-library/reference/memcpy-wmemcpy.md
index 758929ff98..b580455ab0 100644
--- a/docs/c-runtime-library/reference/memcpy-wmemcpy.md
+++ b/docs/c-runtime-library/reference/memcpy-wmemcpy.md
@@ -1,9 +1,10 @@
---
title: "memcpy, wmemcpy"
ms.date: "11/04/2016"
-apiname: ["memcpy", "wmemcpy"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["memcpy", "wmemcpy"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wmemcpy", "memcpy"]
helpviewer_keywords: ["wmemcpy function", "memcpy function"]
ms.assetid: 34abb90b-bffb-46dc-a2f3-a5e9940839d6
@@ -50,7 +51,7 @@ The value of *dest*.
> Make sure that the destination buffer is the same size or larger than the source buffer. For more information, see [Avoiding Buffer Overruns](/windows/win32/SecBP/avoiding-buffer-overruns).
> [!IMPORTANT]
-> Because so many buffer overruns, and thus potential security exploits, have been traced to improper usage of **memcpy**, this function is listed among the “banned” functions by the Security Development Lifecycle (SDL). You may observe that some VC++ library classes continue to use **memcpy**. Furthermore, you may observe that the VC++ compiler optimizer sometimes emits calls to **memcpy**. The Visual C++ product is developed in accordance with the SDL process, and thus usage of this banned function has been closely evaluated. In the case of library use of it, the calls have been carefully scrutinized to ensure that buffer overruns will not be allowed through these calls. In the case of the compiler, sometimes certain code patterns are recognized as identical to the pattern of **memcpy**, and are thus replaced with a call to the function. In such cases, the use of **memcpy** is no more unsafe than the original instructions would have been; they have simply been optimized to a call to the performance-tuned **memcpy** function. Just as the use of “safe” CRT functions doesn’t guarantee safety (they just make it harder to be unsafe), the use of “banned” functions doesn’t guarantee danger (they just require greater scrutiny to ensure safety).
+> Because so many buffer overruns, and thus potential security exploits, have been traced to improper usage of **memcpy**, this function is listed among the "banned" functions by the Security Development Lifecycle (SDL). You may observe that some VC++ library classes continue to use **memcpy**. Furthermore, you may observe that the VC++ compiler optimizer sometimes emits calls to **memcpy**. The Visual C++ product is developed in accordance with the SDL process, and thus usage of this banned function has been closely evaluated. In the case of library use of it, the calls have been carefully scrutinized to ensure that buffer overruns will not be allowed through these calls. In the case of the compiler, sometimes certain code patterns are recognized as identical to the pattern of **memcpy**, and are thus replaced with a call to the function. In such cases, the use of **memcpy** is no more unsafe than the original instructions would have been; they have simply been optimized to a call to the performance-tuned **memcpy** function. Just as the use of "safe" CRT functions doesn’t guarantee safety (they just make it harder to be unsafe), the use of "banned" functions doesn’t guarantee danger (they just require greater scrutiny to ensure safety).
>
> Because **memcpy** usage by the VC++ compiler and libraries has been so carefully scrutinized, these calls are permitted within code that is otherwise compliant with SDL. **memcpy** calls introduced in application source code are only compliant with the SDL when that use has been reviewed by security experts.
diff --git a/docs/c-runtime-library/reference/memicmp-memicmp-l.md b/docs/c-runtime-library/reference/memicmp-memicmp-l.md
index 203011ca19..4992c99dd9 100644
--- a/docs/c-runtime-library/reference/memicmp-memicmp-l.md
+++ b/docs/c-runtime-library/reference/memicmp-memicmp-l.md
@@ -1,9 +1,10 @@
---
title: "_memicmp, _memicmp_l"
ms.date: "11/04/2016"
-apiname: ["_memicmp_l", "_memicmp"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_memicmp_l", "_memicmp"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_memicmp", "memicmp_l", "_memicmp_l"]
helpviewer_keywords: ["memicmp function", "_memicmp function", "memicmp_l function", "_memicmp_l function"]
ms.assetid: 0a6eb945-4077-4f84-935d-1aaebe8db8cb
diff --git a/docs/c-runtime-library/reference/memicmp.md b/docs/c-runtime-library/reference/memicmp.md
index fc783a121a..db7def2fbf 100644
--- a/docs/c-runtime-library/reference/memicmp.md
+++ b/docs/c-runtime-library/reference/memicmp.md
@@ -1,13 +1,16 @@
---
title: "memicmp"
-ms.date: "11/04/2016"
-apiname: ["memicmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["memicmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["memicmp"]
helpviewer_keywords: ["memicmp function"]
ms.assetid: 45362e9c-7c64-41e9-92bb-7d4999a8635b
---
# memicmp
-This POSIX function is deprecated. Use the ISO C++ conformant [_memicmp](memicmp-memicmp-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `memicmp` is a deprecated alias for the [_memicmp](memicmp-memicmp-l.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_memicmp](memicmp-memicmp-l.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/memmove-s-wmemmove-s.md b/docs/c-runtime-library/reference/memmove-s-wmemmove-s.md
index 6fa44d6f82..3e7b85a1bf 100644
--- a/docs/c-runtime-library/reference/memmove-s-wmemmove-s.md
+++ b/docs/c-runtime-library/reference/memmove-s-wmemmove-s.md
@@ -1,9 +1,10 @@
---
title: "memmove_s, wmemmove_s"
ms.date: "11/04/2016"
-apiname: ["wmemmove_s", "memmove_s"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["wmemmove_s", "memmove_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wmemmove_s", "memmove_s"]
helpviewer_keywords: ["wmemmove_s function", "memmove_s function"]
ms.assetid: a17619e4-1307-4bb0-98c6-77f8c68dab2d
diff --git a/docs/c-runtime-library/reference/memmove-wmemmove.md b/docs/c-runtime-library/reference/memmove-wmemmove.md
index af06b47bab..87143339bb 100644
--- a/docs/c-runtime-library/reference/memmove-wmemmove.md
+++ b/docs/c-runtime-library/reference/memmove-wmemmove.md
@@ -1,9 +1,10 @@
---
title: "memmove, wmemmove"
ms.date: "11/04/2016"
-apiname: ["memmove", "wmemmove"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["memmove", "wmemmove"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["memmove", "wmemmove"]
helpviewer_keywords: ["wmemmove function", "memmove function"]
ms.assetid: 3a906114-9cf3-40d7-bd99-ee452004f218
diff --git a/docs/c-runtime-library/reference/memset-wmemset.md b/docs/c-runtime-library/reference/memset-wmemset.md
index 7673ca2efc..cddb9bb31b 100644
--- a/docs/c-runtime-library/reference/memset-wmemset.md
+++ b/docs/c-runtime-library/reference/memset-wmemset.md
@@ -1,9 +1,10 @@
---
title: "memset, wmemset"
ms.date: "11/04/2016"
-apiname: ["wmemset", "memset"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["wmemset", "memset"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["memset", "wmemset"]
helpviewer_keywords: ["wmemset function", "memset function"]
ms.assetid: e7ceb01b-df69-49c2-b294-a39358ad4699
diff --git a/docs/c-runtime-library/reference/min.md b/docs/c-runtime-library/reference/min.md
index 7e1f40b930..6fa972ff35 100644
--- a/docs/c-runtime-library/reference/min.md
+++ b/docs/c-runtime-library/reference/min.md
@@ -1,9 +1,10 @@
---
title: "__min"
ms.date: "04/05/2018"
-apiname: ["__min"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["__min"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__min", "min", "_min"]
helpviewer_keywords: ["__min macro", "min macro", "minimum macro", "_min macro"]
ms.assetid: 2037f26c-b48a-4a69-8870-22519f052a3c
diff --git a/docs/c-runtime-library/reference/mkdir-wmkdir.md b/docs/c-runtime-library/reference/mkdir-wmkdir.md
index ccee2396a0..353ed36a54 100644
--- a/docs/c-runtime-library/reference/mkdir-wmkdir.md
+++ b/docs/c-runtime-library/reference/mkdir-wmkdir.md
@@ -1,9 +1,10 @@
---
title: "_mkdir, _wmkdir"
ms.date: "11/04/2016"
-apiname: ["_wmkdir", "_mkdir"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wmkdir", "_mkdir"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mkdir", "tmkdir", "_tmkdir", "wmkdir", "_wmkdir"]
helpviewer_keywords: ["_wmkdir function", "folders [C++], creating", "wmkdir function", "directories [C++], creating", "mkdir function", "tmkdir function", "_mkdir function", "_tmkdir function"]
ms.assetid: 7f22d01d-63a5-4712-a6e7-d34878b2d840
diff --git a/docs/c-runtime-library/reference/mkdir.md b/docs/c-runtime-library/reference/mkdir.md
index f40f2473d8..ad51166d0d 100644
--- a/docs/c-runtime-library/reference/mkdir.md
+++ b/docs/c-runtime-library/reference/mkdir.md
@@ -1,13 +1,16 @@
---
title: "mkdir"
-ms.date: "11/04/2016"
-apiname: ["mkdir"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["mkdir"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mkdir"]
helpviewer_keywords: ["mkdir function"]
ms.assetid: 0a212890-181e-45d0-988d-e0f301fcdeb8
---
# mkdir
-This POSIX function is deprecated. Use the ISO C++ conformant [_mkdir](mkdir-wmkdir.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `mkdir` is a deprecated alias for the [_mkdir](mkdir-wmkdir.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_mkdir](mkdir-wmkdir.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md
index 6607341d0e..ddb1c1bc84 100644
--- a/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md
+++ b/docs/c-runtime-library/reference/mkgmtime-mkgmtime32-mkgmtime64.md
@@ -1,9 +1,11 @@
---
title: "_mkgmtime, _mkgmtime32, _mkgmtime64"
-ms.date: "11/04/2016"
-apiname: ["_mkgmtime32", "_mkgmtime64", "_mkgmtime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "Describes the _mkgmtime, _mkgmtime32, and _mkgmtime64 C Runtime library functions, and gives examples of how to use them."
+ms.date: "12/04/2019"
+api_name: ["_mkgmtime32", "_mkgmtime64", "_mkgmtime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mkgmtime64", "mkgmtime32", "_mkgmtime32", "mkgmtime", "mkgmtime64", "_mkgmtime"]
helpviewer_keywords: ["mkgmtime32 function", "time functions", "mkgmtime function", "_mkgmtime function", "converting times", "mkgmtime64 function", "_mkgmtime64 function", "_mkgmtime32 function", "time, converting"]
ms.assetid: b4ca2b67-e198-4f43-b3e2-e8ad6bd01867
@@ -28,34 +30,26 @@ __time64_t _mkgmtime64(
### Parameters
-*timeptr*
+*timeptr*\
A pointer to the UTC time as a **struct** **tm** to convert.
## Return Value
-A quantity of type **__time32_t** or **__time64_t** representing the number of seconds elapsed since midnight, January 1, 1970, in Coordinated Universal Time (UTC). If the date is out of range (see the Remarks section) or the input cannot be interpreted as a valid time, the return value is -1.
+A quantity of type **__time32_t** or **__time64_t** representing the number of seconds elapsed since midnight, January 1, 1970, in Coordinated Universal Time (UTC). If the date is out of range (see the Remarks section) or the input can't be interpreted as a valid time, the return value is -1.
## Remarks
The **_mkgmtime32** and **_mkgmtime64** functions convert a UTC time to a **__time32_t** or **__time64_t** type representing the time in UTC. To convert a local time to UTC time, use **mktime**, **_mktime32**, and **_mktime64** instead.
-**_mkgmtime** is an inline function that evaluates to **_mkgmtime64**, and **time_t** is equivalent to **__time64_t**. If you need to force the compiler to interpret **time_t** as the old 32-bit **time_t**, you can define **_USE_32BIT_TIME_T**. This is not recommended because your application might fail after January 18, 2038 (the maximum range of a 32-bit **time_t**), and it is not allowed at all on 64-bit platforms.
+**_mkgmtime** is an inline function that evaluates to **_mkgmtime64**, and **time_t** is equivalent to **__time64_t**. If you need to force the compiler to interpret **time_t** as the old 32-bit **time_t**, you can define **_USE_32BIT_TIME_T**. We don't recommend it, because your application might fail after January 18, 2038, the maximum range of a 32-bit **time_t**. It's not allowed at all on 64-bit platforms.
-The time structure passed in will be changed as follows, in the same way as they are changed with the **_mktime** functions: the **tm_wday** and **tm_yday** fields are set to new values based on the values of **tm_mday** and **tm_year**. When specifying a **tm** structure time, set the **tm_isdst** field to:
+The time structure passed in is changed as follows, in the same way as it's changed by the **_mktime** functions: the **tm_wday** and **tm_yday** fields are set to new values based on the values of **tm_mday** and **tm_year**. Because the time is assumed to be UTC, the **tm_isdst** field is ignored.
-- Zero (0) to indicate that standard time is in effect.
+The range of the **_mkgmtime32** function is from midnight, January 1, 1970, UTC to 23:59:59 January 18, 2038, UTC. The range of **_mkgmtime64** is from midnight, January 1, 1970, UTC to 23:59:59, December 31, 3000, UTC. An out-of-range date results in a return value of -1. The range of **_mkgmtime** depends on whether **_USE_32BIT_TIME_T** is defined. When it's not defined, which is the default, the range is the same as **_mkgmtime64**. Otherwise, the range is limited to the 32-bit range of **_mkgmtime32**.
-- A value greater than 0 to indicate that daylight saving time is in effect.
+Both **gmtime** and **localtime** use a common static buffer for the conversion. If you supply this buffer to **_mkgmtime**, the previous contents are destroyed.
-- A value less than zero to have the C run-time library code compute whether standard time or daylight saving time is in effect.
-
-The C run-time library uses the TZ environment variable to determine the correct daylight savings time. If TZ is not set, the operating system is queried to get the correct regional daylight savings time behavior. **tm_isdst** is a required field. If not set, its value is undefined and the return value from **mktime** is unpredictable.
-
-The range of the **_mkgmtime32** function is from midnight, January 1, 1970, UTC to 23:59:59 January 18, 2038, UTC. The range of **_mkgmtime64** is from midnight, January 1, 1970, UTC to 23:59:59, December 31, 3000, UTC. An out-of-range date results in a return value of -1. The range of **_mkgmtime** depends on whether **_USE_32BIT_TIME_T** is defined. If not defined (the default) the range is that of **_mkgmtime64**; otherwise, the range is limited to the 32-bit range of **_mkgmtime32**.
-
-Note that **gmtime** and **localtime** use a single statically allocated buffer for the conversion. If you supply this buffer to **mkgmtime**, the previous contents are destroyed.
-
-## Example
+## Examples
```C
// crt_mkgmtime.c
@@ -92,8 +86,6 @@ int main()
}
```
-### Sample Output
-
```Output
Seconds since midnight, January 1, 1970
My time: 1171588492
@@ -104,7 +96,7 @@ Local Time: Thu Feb 15 17:14:52 2007
Greenwich Mean Time: Fri Feb 16 01:14:52 2007
```
-The following example shows how the incomplete structure is filled out with the computed values of the day of the week and the day of the year.
+The following example shows how the incomplete structure is filled out by **_mkgmtime**. It computes values for both the day of the week and of the year.
```C
// crt_mkgmtime2.c
@@ -141,8 +133,6 @@ int main()
}
```
-### Output
-
```Output
Before calling _mkgmtime, t1 = Sun Feb 12 00:00:00 2003
t.tm_yday = 0
@@ -152,11 +142,11 @@ t.tm_yday = 42
## See also
-[Time Management](../../c-runtime-library/time-management.md)
-[asctime, _wasctime](asctime-wasctime.md)
-[asctime_s, _wasctime_s](asctime-s-wasctime-s.md)
-[gmtime, _gmtime32, _gmtime64](gmtime-gmtime32-gmtime64.md)
-[gmtime_s, _gmtime32_s, _gmtime64_s](gmtime-s-gmtime32-s-gmtime64-s.md)
-[localtime_s, _localtime32_s, _localtime64_s](localtime-s-localtime32-s-localtime64-s.md)
-[mktime, _mktime32, _mktime64](mktime-mktime32-mktime64.md)
-[time, _time32, _time64](time-time32-time64.md)
+[Time Management](../../c-runtime-library/time-management.md)\
+[asctime, _wasctime](asctime-wasctime.md)\
+[asctime_s, _wasctime_s](asctime-s-wasctime-s.md)\
+[gmtime, _gmtime32, _gmtime64](gmtime-gmtime32-gmtime64.md)\
+[gmtime_s, _gmtime32_s, _gmtime64_s](gmtime-s-gmtime32-s-gmtime64-s.md)\
+[localtime_s, _localtime32_s, _localtime64_s](localtime-s-localtime32-s-localtime64-s.md)\
+[mktime, _mktime32, _mktime64](mktime-mktime32-mktime64.md)\
+[time, _time32, _time64](time-time32-time64.md)
diff --git a/docs/c-runtime-library/reference/mktemp-s-wmktemp-s.md b/docs/c-runtime-library/reference/mktemp-s-wmktemp-s.md
index 138f65edbb..ce9ac8d936 100644
--- a/docs/c-runtime-library/reference/mktemp-s-wmktemp-s.md
+++ b/docs/c-runtime-library/reference/mktemp-s-wmktemp-s.md
@@ -1,9 +1,10 @@
---
title: "_mktemp_s, _wmktemp_s"
ms.date: "11/04/2016"
-apiname: ["_mktemp_s", "_wmktemp_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mktemp_s", "_wmktemp_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wmktemp_s", "mktemp_s", "_mktemp_s", "_wmktemp_s"]
helpviewer_keywords: ["_tmktemp_s function", "mktemp_s function", "_wmktemp_s function", "_mktemp_s function", "files [C++], temporary", "tmktemp_s function", "wmktemp_s function", "temporary files [C++]"]
ms.assetid: 92a7e269-7f3d-4c71-bad6-14bc827a451d
@@ -59,6 +60,8 @@ If any of the above error conditions occurs, the invalid parameter handler is in
The **_mktemp_s** function creates a unique file name by modifying the *nameTemplate* argument, so that after the call, the *nameTemplate* pointer points to a string containing the new file name. **_mktemp_s** automatically handles multibyte-character string arguments as appropriate, recognizing multibyte-character sequences according to the multibyte code page currently in use by the run-time system. **_wmktemp_s** is a wide-character version of **_mktemp_s**; the argument of **_wmktemp_s** is a wide-character string. **_wmktemp_s** and **_mktemp_s** behave identically otherwise, except that **_wmktemp_s** does not handle multibyte-character strings.
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+
### Generic-Text Routine Mappings
|Tchar.h routine|_UNICODE and _MBCS not defined|_MBCS defined|_UNICODE defined|
diff --git a/docs/c-runtime-library/reference/mktemp-wmktemp.md b/docs/c-runtime-library/reference/mktemp-wmktemp.md
index f15f237574..9d6642f40a 100644
--- a/docs/c-runtime-library/reference/mktemp-wmktemp.md
+++ b/docs/c-runtime-library/reference/mktemp-wmktemp.md
@@ -1,9 +1,10 @@
---
title: "_mktemp, _wmktemp"
ms.date: "11/04/2016"
-apiname: ["_wmktemp", "_mktemp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wmktemp", "_mktemp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tmktemp", "wmktemp", "tmktemp", "_wmktemp", "_mktemp"]
helpviewer_keywords: ["_wmktemp function", "_mktemp function", "files [C++], temporary", "tmktemp function", "_tmktemp function", "wmktemp function", "mktemp function", "temporary files [C++]"]
ms.assetid: 055eb539-a8c2-4a7d-be54-f5b6d1eb5c85
diff --git a/docs/c-runtime-library/reference/mktemp.md b/docs/c-runtime-library/reference/mktemp.md
index 9b9466863a..0e557c72ee 100644
--- a/docs/c-runtime-library/reference/mktemp.md
+++ b/docs/c-runtime-library/reference/mktemp.md
@@ -1,13 +1,16 @@
---
title: "mktemp"
-ms.date: "11/04/2016"
-apiname: ["mktemp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["mktemp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mktemp"]
helpviewer_keywords: ["mktemp function"]
ms.assetid: b58cba60-034f-4e63-b312-ccbcd489d0a7
---
# mktemp
-This POSIX function is deprecated. Use the ISO C++ conformant [_mktemp](mktemp-wmktemp.md) or security-enhanced [_mktemp_s](mktemp-s-wmktemp-s.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `mktemp` is a deprecated alias for the [_mktemp](mktemp-wmktemp.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_mktemp](mktemp-wmktemp.md) or the security-enhanced [_mktemp_s](mktemp-s-wmktemp-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md
index b36059b1df..72b2c76a23 100644
--- a/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md
+++ b/docs/c-runtime-library/reference/mktime-mktime32-mktime64.md
@@ -1,9 +1,10 @@
---
title: "mktime, _mktime32, _mktime64"
ms.date: "11/04/2016"
-apiname: ["_mktime32", "mktime", "_mktime64"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mktime32", "mktime", "_mktime64"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mktime", "_mktime64"]
helpviewer_keywords: ["_mktime32 function", "mktime function", "time functions", "mktime64 function", "converting times", "mktime32 function", "_mktime64 function", "time, converting"]
ms.assetid: 284ed5d4-7064-48a2-bd50-15effdae32cf
diff --git a/docs/c-runtime-library/reference/modf-modff-modfl.md b/docs/c-runtime-library/reference/modf-modff-modfl.md
index 2a08cc51fb..689d0b8032 100644
--- a/docs/c-runtime-library/reference/modf-modff-modfl.md
+++ b/docs/c-runtime-library/reference/modf-modff-modfl.md
@@ -1,9 +1,10 @@
---
title: "modf, modff, modfl"
ms.date: "04/05/2018"
-apiname: ["modff", "modf", "modfl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["modff", "modf", "modfl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["modff", "_modfl", "modf", "modfl", "math/modf", "math/modff", "math/modfl"]
helpviewer_keywords: ["modf function", "modff function", "modfl function"]
ms.assetid: b1c7abf5-d476-43ca-a03c-02072a86e32d
diff --git a/docs/c-runtime-library/reference/msize-dbg.md b/docs/c-runtime-library/reference/msize-dbg.md
index c9b5e3cb35..90d8e50c53 100644
--- a/docs/c-runtime-library/reference/msize-dbg.md
+++ b/docs/c-runtime-library/reference/msize-dbg.md
@@ -1,9 +1,10 @@
---
title: "_msize_dbg"
ms.date: "11/04/2016"
-apiname: ["_msize_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_msize_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_msize_dbg", "msize_dbg"]
helpviewer_keywords: ["memory blocks", "_msize_dbg function", "msize_dbg function"]
ms.assetid: a333f4b6-f8a2-4e61-bb69-cb34063b8cef
diff --git a/docs/c-runtime-library/reference/msize.md b/docs/c-runtime-library/reference/msize.md
index 4726319e4d..4ef4cbe834 100644
--- a/docs/c-runtime-library/reference/msize.md
+++ b/docs/c-runtime-library/reference/msize.md
@@ -1,9 +1,10 @@
---
title: "_msize"
ms.date: "11/04/2016"
-apiname: ["_msize"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_msize"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["msize", "_msize"]
helpviewer_keywords: ["memory blocks", "msize function", "_msize function"]
ms.assetid: 02b1f89e-d0d7-4f12-938a-9eeba48a0f88
diff --git a/docs/c-runtime-library/reference/nan-nanf-nanl.md b/docs/c-runtime-library/reference/nan-nanf-nanl.md
index 6e05470889..674f6e4270 100644
--- a/docs/c-runtime-library/reference/nan-nanf-nanl.md
+++ b/docs/c-runtime-library/reference/nan-nanf-nanl.md
@@ -1,9 +1,10 @@
---
title: "nan, nanf, nanl"
ms.date: "01/31/2019"
-apiname: ["nanf", "nan", "nanl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["nanf", "nan", "nanl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["nan", "nanl", "nanf"]
helpviewer_keywords: ["nan function", "nanf function", "nanl function"]
ms.assetid: 790e9158-80ab-43e0-8f5a-096198553fd9
diff --git a/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md b/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md
index 483e7e4b52..0802f371f3 100644
--- a/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md
+++ b/docs/c-runtime-library/reference/nearbyint-nearbyintf-nearbyintl1.md
@@ -1,9 +1,10 @@
---
title: "nearbyint, nearbyintf, nearbyintl"
ms.date: "04/05/2018"
-apiname: ["nearbyint", "nearbyintf", "nearbyintl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["nearbyint", "nearbyintf", "nearbyintl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["nearbyint", "nearbyintf", "nearbyintl", "math/nearbyint", "math/narbyintf", "math/narbyintl"]
helpviewer_keywords: ["nearbyint function", "nearbyintf function", "nearbyintl function"]
ms.assetid: dd39cb68-96b0-434b-820f-6ff2ea65584f
diff --git a/docs/c-runtime-library/reference/nextafter-functions.md b/docs/c-runtime-library/reference/nextafter-functions.md
index 3883b80eb8..ee53758c58 100644
--- a/docs/c-runtime-library/reference/nextafter-functions.md
+++ b/docs/c-runtime-library/reference/nextafter-functions.md
@@ -1,9 +1,10 @@
---
title: "nextafter, nextafterf, nextafterl, _nextafter, _nextafterf, nexttoward, nexttowardf, nexttowardl"
ms.date: "04/05/2018"
-apiname: ["nextafterf", "_nextafterf", "nextafter", "nextafterl", "_nextafter", "nexttoward", "nexttowardf", "nexttowardl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["nextafterf", "_nextafterf", "nextafter", "nextafterl", "_nextafter", "nexttoward", "nexttowardf", "nexttowardl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["nextafter", "_nextafter", "nextafterf", "nextafterl", "_nextafterf", "math/nextafter", "math/nextafterf", "math/nextafterl", "nexttoward", "nexttowardf", "nexttowardl", "math/nexttoward", "math/nexttowardf", "math/nexttowardl"]
helpviewer_keywords: ["_nextafter function", "nextafter function", "_nextafterf function", "nextafterf function", "nextafterl function", "nexttoward function", "nexttowardf function", "nexttowardl function"]
ms.assetid: 9785bfb9-de53-4bd0-9637-f05fa0c1f6ab
@@ -53,7 +54,7 @@ The **nextafter** and **nexttoward** function families are equivalent, except fo
Because C++ allows overloading, if you include \ you can call overloads of **nextafter** and **nexttoward** that return **float** and **long** **double** types. In a C program, **nextafter** and **nexttoward** always return **double**.
-The **_nextafter** and **_nextafterf** functions are Microsoft specific. The **_nextafterf** function is only available when compiling for x64.
+The **_nextafter** and **_nextafterf** functions are Microsoft-specific. The **_nextafterf** function is only available when compiling for x64.
## Requirements
diff --git a/docs/c-runtime-library/reference/norm-normf-norml1.md b/docs/c-runtime-library/reference/norm-normf-norml1.md
index 3b1b24f2e2..67cd50f8d0 100644
--- a/docs/c-runtime-library/reference/norm-normf-norml1.md
+++ b/docs/c-runtime-library/reference/norm-normf-norml1.md
@@ -1,9 +1,10 @@
---
title: "norm, normf, norml"
ms.date: "04/05/2018"
-apiname: ["norm", "normf", "norml"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["norm", "normf", "norml"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["norm", "normf", "norml", "complex/norm", "complex/normf", "complex/norml"]
helpviewer_keywords: ["norm function", "normf function", "norml function"]
ms.assetid: 9786ecfe-0019-4553-b378-0af6c691e15c
diff --git a/docs/c-runtime-library/reference/not-eq.md b/docs/c-runtime-library/reference/not-eq.md
index 66ea8adfff..e31d277aae 100644
--- a/docs/c-runtime-library/reference/not-eq.md
+++ b/docs/c-runtime-library/reference/not-eq.md
@@ -1,8 +1,9 @@
---
title: "not_eq"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["not_eq", "std::not_eq", "std.not_eq"]
helpviewer_keywords: ["not_eq function"]
ms.assetid: d87ad299-8b50-4393-a57f-06f70e1f23fb
diff --git a/docs/c-runtime-library/reference/not.md b/docs/c-runtime-library/reference/not.md
index cfa607a918..d53847ca35 100644
--- a/docs/c-runtime-library/reference/not.md
+++ b/docs/c-runtime-library/reference/not.md
@@ -1,8 +1,9 @@
---
title: "not"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["std::not", "std.not", "Not"]
helpviewer_keywords: ["not function"]
ms.assetid: d2ddbd5c-33c0-4aff-8961-feac155b4ba1
diff --git a/docs/c-runtime-library/reference/offsetof-macro.md b/docs/c-runtime-library/reference/offsetof-macro.md
index af1772cc9f..f0c76ba47f 100644
--- a/docs/c-runtime-library/reference/offsetof-macro.md
+++ b/docs/c-runtime-library/reference/offsetof-macro.md
@@ -1,8 +1,9 @@
---
title: "offsetof Macro"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["offsetof"]
helpviewer_keywords: ["structure members, offset", "offsetof macro"]
ms.assetid: f3b4eb16-a882-4d38-afc9-eebd976a7352
diff --git a/docs/c-runtime-library/reference/onexit-onexit-m.md b/docs/c-runtime-library/reference/onexit-onexit-m.md
index e4d19686b7..e34aacd8d9 100644
--- a/docs/c-runtime-library/reference/onexit-onexit-m.md
+++ b/docs/c-runtime-library/reference/onexit-onexit-m.md
@@ -1,9 +1,10 @@
---
title: "_onexit, _onexit_m"
ms.date: "11/04/2016"
-apiname: ["_onexit", "_onexit_m"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_onexit", "_onexit_m"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_onexit", "onexit_m", "onexit", "_onexit_m"]
helpviewer_keywords: ["onexit function", "registry, registering exit routines", "_onexit_m function", "onexit_m function", "_onexit function", "registering exit routines", "registering to be called on exit"]
ms.assetid: 45743298-0e2f-46cf-966d-1ca44babb443
diff --git a/docs/c-runtime-library/reference/open-osfhandle.md b/docs/c-runtime-library/reference/open-osfhandle.md
index 36f26d4d33..0e432bba83 100644
--- a/docs/c-runtime-library/reference/open-osfhandle.md
+++ b/docs/c-runtime-library/reference/open-osfhandle.md
@@ -1,9 +1,10 @@
---
title: "_open_osfhandle"
ms.date: "05/21/2019"
-apiname: ["_open_osfhandle"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_open_osfhandle"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_open_osfhandle", "open_osfhandle"]
helpviewer_keywords: ["open_osfhandle function", "file handles [C++], associating", "_open_osfhandle function"]
ms.assetid: 30d94df4-7868-4667-a401-9eb67ecb7855
diff --git a/docs/c-runtime-library/reference/open-wopen.md b/docs/c-runtime-library/reference/open-wopen.md
index 2510b6d170..dd5d319db0 100644
--- a/docs/c-runtime-library/reference/open-wopen.md
+++ b/docs/c-runtime-library/reference/open-wopen.md
@@ -1,9 +1,10 @@
---
title: "_open, _wopen"
ms.date: "11/04/2016"
-apiname: ["_open", "_wopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_open", "_wopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wopen", "_topen", "_open"]
helpviewer_keywords: ["opening files, for file I/O", "topen function", "_open function", "_topen function", "_wopen function", "files [C++], opening", "wopen function", "open function"]
ms.assetid: 13f6a0c3-d1aa-450d-a7aa-74abc91b163e
diff --git a/docs/c-runtime-library/reference/open.md b/docs/c-runtime-library/reference/open.md
index 303494b1c8..cb78fb5601 100644
--- a/docs/c-runtime-library/reference/open.md
+++ b/docs/c-runtime-library/reference/open.md
@@ -1,13 +1,16 @@
---
title: "open"
-ms.date: "11/04/2016"
-apiname: ["open"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["open"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["open"]
helpviewer_keywords: ["open function"]
ms.assetid: e3139118-4da2-434b-a551-fcf3fccf49b5
---
# open
-This POSIX function is deprecated. Use the ISO C++ conformant [_open](open-wopen.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `open` is a deprecated alias for the [_open](open-wopen.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_open](open-wopen.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/or-eq.md b/docs/c-runtime-library/reference/or-eq.md
index c7694656ca..4005a2eb75 100644
--- a/docs/c-runtime-library/reference/or-eq.md
+++ b/docs/c-runtime-library/reference/or-eq.md
@@ -1,8 +1,9 @@
---
title: "or_eq"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["std::or_eq", "or_eq", "std.or_eq"]
helpviewer_keywords: ["or_eq function"]
ms.assetid: 1eb92464-ed58-40d8-a30e-f0a6aa2f4318
diff --git a/docs/c-runtime-library/reference/or.md b/docs/c-runtime-library/reference/or.md
index dbada4512f..bdabcbdc11 100644
--- a/docs/c-runtime-library/reference/or.md
+++ b/docs/c-runtime-library/reference/or.md
@@ -1,8 +1,9 @@
---
title: "or"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["std::or", "std.or", "Or"]
helpviewer_keywords: ["or function"]
ms.assetid: 6523b3ac-0a18-44ec-9e9a-b9bab8525ead
diff --git a/docs/c-runtime-library/reference/pclose.md b/docs/c-runtime-library/reference/pclose.md
index 25145a9900..6560be8158 100644
--- a/docs/c-runtime-library/reference/pclose.md
+++ b/docs/c-runtime-library/reference/pclose.md
@@ -1,9 +1,10 @@
---
title: "_pclose"
ms.date: "11/04/2016"
-apiname: ["_pclose"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_pclose"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_pclose", "pclose"]
helpviewer_keywords: ["_pclose function", "pclose function", "pipes, closing"]
ms.assetid: e2e31a9e-ba3a-4124-bcbb-c4040110b3d3
diff --git a/docs/c-runtime-library/reference/perror-wperror.md b/docs/c-runtime-library/reference/perror-wperror.md
index 926d394b93..af951a806a 100644
--- a/docs/c-runtime-library/reference/perror-wperror.md
+++ b/docs/c-runtime-library/reference/perror-wperror.md
@@ -1,9 +1,10 @@
---
title: "perror, _wperror"
ms.date: "11/04/2016"
-apiname: ["_wperror", "perror"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wperror", "perror"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wperror", "_tperror", "perror"]
helpviewer_keywords: ["_tperror function", "tperror function", "wperror function", "error messages, printing", "printing error messages", "_wperror function", "perror function"]
ms.assetid: 34fce792-16fd-4673-9849-cd88b54b6cd5
diff --git a/docs/c-runtime-library/reference/pipe.md b/docs/c-runtime-library/reference/pipe.md
index e3c7cdb5b2..c70eb3c715 100644
--- a/docs/c-runtime-library/reference/pipe.md
+++ b/docs/c-runtime-library/reference/pipe.md
@@ -1,9 +1,10 @@
---
title: "_pipe"
ms.date: "11/04/2016"
-apiname: ["_pipe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_pipe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["pipe", "_pipe"]
helpviewer_keywords: ["pipes, creating", "_pipe function", "pipes", "pipe function"]
ms.assetid: 8d3e9800-4041-44b5-9e93-2df0b0354a75
diff --git a/docs/c-runtime-library/reference/popen-wpopen.md b/docs/c-runtime-library/reference/popen-wpopen.md
index 1b2b66a367..935e7a493b 100644
--- a/docs/c-runtime-library/reference/popen-wpopen.md
+++ b/docs/c-runtime-library/reference/popen-wpopen.md
@@ -1,12 +1,15 @@
---
title: "_popen, _wpopen"
-ms.date: "11/04/2016"
-apiname: ["_popen", "_wpopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "A reference for the Microsoft C runtime (CRT) library functions _popen and _wpopen."
+ms.date: "01/28/2020"
+api_name: ["_popen", "_wpopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tpopen", "popen", "wpopen", "_popen", "_wpopen", "_tpopen"]
helpviewer_keywords: ["tpopen function", "pipes, creating", "_popen function", "_tpopen function", "popen function", "wpopen function", "_wpopen function"]
ms.assetid: eb718ff2-c87d-4bd4-bd2e-ba317c3d6973
+no-loc: [_popen, _wpopen, _tpopen, _doserrno, errno, _sys_errlist, _sys_nerr, EINVAL]
---
# _popen, _wpopen
@@ -30,21 +33,21 @@ FILE *_wpopen(
### Parameters
-*command*
+*command*\
Command to be executed.
-*mode*
+*mode*\
Mode of the returned stream.
-## Return Value
+## Return value
-Returns a stream associated with one end of the created pipe. The other end of the pipe is associated with the spawned command's standard input or standard output. The functions return **NULL** on an error. If the error is an invalid parameter, such as if *command* or *mode* is a null pointer, or *mode* is not a valid mode, **errno** is set to **EINVAL**. See the Remarks section for valid modes.
+Returns a stream associated with one end of the created pipe. The other end of the pipe is associated with the spawned command's standard input or standard output. The functions return **NULL** on an error. If the error is caused by an invalid parameter, **errno** is set to **EINVAL**. See the Remarks section for valid modes.
For information about these and other error codes, see [_doserrno, errno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md).
## Remarks
-The **_popen** function creates a pipe and asynchronously executes a spawned copy of the command processor with the specified string *command*. The character string *mode* specifies the type of access requested, as follows.
+The **_popen** function creates a pipe. It then asynchronously executes a spawned copy of the command processor, and uses *command* as the command line. The character string *mode* specifies the type of access requested, as follows.
|Access mode|Description|
|-|-|
@@ -106,7 +109,7 @@ int main( void )
while(fgets(psBuffer, 128, pPipe))
{
- printf(psBuffer);
+ puts(psBuffer);
}
/* Close pipe and print return value of pPipe. */
@@ -121,9 +124,7 @@ int main( void )
}
```
-### Sample Output
-
-This output assumes that there is only one file in the current directory with a .c file name extension.
+This output assumes there's only one file in the current directory that has a `.c` file name extension.
```Output
Volume in drive C is CDRIVE
@@ -140,6 +141,6 @@ Process returned 0
## See also
-[Process and Environment Control](../../c-runtime-library/process-and-environment-control.md)
-[_pclose](pclose.md)
-[_pipe](pipe.md)
+[Process and environment control](../../c-runtime-library/process-and-environment-control.md)\
+[_pclose](pclose.md)\
+[_pipe](pipe.md)
diff --git a/docs/c-runtime-library/reference/posix-chsize.md b/docs/c-runtime-library/reference/posix-chsize.md
index e7cc6aa0b1..90828a301d 100644
--- a/docs/c-runtime-library/reference/posix-chsize.md
+++ b/docs/c-runtime-library/reference/posix-chsize.md
@@ -1,13 +1,16 @@
---
title: "chsize"
-ms.date: "11/04/2016"
-apiname: ["chsize"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["chsize"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["chsize"]
helpviewer_keywords: ["chsize function"]
ms.assetid: f94d62f6-b539-4cbf-bf99-b81d081b4216
---
# chsize
-This POSIX function is deprecated. Use the ISO C++ conformant [_chsize](chsize.md) or security-enhanced [_chsize_s](chsize-s.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `chsize` is a deprecated alias for the [_chsize](chsize.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_chsize](chsize.md) or the security-enhanced [_chsize_s](chsize-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-close.md b/docs/c-runtime-library/reference/posix-close.md
index ed7c552ac0..f3c56c4b83 100644
--- a/docs/c-runtime-library/reference/posix-close.md
+++ b/docs/c-runtime-library/reference/posix-close.md
@@ -1,13 +1,16 @@
---
title: "close"
-ms.date: "11/04/2016"
-apiname: ["close"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["close"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["close"]
helpviewer_keywords: ["close function"]
ms.assetid: c79689f4-9c86-4a4a-a256-d22e3498f55d
---
# close
-This POSIX function is deprecated. Use the ISO C++ conformant [_close](close.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `close` is a deprecated alias for the [_close](close.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_close](close.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-cwait.md b/docs/c-runtime-library/reference/posix-cwait.md
index 595a7aca2c..73a261112d 100644
--- a/docs/c-runtime-library/reference/posix-cwait.md
+++ b/docs/c-runtime-library/reference/posix-cwait.md
@@ -1,16 +1,19 @@
---
title: "cwait"
-ms.date: "11/04/2016"
-apiname: ["cwait"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["cwait"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["cwait"]
helpviewer_keywords: ["cwait function"]
ms.assetid: 1ad1ab19-02e5-4155-94ca-f02c2d5a90a6
---
# cwait
-This POSIX function is deprecated. Use the ISO C++ conformant [_cwait](cwait.md) instead.
+The Microsoft-specific function name `cwait` is a deprecated alias for the [_cwait](cwait.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_cwait](cwait.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/posix-dup-dup2.md b/docs/c-runtime-library/reference/posix-dup-dup2.md
index d3465501e5..7eeba11d5f 100644
--- a/docs/c-runtime-library/reference/posix-dup-dup2.md
+++ b/docs/c-runtime-library/reference/posix-dup-dup2.md
@@ -1,13 +1,16 @@
---
title: "dup, dup2"
-ms.date: "11/04/2016"
-apiname: ["dup2", "dup"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["dup2", "dup"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["dup", "dup2"]
helpviewer_keywords: ["dup function", "dup2 function"]
ms.assetid: c7572170-47ff-4e0d-b9c3-10f0ab0ba40a
---
# dup, dup2
-These POSIX functions are deprecated. Use the ISO C++ conformant [_dup, _dup2](dup-dup2.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function names `dup` and `dup2` are deprecated aliases for the [_dup](dup-dup2.md) and [_dup2](dup-dup2.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_dup](dup-dup2.md) and [_dup2](dup-dup2.md) instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-ecvt.md b/docs/c-runtime-library/reference/posix-ecvt.md
index f6b87c372c..1bcd476e3c 100644
--- a/docs/c-runtime-library/reference/posix-ecvt.md
+++ b/docs/c-runtime-library/reference/posix-ecvt.md
@@ -1,13 +1,16 @@
---
title: "ecvt"
-ms.date: "11/04/2016"
-apiname: ["ecvt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["ecvt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ecvt"]
helpviewer_keywords: ["ecvt function"]
ms.assetid: a24fccea-033a-4cc7-b120-4fd0f525a7e3
---
# ecvt
-This POSIX function is deprecated. Use the ISO C++ conformant [_ecvt](ecvt.md) or security-enhanced [_ecvt_s](ecvt-s.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `ecvt` is a deprecated alias for the [_ecvt](ecvt.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_ecvt](ecvt.md) or the security-enhanced [_ecvt_s](ecvt-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-eof.md b/docs/c-runtime-library/reference/posix-eof.md
index 7357e57e07..049d421293 100644
--- a/docs/c-runtime-library/reference/posix-eof.md
+++ b/docs/c-runtime-library/reference/posix-eof.md
@@ -1,13 +1,16 @@
---
title: "eof"
-ms.date: "11/04/2016"
-apiname: ["eof"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["eof"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["eof"]
helpviewer_keywords: ["eof function"]
ms.assetid: 2e8fb55b-b736-46a6-be5e-15f8876a714f
---
# eof
-This POSIX function is deprecated. Use the ISO C++ conformant [_eof](eof.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `eof` is a deprecated alias for the [_eof](eof.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_eof](eof.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-fcvt.md b/docs/c-runtime-library/reference/posix-fcvt.md
index 5660291675..dec478835e 100644
--- a/docs/c-runtime-library/reference/posix-fcvt.md
+++ b/docs/c-runtime-library/reference/posix-fcvt.md
@@ -1,13 +1,16 @@
---
title: "fcvt"
-ms.date: "11/04/2016"
-apiname: ["fcvt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["fcvt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fcvt"]
helpviewer_keywords: ["fcvt function"]
ms.assetid: 1f748ad0-e186-400e-af8e-80d4431523d7
---
# fcvt
-This POSIX function is deprecated. Use the ISO C++ conformant [_fcvt](fcvt.md) or security-enhanced [_fcvt_s](fcvt-s.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `fcvt` is a deprecated alias for the [_fcvt](fcvt.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_fcvt](fcvt.md) or the security-enhanced [_fcvt_s](fcvt-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-fileno.md b/docs/c-runtime-library/reference/posix-fileno.md
index 3d23305034..f979642ec6 100644
--- a/docs/c-runtime-library/reference/posix-fileno.md
+++ b/docs/c-runtime-library/reference/posix-fileno.md
@@ -1,13 +1,16 @@
---
title: "fileno"
-ms.date: "11/04/2016"
-apiname: ["fileno"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["fileno"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["fileno"]
helpviewer_keywords: ["fileno function"]
ms.assetid: 8f33e1e0-0dc8-4311-b690-ec6e577a64b5
---
# fileno
-This POSIX function is deprecated. Use the ISO C++ conformant [_fileno](fileno.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `fileno` is a deprecated alias for the [_fileno](fileno.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_fileno](fileno.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-flushall.md b/docs/c-runtime-library/reference/posix-flushall.md
index 83e444ba85..61ac51daa5 100644
--- a/docs/c-runtime-library/reference/posix-flushall.md
+++ b/docs/c-runtime-library/reference/posix-flushall.md
@@ -1,13 +1,16 @@
---
title: "flushall"
-ms.date: "11/04/2016"
-apiname: ["flushall"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["flushall"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["flushall"]
helpviewer_keywords: ["flushall function"]
ms.assetid: 481429ae-3980-4233-9495-a3ee56e7c838
---
# flushall
-This POSIX function is deprecated. Use the ISO C++ conformant [_flushall](flushall.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `flushall` is a deprecated alias for the [_flushall](flushall.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_flushall](flushall.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-gcvt.md b/docs/c-runtime-library/reference/posix-gcvt.md
index ab5441f687..329dbb7701 100644
--- a/docs/c-runtime-library/reference/posix-gcvt.md
+++ b/docs/c-runtime-library/reference/posix-gcvt.md
@@ -1,13 +1,16 @@
---
title: "gcvt"
-ms.date: "11/04/2016"
-apiname: ["gcvt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["gcvt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["gcvt"]
helpviewer_keywords: ["gcvt function"]
ms.assetid: 913478fd-ef22-4dee-b558-ff2bd6d72f3d
---
# gcvt
-This POSIX function is deprecated. Use the ISO C++ conformant [_gcvt](gcvt.md) or security-enhanced [_gcvt_s](gcvt-s.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `gcvt` is a deprecated alias for the [_gcvt](gcvt.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_gcvt](gcvt.md) or the security-enhanced [_gcvt_s](gcvt-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-getpid.md b/docs/c-runtime-library/reference/posix-getpid.md
index eb6c152068..5b4441fe1d 100644
--- a/docs/c-runtime-library/reference/posix-getpid.md
+++ b/docs/c-runtime-library/reference/posix-getpid.md
@@ -1,16 +1,19 @@
---
title: "getpid"
-ms.date: "11/04/2016"
-apiname: ["getpid"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["getpid"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getpid"]
helpviewer_keywords: ["getpid function"]
ms.assetid: 4eaabab4-362b-429f-854e-ae4941919824
---
# getpid
-This POSIX function is deprecated. Use the ISO C++ conformant [_getpid](getpid.md) instead.
+The Microsoft-implemented POSIX function name `getpid` is a deprecated alias for the [_getpid](getpid.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_getpid](getpid.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/posix-getw.md b/docs/c-runtime-library/reference/posix-getw.md
index 19f2cf5925..4ce6f6cfea 100644
--- a/docs/c-runtime-library/reference/posix-getw.md
+++ b/docs/c-runtime-library/reference/posix-getw.md
@@ -1,13 +1,16 @@
---
title: "getw"
-ms.date: "11/04/2016"
-apiname: ["getw"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["getw"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["getw"]
helpviewer_keywords: ["getw function"]
ms.assetid: d3c347a4-3ff1-403b-8d02-2dd3b429bb5f
---
# getw
-This POSIX function is deprecated. Use the ISO C++ conformant [_getw](getw.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `getw` is a deprecated alias for the [_getw](getw.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_getw](getw.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-isatty.md b/docs/c-runtime-library/reference/posix-isatty.md
index 08da613461..7f23ee55ec 100644
--- a/docs/c-runtime-library/reference/posix-isatty.md
+++ b/docs/c-runtime-library/reference/posix-isatty.md
@@ -1,13 +1,16 @@
---
title: "isatty"
-ms.date: "11/04/2016"
-apiname: ["isatty"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["isatty"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["isatty"]
helpviewer_keywords: ["isatty function"]
ms.assetid: 610d0b09-a1db-41ef-9f45-a2c6076b4683
---
# isatty
-This POSIX function is deprecated. Use the ISO C++ conformant [_isatty](isatty.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `isatty` is a deprecated alias for the [_isatty](isatty.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_isatty](isatty.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-kbhit.md b/docs/c-runtime-library/reference/posix-kbhit.md
index 14782f7df8..2e8a9effcf 100644
--- a/docs/c-runtime-library/reference/posix-kbhit.md
+++ b/docs/c-runtime-library/reference/posix-kbhit.md
@@ -1,16 +1,19 @@
---
title: "kbhit"
-ms.date: "11/04/2016"
-apiname: ["kbhit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["kbhit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["kbhit"]
helpviewer_keywords: ["kbhit function"]
ms.assetid: 73f1eed7-b3ef-4887-8ec6-755367de1d7d
---
# kbhit
-This POSIX function is deprecated. Use the ISO C++ conformant [_kbhit](kbhit.md) instead.
+The Microsoft-specific function name `kbhit` is a deprecated alias for the [_kbhit](kbhit.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_kbhit](kbhit.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/posix-lfind.md b/docs/c-runtime-library/reference/posix-lfind.md
index d72b57dc06..694fefa19e 100644
--- a/docs/c-runtime-library/reference/posix-lfind.md
+++ b/docs/c-runtime-library/reference/posix-lfind.md
@@ -1,13 +1,16 @@
---
title: "lfind"
-ms.date: "11/04/2016"
-apiname: ["lfind"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["lfind"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lfind"]
helpviewer_keywords: ["lfind function"]
ms.assetid: 2528e787-94b6-4740-8a8d-6efc276d1f42
---
# lfind
-This POSIX function is deprecated. Use the ISO C++ conformant [_lfind](lfind.md) or security-enhanced [_lfind_s](lfind-s.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `lfind` is a deprecated alias for the [_lfind](lfind.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_lfind](lfind.md) or security-enhanced [_lfind_s](lfind-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-locking.md b/docs/c-runtime-library/reference/posix-locking.md
index d22efb9ac7..e2266ec103 100644
--- a/docs/c-runtime-library/reference/posix-locking.md
+++ b/docs/c-runtime-library/reference/posix-locking.md
@@ -1,13 +1,16 @@
---
title: "locking"
-ms.date: "11/04/2016"
-apiname: ["locking"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["locking"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["locking"]
helpviewer_keywords: ["locking function"]
ms.assetid: 1db15308-543e-44cf-a26f-5539f8e4fb2f
---
# locking
-This POSIX function is deprecated. Use the ISO C++ conformant [_locking](locking.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `locking` is a deprecated alias for the [_locking](locking.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_locking](locking.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-lsearch.md b/docs/c-runtime-library/reference/posix-lsearch.md
index 1de0cbe55b..16ead360bf 100644
--- a/docs/c-runtime-library/reference/posix-lsearch.md
+++ b/docs/c-runtime-library/reference/posix-lsearch.md
@@ -1,13 +1,16 @@
---
title: "lsearch"
-ms.date: "11/04/2016"
-apiname: ["lsearch"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["lsearch"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["lsearch"]
helpviewer_keywords: ["lsearch function"]
ms.assetid: 130da3fc-904a-4375-b0ab-79bfea8a455f
---
# lsearch
-This POSIX function is deprecated. Use the ISO C++ conformant [_lsearch](lsearch.md) or security-enhanced [_lsearch_s](lsearch-s.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `lsearch` is a deprecated alias for the [_lsearch](lsearch.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_lsearch](lsearch.md) or security-enhanced [_lsearch_s](lsearch-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-memccpy.md b/docs/c-runtime-library/reference/posix-memccpy.md
index 26bc9c4e98..8de2d82f4c 100644
--- a/docs/c-runtime-library/reference/posix-memccpy.md
+++ b/docs/c-runtime-library/reference/posix-memccpy.md
@@ -1,13 +1,16 @@
---
title: "memccpy"
-ms.date: "11/04/2016"
-apiname: ["memccpy"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["memccpy"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["memccpy"]
helpviewer_keywords: ["memccpy function"]
ms.assetid: e9951812-2b69-43e9-bbee-a0001bce4d80
---
# memccpy
-This POSIX function is deprecated. Use the ISO C++ conformant [_memccpy](memccpy.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `memccpy` is a deprecated alias for the [_memccpy](memccpy.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_memccpy](memccpy.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-putw.md b/docs/c-runtime-library/reference/posix-putw.md
index 3e001100d2..02caba59ec 100644
--- a/docs/c-runtime-library/reference/posix-putw.md
+++ b/docs/c-runtime-library/reference/posix-putw.md
@@ -1,13 +1,16 @@
---
title: "putw"
-ms.date: "11/04/2016"
-apiname: ["putw"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["putw"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["putw"]
helpviewer_keywords: ["putw function"]
ms.assetid: a004fbb6-7643-4f3f-9ee1-87a23154d49a
---
# putw
-This POSIX function is deprecated. Use the ISO C++ conformant [_putw](putw.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `putw` is a deprecated alias for the [_putw](putw.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_putw](putw.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-read.md b/docs/c-runtime-library/reference/posix-read.md
index 7a3209b522..a069d13c8f 100644
--- a/docs/c-runtime-library/reference/posix-read.md
+++ b/docs/c-runtime-library/reference/posix-read.md
@@ -1,13 +1,16 @@
---
title: "read"
-ms.date: "11/04/2016"
-apiname: ["read"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["read"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["read"]
helpviewer_keywords: ["read function"]
ms.assetid: 9e0eead4-d38c-4f65-87f5-f6c12da40ead
---
# read
-This POSIX function is deprecated. Use the ISO C++ conformant [_read](read.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `read` is a deprecated alias for the [_read](read.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_read](read.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-rmtmp.md b/docs/c-runtime-library/reference/posix-rmtmp.md
index a211b99efe..009607a1fb 100644
--- a/docs/c-runtime-library/reference/posix-rmtmp.md
+++ b/docs/c-runtime-library/reference/posix-rmtmp.md
@@ -1,13 +1,16 @@
---
title: "rmtmp"
-ms.date: "11/04/2016"
-apiname: ["rmtmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["rmtmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["rmtmp"]
helpviewer_keywords: ["rmtmp function"]
ms.assetid: d79f0364-39e8-42fb-a73a-63c22a646cd8
---
# rmtmp
-This POSIX function is deprecated. Use the ISO C++ conformant [_rmtmp](rmtmp.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `rmtmp` is a deprecated alias for the [_rmtmp](rmtmp.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_rmtmp](rmtmp.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-setmode.md b/docs/c-runtime-library/reference/posix-setmode.md
index 4a344f9e03..d67e53ebc7 100644
--- a/docs/c-runtime-library/reference/posix-setmode.md
+++ b/docs/c-runtime-library/reference/posix-setmode.md
@@ -1,13 +1,16 @@
---
title: "setmode"
-ms.date: "11/04/2016"
-apiname: ["setmode"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["setmode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["setmode"]
helpviewer_keywords: ["setmode function"]
ms.assetid: cb959d9e-09f3-45af-8943-85f4ca0d3f5a
---
# setmode
-This POSIX function is deprecated. Use the ISO C++ conformant [_setmode](setmode.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `setmode` is a deprecated alias for the [_setmode](setmode.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_setmode](setmode.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-swab.md b/docs/c-runtime-library/reference/posix-swab.md
index d7aa06586f..97e83eda69 100644
--- a/docs/c-runtime-library/reference/posix-swab.md
+++ b/docs/c-runtime-library/reference/posix-swab.md
@@ -1,13 +1,16 @@
---
title: "swab"
-ms.date: "11/04/2016"
-apiname: ["swab"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["swab"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["swab"]
helpviewer_keywords: ["swab function"]
ms.assetid: fb8b7137-420d-4485-bb65-e1ec68602905
---
# swab
-This POSIX function is deprecated. Use the ISO C++ conformant [_swab](swab.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `swab` is a deprecated alias for the [_swab](swab.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_swab](swab.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-tzset.md b/docs/c-runtime-library/reference/posix-tzset.md
index e155d10dd6..507328fa88 100644
--- a/docs/c-runtime-library/reference/posix-tzset.md
+++ b/docs/c-runtime-library/reference/posix-tzset.md
@@ -1,16 +1,19 @@
---
title: "tzset"
-ms.date: "11/04/2016"
-apiname: ["tzset"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["tzset"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tzset"]
helpviewer_keywords: ["tzset function"]
ms.assetid: c3afa5d0-cb15-4163-9181-fafb962c95aa
---
# tzset
-This POSIX function is deprecated. Use the ISO C++ conformant [_tzset](tzset.md) instead.
+The Microsoft-implemented POSIX function name `tzset` is a deprecated alias for the [_tzset](tzset.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_tzset](tzset.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/posix-umask.md b/docs/c-runtime-library/reference/posix-umask.md
index d3d3fc257f..848158e520 100644
--- a/docs/c-runtime-library/reference/posix-umask.md
+++ b/docs/c-runtime-library/reference/posix-umask.md
@@ -1,13 +1,16 @@
---
title: "umask"
-ms.date: "11/04/2016"
-apiname: ["umask"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["umask"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["umask"]
helpviewer_keywords: ["umask function"]
ms.assetid: d2f697fc-08d5-4b70-9dd5-df3f5bb8b754
---
# umask
-This POSIX function is deprecated. Use the ISO C++ conformant [_umask](umask.md) or security-enhanced [_umask_s](umask-s.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `umask` is a deprecated alias for the [_umask](umask.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_umask](umask.md) or security-enhanced [_umask_s](umask-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/posix-write.md b/docs/c-runtime-library/reference/posix-write.md
index 4e4ecadae1..440e8dacff 100644
--- a/docs/c-runtime-library/reference/posix-write.md
+++ b/docs/c-runtime-library/reference/posix-write.md
@@ -1,13 +1,16 @@
---
title: "write"
-ms.date: "11/04/2016"
-apiname: ["write"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["write"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["write"]
helpviewer_keywords: ["write function"]
ms.assetid: 1cbf112e-b9ef-4df6-993a-83abd4213acd
---
# write
-This POSIX function is deprecated. Use the ISO C++ conformant [_write](write.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `write` is a deprecated alias for the [_write](write.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_write](write.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/pow-powf-powl.md b/docs/c-runtime-library/reference/pow-powf-powl.md
index b9418f3883..a724043ad8 100644
--- a/docs/c-runtime-library/reference/pow-powf-powl.md
+++ b/docs/c-runtime-library/reference/pow-powf-powl.md
@@ -1,9 +1,10 @@
---
title: "pow, powf, powl"
ms.date: "04/05/2018"
-apiname: ["powl", "pow", "powf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["powl", "pow", "powf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["powl", "pow", "_powl", "powf"]
helpviewer_keywords: ["exponential calculations", "powl function", "_powl function", "exponentiation", "powers, calculating", "calculating exponentials", "powf function", "pow function"]
ms.assetid: e75c33ed-2e59-48b1-be40-81da917324f1
diff --git a/docs/c-runtime-library/reference/printf-p-printf-p-l-wprintf-p-wprintf-p-l.md b/docs/c-runtime-library/reference/printf-p-printf-p-l-wprintf-p-wprintf-p-l.md
index fa30305f81..e043033a2d 100644
--- a/docs/c-runtime-library/reference/printf-p-printf-p-l-wprintf-p-wprintf-p-l.md
+++ b/docs/c-runtime-library/reference/printf-p-printf-p-l-wprintf-p-wprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_printf_p, _printf_p_l, _wprintf_p, _wprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_printf_p", "_wprintf_p", "_printf_p_l", "_wprintf_p_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_printf_p", "_wprintf_p", "_printf_p_l", "_wprintf_p_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wprintf_p", "_wprintf_p", "printf_p_l", "_printf_p", "printf_p", "_wprintf_p_l", "_printf_p_l", "wprintf_p_l"]
helpviewer_keywords: ["printf_p function", "printf_p_l function", "wprintf_p function", "wprintf_p_l function", "_tprintf_p_l function", "_wprintf_p function", "_wprintf_p_l function", "_printf_p function", "tprintf_p_l function", "_printf_p_l function"]
ms.assetid: 1b7e9ef9-a069-45db-af9d-c2730168322e
diff --git a/docs/c-runtime-library/reference/printf-printf-l-wprintf-wprintf-l.md b/docs/c-runtime-library/reference/printf-printf-l-wprintf-wprintf-l.md
index 46d64ad0b6..e88c47beee 100644
--- a/docs/c-runtime-library/reference/printf-printf-l-wprintf-wprintf-l.md
+++ b/docs/c-runtime-library/reference/printf-printf-l-wprintf-wprintf-l.md
@@ -1,9 +1,10 @@
---
title: "printf, _printf_l, wprintf, _wprintf_l"
ms.date: "11/04/2016"
-apiname: ["_printf_l", "wprintf", "_wprintf_l", "printf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_printf_l", "wprintf", "_wprintf_l", "printf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["printf", "_tprintf", "wprintf"]
helpviewer_keywords: ["printf function", "printf_l function", "tprintf_l function", "tprintf function", "_printf_l function", "wprintf function", "writing to console", "wprintf_l function", "_tprintf_l function", "_wprintf_l function", "_tprintf function", "printf function, format specification fields", "printf function, using", "formatted text [C++]"]
ms.assetid: 77a854ae-5b48-4865-89f4-f2dc5cf80f52
diff --git a/docs/c-runtime-library/reference/printf-s-printf-s-l-wprintf-s-wprintf-s-l.md b/docs/c-runtime-library/reference/printf-s-printf-s-l-wprintf-s-wprintf-s-l.md
index a36fb5eeb3..f1cc92d3f2 100644
--- a/docs/c-runtime-library/reference/printf-s-printf-s-l-wprintf-s-wprintf-s-l.md
+++ b/docs/c-runtime-library/reference/printf-s-printf-s-l-wprintf-s-wprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "printf_s, _printf_s_l, wprintf_s, _wprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_printf_s_l", "wprintf_s", "_wprintf_s_l", "printf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_printf_s_l", "wprintf_s", "_wprintf_s_l", "printf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wprintf_s", "printf_s"]
helpviewer_keywords: ["wprintf_s function", "tprintf_s function", "_tprintf_s function", "printf_s_l function", "printf_s function", "_printf_s_l function", "printf function, format specification fields", "printf function, using", "_tprintf_s_l function", "wprintf_s_l function", "formatted text [C++]", "tprintf_s_l function", "_wprintf_s_l function"]
ms.assetid: 044ebb2e-5cc1-445d-bb4c-f084b405615b
diff --git a/docs/c-runtime-library/reference/purecall.md b/docs/c-runtime-library/reference/purecall.md
index 2a70dc11e3..8d47a7c3c6 100644
--- a/docs/c-runtime-library/reference/purecall.md
+++ b/docs/c-runtime-library/reference/purecall.md
@@ -1,9 +1,10 @@
---
title: "_purecall"
ms.date: "11/04/2016"
-apiname: ["_purecall"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_purecall"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["purecall", "_purecall"]
helpviewer_keywords: ["_purecall function", "purecall function"]
ms.assetid: 56135d9b-3403-4e22-822d-e714523801cc
diff --git a/docs/c-runtime-library/reference/putc-nolock-putwc-nolock.md b/docs/c-runtime-library/reference/putc-nolock-putwc-nolock.md
index e95aff83c9..8f9da990af 100644
--- a/docs/c-runtime-library/reference/putc-nolock-putwc-nolock.md
+++ b/docs/c-runtime-library/reference/putc-nolock-putwc-nolock.md
@@ -1,9 +1,10 @@
---
title: "_putc_nolock, _putwc_nolock"
ms.date: "11/04/2016"
-apiname: ["_putc_nolock", "_putwc_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_putc_nolock", "_putwc_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_puttc_nolock", "puttc_nolock", "putwc_nolock", "_putwc_nolock", "_putc_nolock", "putc_nolock"]
helpviewer_keywords: ["puttc_nolock function", "putc_nolock function", "_putc_nolock function", "streams, writing characters to", "characters, writing", "putwc_nolock function", "_puttc_nolock function", "_putwc_nolock function"]
ms.assetid: 3cfc7f21-c9e8-4b7f-b0fb-af0d4d85e7e1
diff --git a/docs/c-runtime-library/reference/putc-putwc.md b/docs/c-runtime-library/reference/putc-putwc.md
index d7c23e7f93..3dd75f7607 100644
--- a/docs/c-runtime-library/reference/putc-putwc.md
+++ b/docs/c-runtime-library/reference/putc-putwc.md
@@ -1,9 +1,10 @@
---
title: "putc, putwc"
ms.date: "11/04/2016"
-apiname: ["putwc", "putc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["putwc", "putc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_puttc", "putwc", "putc"]
helpviewer_keywords: ["streams, writing characters to", "characters, writing", "putwc function", "putc function", "_puttc function", "puttc function"]
ms.assetid: a37b2e82-9d88-4565-8190-ff8d04c0ddb9
diff --git a/docs/c-runtime-library/reference/putch-nolock-putwch-nolock.md b/docs/c-runtime-library/reference/putch-nolock-putwch-nolock.md
index 9728ed8429..48cb5c728f 100644
--- a/docs/c-runtime-library/reference/putch-nolock-putwch-nolock.md
+++ b/docs/c-runtime-library/reference/putch-nolock-putwch-nolock.md
@@ -1,9 +1,10 @@
---
title: "_putch_nolock, _putwch_nolock"
ms.date: "11/04/2016"
-apiname: ["_putwch_nolock", "_putch_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_putwch_nolock", "_putch_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_putch_nolock", "_puttch_nolock", "putch_nolock", "putwch_nolock", "_putwch_nolock"]
helpviewer_keywords: ["putwch_nolock function", "puttch_nolock function", "characters, writing", "putch_nolock function", "_putch_nolock function", "_puttch_nolock function", "console, writing characters to", "_putwch_nolock function"]
ms.assetid: edbc811d-bac6-47fa-a872-fe4f3a1590b0
diff --git a/docs/c-runtime-library/reference/putch-putwch.md b/docs/c-runtime-library/reference/putch-putwch.md
index 8f168f81a2..b620c760e5 100644
--- a/docs/c-runtime-library/reference/putch-putwch.md
+++ b/docs/c-runtime-library/reference/putch-putwch.md
@@ -1,9 +1,10 @@
---
title: "_putch, _putwch"
ms.date: "11/04/2016"
-apiname: ["_putwch", "_putch"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_putwch", "_putch"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_putch", "putwch", "_putwch"]
helpviewer_keywords: ["_putch function", "characters, writing", "putwch function", "_putwch function", "putch function", "console, writing characters to"]
ms.assetid: 3babc7cf-e333-405d-8449-c788d61d51aa
diff --git a/docs/c-runtime-library/reference/putch.md b/docs/c-runtime-library/reference/putch.md
index 6f008db5f5..183d19f0dc 100644
--- a/docs/c-runtime-library/reference/putch.md
+++ b/docs/c-runtime-library/reference/putch.md
@@ -1,16 +1,19 @@
---
title: "putch"
-ms.date: "11/04/2016"
-apiname: ["putch"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["putch"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["putch"]
helpviewer_keywords: ["putch function"]
ms.assetid: 81e733e5-770e-4c7a-b7e4-8e66da109f92
---
# putch
-This POSIX function is deprecated. Use the ISO C++ conformant [_putch](putch-putwch.md) instead.
+The Microsoft-specific function name `putch` is a deprecated alias for the [_putch](putch-putwch.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_putch](putch-putwch.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/putchar-nolock-putwchar-nolock.md b/docs/c-runtime-library/reference/putchar-nolock-putwchar-nolock.md
index a95d1ccd38..40ad8a6e84 100644
--- a/docs/c-runtime-library/reference/putchar-nolock-putwchar-nolock.md
+++ b/docs/c-runtime-library/reference/putchar-nolock-putwchar-nolock.md
@@ -1,9 +1,10 @@
---
title: "_putchar_nolock, _putwchar_nolock"
ms.date: "11/04/2016"
-apiname: ["_putchar_nolock", "_putwchar_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_putchar_nolock", "_putwchar_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["putwchar_nolock", "_puttchar_nolock", "_putchar_nolock", "_putwchar_nolock", "putchar_nolock"]
helpviewer_keywords: ["_puttchar_nolock function", "putchar_nolock function", "characters, writing", "standard output, writing to", "putwchar_nolock function", "_putchar_nolock function", "_putwchar_nolock function", "puttchar_nolock function"]
ms.assetid: 9ac68092-bfc3-4352-b486-c3e780220575
diff --git a/docs/c-runtime-library/reference/putchar-putwchar.md b/docs/c-runtime-library/reference/putchar-putwchar.md
index 09839387fe..420a161a32 100644
--- a/docs/c-runtime-library/reference/putchar-putwchar.md
+++ b/docs/c-runtime-library/reference/putchar-putwchar.md
@@ -1,9 +1,10 @@
---
title: "putchar, putwchar"
ms.date: "11/04/2016"
-apiname: ["putchar", "putwchar"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["putchar", "putwchar"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["putchar", "putwchar", "_puttchar"]
helpviewer_keywords: ["putchar function", "_puttchar function", "characters, writing", "standard output, writing to", "putwchar function"]
ms.assetid: 93657c7f-cca1-4032-8e3a-cd6ab6193748
diff --git a/docs/c-runtime-library/reference/putenv-s-wputenv-s.md b/docs/c-runtime-library/reference/putenv-s-wputenv-s.md
index c61201647c..411bc32eb3 100644
--- a/docs/c-runtime-library/reference/putenv-s-wputenv-s.md
+++ b/docs/c-runtime-library/reference/putenv-s-wputenv-s.md
@@ -1,9 +1,10 @@
---
title: "_putenv_s, _wputenv_s"
ms.date: "11/04/2016"
-apiname: ["_wputenv_s", "_putenv_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wputenv_s", "_putenv_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["putenv_s", "wputenv_s", "_wputenv_s", "_putenv_s"]
helpviewer_keywords: ["wputenv_s function", "_putenv_s function", "environment variables, deleting", "putenv_s function", "_wputenv_s function", "environment variables, creating", "environment variables, modifying"]
ms.assetid: fbf51225-a8da-4b9b-9d7c-0b84ef72df18
diff --git a/docs/c-runtime-library/reference/putenv-wputenv.md b/docs/c-runtime-library/reference/putenv-wputenv.md
index 9e8e1d1299..40519e0f89 100644
--- a/docs/c-runtime-library/reference/putenv-wputenv.md
+++ b/docs/c-runtime-library/reference/putenv-wputenv.md
@@ -1,9 +1,10 @@
---
title: "_putenv, _wputenv"
ms.date: "11/04/2016"
-apiname: ["_putenv", "_wputenv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_putenv", "_wputenv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tputenv", "_wputenv", "_putenv", "wputenv", "tputenv"]
helpviewer_keywords: ["_putenv function", "environment variables, deleting", "putenv function", "tputenv function", "environment variables, creating", "wputenv function", "_wputenv function", "_tputenv function", "environment variables, modifying"]
ms.assetid: 9ba9b7fd-276e-45df-8420-d70c4204b8bd
diff --git a/docs/c-runtime-library/reference/putenv.md b/docs/c-runtime-library/reference/putenv.md
index 19a6528f09..de4aadab9e 100644
--- a/docs/c-runtime-library/reference/putenv.md
+++ b/docs/c-runtime-library/reference/putenv.md
@@ -1,16 +1,19 @@
---
title: "putenv"
-ms.date: "11/04/2016"
-apiname: ["putenv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["putenv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["putenv"]
helpviewer_keywords: ["putenv function"]
ms.assetid: 1dc49ef3-6b12-484c-8e60-7048bcc999f1
---
# putenv
-This POSIX function is deprecated. Use the ISO C++ conformant [_putenv](putenv-wputenv.md) or security-enhanced [_putenv_s](putenv-s-wputenv-s.md) instead.
+The Microsoft-implemented POSIX function name `putenv` is a deprecated alias for the [_putenv](putenv-wputenv.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_putenv](putenv-wputenv.md) or security-enhanced [_putenv_s](putenv-s-wputenv-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/puts-putws.md b/docs/c-runtime-library/reference/puts-putws.md
index 5cdcd1b4d4..d8149a67a9 100644
--- a/docs/c-runtime-library/reference/puts-putws.md
+++ b/docs/c-runtime-library/reference/puts-putws.md
@@ -1,9 +1,10 @@
---
title: "puts, _putws"
ms.date: "11/04/2016"
-apiname: ["_putws", "puts"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_putws", "puts"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_putts", "_putws", "puts"]
helpviewer_keywords: ["strings [C++], writing", "_putts function", "standard output, writing to", "putws function", "puts function", "putts function", "_putws function"]
ms.assetid: 32dada12-ed45-40ac-be06-3feeced9ecd6
diff --git a/docs/c-runtime-library/reference/putw.md b/docs/c-runtime-library/reference/putw.md
index 1b37e48524..067e860ded 100644
--- a/docs/c-runtime-library/reference/putw.md
+++ b/docs/c-runtime-library/reference/putw.md
@@ -1,9 +1,10 @@
---
title: "_putw"
ms.date: "11/04/2016"
-apiname: ["_putw"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_putw"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_putw", "putw"]
helpviewer_keywords: ["integers, writing to streams", "putw function", "streams, writing integers to", "_putw function"]
ms.assetid: 83d63644-249d-4a39-87e5-3b7aa313968d
diff --git a/docs/c-runtime-library/reference/qsort-s.md b/docs/c-runtime-library/reference/qsort-s.md
index ac14e3e3f1..330a313207 100644
--- a/docs/c-runtime-library/reference/qsort-s.md
+++ b/docs/c-runtime-library/reference/qsort-s.md
@@ -1,9 +1,10 @@
---
title: "qsort_s"
ms.date: "11/04/2016"
-apiname: ["qsort_s"]
-apilocation: ["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-utility-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["qsort_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-utility-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["qsort_s"]
helpviewer_keywords: ["arrays [C++], sorting", "quick-sort algorithm", "qsort_s function", "sorting arrays"]
ms.assetid: 6ee817b0-4408-4355-a5d4-6605e419ab91
diff --git a/docs/c-runtime-library/reference/qsort.md b/docs/c-runtime-library/reference/qsort.md
index 368d515447..1c3b62a377 100644
--- a/docs/c-runtime-library/reference/qsort.md
+++ b/docs/c-runtime-library/reference/qsort.md
@@ -1,9 +1,10 @@
---
title: "qsort"
ms.date: "11/04/2016"
-apiname: ["qsort"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-utility-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["qsort"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-utility-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["qsort"]
helpviewer_keywords: ["qsort function", "quick-sort algorithm", "sorting arrays", "arrays [CRT], sorting"]
ms.assetid: d6cb33eb-d209-485f-8d41-229eb743c027
diff --git a/docs/c-runtime-library/reference/query-new-handler.md b/docs/c-runtime-library/reference/query-new-handler.md
index 5238cf62c6..e93434f73a 100644
--- a/docs/c-runtime-library/reference/query-new-handler.md
+++ b/docs/c-runtime-library/reference/query-new-handler.md
@@ -1,9 +1,10 @@
---
title: "_query_new_handler"
ms.date: "11/04/2016"
-apiname: ["_query_new_handler"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_query_new_handler"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_query_new_handler", "query_new_handler"]
helpviewer_keywords: ["query_new_handler function", "handler routines", "error handling", "_query_new_handler function"]
ms.assetid: 9a84b5c3-fe33-4c01-83a0-be87dc3ec518
diff --git a/docs/c-runtime-library/reference/query-new-mode.md b/docs/c-runtime-library/reference/query-new-mode.md
index 79b6effd48..c9e3b41c8a 100644
--- a/docs/c-runtime-library/reference/query-new-mode.md
+++ b/docs/c-runtime-library/reference/query-new-mode.md
@@ -1,9 +1,10 @@
---
title: "_query_new_mode"
ms.date: "11/04/2016"
-apiname: ["_query_new_mode"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_query_new_mode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["query_new_mode", "_query_new_mode"]
helpviewer_keywords: ["query_new_mode function", "handler modes", "_query_new_mode function"]
ms.assetid: e185c5f9-b73b-4257-8eff-b47648374768
diff --git a/docs/c-runtime-library/reference/quick-exit1.md b/docs/c-runtime-library/reference/quick-exit1.md
index 699acb9ff8..24002e123f 100644
--- a/docs/c-runtime-library/reference/quick-exit1.md
+++ b/docs/c-runtime-library/reference/quick-exit1.md
@@ -1,9 +1,10 @@
---
title: "quick_exit1"
ms.date: "11/04/2016"
-apiname: ["quick_exit"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["quick_exit"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["quick_exit", "process/quick_exit", "stdlib/quick_exit"]
helpviewer_keywords: ["quick_exit function"]
ms.assetid: ecfbdae6-01c4-45fa-aaeb-b368e1de2a9c
diff --git a/docs/c-runtime-library/reference/raise.md b/docs/c-runtime-library/reference/raise.md
index be820c856c..69c5cb22ce 100644
--- a/docs/c-runtime-library/reference/raise.md
+++ b/docs/c-runtime-library/reference/raise.md
@@ -1,9 +1,10 @@
---
title: "raise"
-ms.date: "1/02/2018"
-apiname: ["raise"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "01/02/2018"
+api_name: ["raise"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["Raise"]
helpviewer_keywords: ["signals, sending to executing programs", "raise function", "signals", "programs [C++], sending signals to executing programs"]
---
diff --git a/docs/c-runtime-library/reference/rand-s.md b/docs/c-runtime-library/reference/rand-s.md
index 7944ef6518..59c30399a6 100644
--- a/docs/c-runtime-library/reference/rand-s.md
+++ b/docs/c-runtime-library/reference/rand-s.md
@@ -1,9 +1,10 @@
---
title: "rand_s"
-ms.date: "1/02/2018"
-apiname: ["rand_s"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "01/02/2018"
+api_name: ["rand_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["rand_s"]
helpviewer_keywords: ["generating pseudorandom numbers", "random numbers, cryptographically secure", "random numbers, generating", "rand_s function", "numbers, pseudorandom", "cryptographically secure random numbers", "pseudorandom numbers", "numbers, generating pseudorandom"]
---
diff --git a/docs/c-runtime-library/reference/rand.md b/docs/c-runtime-library/reference/rand.md
index 0f6da214b6..dfe8433a64 100644
--- a/docs/c-runtime-library/reference/rand.md
+++ b/docs/c-runtime-library/reference/rand.md
@@ -1,9 +1,10 @@
---
title: "rand"
-ms.date: "1/02/2018"
-apiname: ["rand"]
-apilocation: ["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-utility-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+ms.date: "01/02/2018"
+api_name: ["rand"]
+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-utility-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["rand"]
helpviewer_keywords: ["generating pseudorandom numbers", "random numbers, generating", "numbers, pseudorandom", "rand function", "pseudorandom numbers", "numbers, generating pseudorandom"]
---
diff --git a/docs/c-runtime-library/reference/read.md b/docs/c-runtime-library/reference/read.md
index 738efee59d..1793c4c712 100644
--- a/docs/c-runtime-library/reference/read.md
+++ b/docs/c-runtime-library/reference/read.md
@@ -1,9 +1,10 @@
---
title: "_read"
ms.date: "02/13/2019"
-apiname: ["_read"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_read"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_read"]
helpviewer_keywords: ["data [CRT]", "_read function", "read function", "data [C++], reading", "reading data [C++]", "files [C++], reading"]
ms.assetid: 2ce9c433-57ad-47fe-9ac1-4a7d4c883d30
diff --git a/docs/c-runtime-library/reference/realloc-dbg.md b/docs/c-runtime-library/reference/realloc-dbg.md
index 49208d5abc..8226eac17e 100644
--- a/docs/c-runtime-library/reference/realloc-dbg.md
+++ b/docs/c-runtime-library/reference/realloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_realloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_realloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_realloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_realloc_dbg", "realloc_dbg"]
helpviewer_keywords: ["reallocating memory blocks", "realloc_dbg function", "memory blocks, reallocating", "memory, reallocating", "_realloc_dbg function"]
ms.assetid: 7c3cb780-51ed-4d9c-9929-cdde606d846a
diff --git a/docs/c-runtime-library/reference/realloc.md b/docs/c-runtime-library/reference/realloc.md
index 86b6f956fb..ad22d06488 100644
--- a/docs/c-runtime-library/reference/realloc.md
+++ b/docs/c-runtime-library/reference/realloc.md
@@ -1,9 +1,10 @@
---
title: "realloc"
ms.date: "11/04/2016"
-apiname: ["realloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["realloc"]
+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"]
+topic_type: ["apiref"]
f1_keywords: ["_brealloc", "_nrealloc", "realloc", "_frealloc"]
helpviewer_keywords: ["_brealloc function", "realloc function", "nrealloc function", "frealloc function", "_nrealloc function", "memory blocks, reallocating", "memory, reallocating", "_frealloc function", "reallocate memory blocks"]
ms.assetid: 2b2239de-810b-4b11-9438-32ab0a244185
diff --git a/docs/c-runtime-library/reference/recalloc-dbg.md b/docs/c-runtime-library/reference/recalloc-dbg.md
index 90aff34419..95b612132c 100644
--- a/docs/c-runtime-library/reference/recalloc-dbg.md
+++ b/docs/c-runtime-library/reference/recalloc-dbg.md
@@ -1,9 +1,10 @@
---
title: "_recalloc_dbg"
ms.date: "11/04/2016"
-apiname: ["_recalloc_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_recalloc_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["recalloc_dbg", "_recalloc_dbg"]
helpviewer_keywords: ["_recalloc_dbg function", "recalloc_dbg function"]
ms.assetid: 43c3e9b2-be6d-4508-9b0f-3220c8a47ca3
diff --git a/docs/c-runtime-library/reference/recalloc.md b/docs/c-runtime-library/reference/recalloc.md
index b658d036bf..d50764778a 100644
--- a/docs/c-runtime-library/reference/recalloc.md
+++ b/docs/c-runtime-library/reference/recalloc.md
@@ -1,9 +1,10 @@
---
title: "_recalloc"
ms.date: "11/04/2016"
-apiname: ["_recalloc"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_recalloc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_recalloc", "recalloc"]
helpviewer_keywords: ["_recalloc function", "recalloc function"]
ms.assetid: 1db8305a-3f03-418c-8844-bf9149f63046
diff --git a/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md b/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md
index 83a7e9d7d4..c3392b443b 100644
--- a/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md
+++ b/docs/c-runtime-library/reference/remainder-remainderf-remainderl.md
@@ -1,9 +1,10 @@
---
title: "remainder, remainderf, remainderl"
ms.date: "04/05/2018"
-apiname: ["remainderl", "remainder", "remainderf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["remainderl", "remainder", "remainderf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["remainderf", "remainder", "remainderl"]
helpviewer_keywords: ["remainderf", "remainderl", "remainder"]
ms.assetid: 5f721fb3-8b78-4597-9bc0-ca9bcd1f1d0e
diff --git a/docs/c-runtime-library/reference/remove-wremove.md b/docs/c-runtime-library/reference/remove-wremove.md
index 381e48a63b..82cb64bb4d 100644
--- a/docs/c-runtime-library/reference/remove-wremove.md
+++ b/docs/c-runtime-library/reference/remove-wremove.md
@@ -1,9 +1,10 @@
---
title: "remove, _wremove"
ms.date: "11/04/2016"
-apiname: ["_wremove", "remove"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wremove", "remove"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["remove", "_wremove", "_tremove"]
helpviewer_keywords: ["tremove function", "_wremove function", "files [C++], deleting", "_tremove function", "files [C++], removing", "wremove function", "remove function"]
ms.assetid: b6345ec3-3289-4645-93a4-28b9e478cc19
diff --git a/docs/c-runtime-library/reference/remquo-remquof-remquol.md b/docs/c-runtime-library/reference/remquo-remquof-remquol.md
index 4cec3cfea4..4c0184a64e 100644
--- a/docs/c-runtime-library/reference/remquo-remquof-remquol.md
+++ b/docs/c-runtime-library/reference/remquo-remquof-remquol.md
@@ -1,9 +1,10 @@
---
title: "remquo, remquof, remquol"
ms.date: "04/05/2018"
-apiname: ["remquof", "remquo", "remquol"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["remquof", "remquo", "remquol"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["remquof", "remquol", "remquo"]
helpviewer_keywords: ["remquol function", "remquof function", "remquo function"]
ms.assetid: a1d3cb8b-8027-4cd3-8deb-04eb17f299fc
diff --git a/docs/c-runtime-library/reference/rename-wrename.md b/docs/c-runtime-library/reference/rename-wrename.md
index b2e8098edb..e4a76349c8 100644
--- a/docs/c-runtime-library/reference/rename-wrename.md
+++ b/docs/c-runtime-library/reference/rename-wrename.md
@@ -1,9 +1,10 @@
---
title: "rename, _wrename"
ms.date: "11/04/2016"
-apiname: ["rename", "_wrename"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["rename", "_wrename"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wrename", "_trename", "Rename"]
helpviewer_keywords: ["trename function", "directories [C++], renaming", "renaming directories", "names [C++], changing file", "_trename function", "rename function", "wrename function", "files [C++], renaming", "_wrename function", "names [C++], changing directory", "renaming files"]
ms.assetid: 9f0a6103-26a2-4dda-b14b-79a48946266a
diff --git a/docs/c-runtime-library/reference/resetstkoflw.md b/docs/c-runtime-library/reference/resetstkoflw.md
index e0aba1edbf..54dc908f70 100644
--- a/docs/c-runtime-library/reference/resetstkoflw.md
+++ b/docs/c-runtime-library/reference/resetstkoflw.md
@@ -1,9 +1,10 @@
---
title: "_resetstkoflw"
ms.date: "11/04/2016"
-apiname: ["_resetstkoflw"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_resetstkoflw"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["resetstkoflw", "_resetstkoflw"]
helpviewer_keywords: ["resetstkoflw function", "stack overflow", "stack, recovering", "_resetstkoflw function"]
ms.assetid: 319529cd-4306-4d22-810b-2063f3ad9e14
diff --git a/docs/c-runtime-library/reference/rewind.md b/docs/c-runtime-library/reference/rewind.md
index 0cf02b0fed..02d75b197c 100644
--- a/docs/c-runtime-library/reference/rewind.md
+++ b/docs/c-runtime-library/reference/rewind.md
@@ -1,9 +1,10 @@
---
title: "rewind"
ms.date: "11/04/2016"
-apiname: ["rewind"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["rewind"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["rewind"]
helpviewer_keywords: ["rewind function", "repositioning file pointers", "file pointers [C++], repositioning", "file pointers [C++]"]
ms.assetid: 1a460ce1-28d8-4b5e-83a6-633dca29c28a
diff --git a/docs/c-runtime-library/reference/rint-rintf-rintl.md b/docs/c-runtime-library/reference/rint-rintf-rintl.md
index 61b8daacb2..9cb2d5ed47 100644
--- a/docs/c-runtime-library/reference/rint-rintf-rintl.md
+++ b/docs/c-runtime-library/reference/rint-rintf-rintl.md
@@ -1,9 +1,10 @@
---
title: "rint, rintf, rintl"
ms.date: "04/05/2018"
-apiname: ["rintf", "rintl", "rint"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["rintf", "rintl", "rint"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["rintf", "rintl", "rint"]
helpviewer_keywords: ["rintf function", "rint function", "rintl function"]
ms.assetid: 312ae3e6-278c-459a-9393-11b8f87d9184
diff --git a/docs/c-runtime-library/reference/rmdir-wrmdir.md b/docs/c-runtime-library/reference/rmdir-wrmdir.md
index 9ba354b2e4..6a1d45de5c 100644
--- a/docs/c-runtime-library/reference/rmdir-wrmdir.md
+++ b/docs/c-runtime-library/reference/rmdir-wrmdir.md
@@ -1,9 +1,10 @@
---
title: "_rmdir, _wrmdir"
ms.date: "11/04/2016"
-apiname: ["_wrmdir", "_rmdir"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wrmdir", "_rmdir"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["trmdir", "_trmdir", "wrmdir", "_rmdir", "_wrmdir"]
helpviewer_keywords: ["_rmdir function", "directories [C++], deleting", "rmdir function", "directories [C++], removing", "trmdir function", "_trmdir function", "_wrmdir function", "wrmdir function"]
ms.assetid: 652c2a5a-b0ac-4493-864e-1edf484333c5
diff --git a/docs/c-runtime-library/reference/rmdir.md b/docs/c-runtime-library/reference/rmdir.md
index a42e91926f..75be820a38 100644
--- a/docs/c-runtime-library/reference/rmdir.md
+++ b/docs/c-runtime-library/reference/rmdir.md
@@ -1,13 +1,16 @@
---
title: "rmdir"
-ms.date: "11/04/2016"
-apiname: ["rmdir"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["rmdir"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["rmdir"]
helpviewer_keywords: ["rmdir function"]
ms.assetid: 03a0aff4-f66c-42a9-bee9-84c46f994952
---
# rmdir
-This POSIX function is deprecated. Use the ISO C++ conformant [_rmdir](rmdir-wrmdir.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `rmdir` is a deprecated alias for the [_rmdir](rmdir-wrmdir.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_rmdir](rmdir-wrmdir.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/rmtmp.md b/docs/c-runtime-library/reference/rmtmp.md
index 67f652d42d..955644cfb2 100644
--- a/docs/c-runtime-library/reference/rmtmp.md
+++ b/docs/c-runtime-library/reference/rmtmp.md
@@ -1,9 +1,10 @@
---
title: "_rmtmp"
ms.date: "11/04/2016"
-apiname: ["_rmtmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_rmtmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["rmtmp", "_rmtmp"]
helpviewer_keywords: ["removing temporary files", "_rmtmp function", "files [C++], temporary", "rmtmp function", "files [C++], removing", "temporary files [C++], removing"]
ms.assetid: 7419501e-2587-4f2a-b469-0dca07f84736
diff --git a/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md b/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md
index 5073e3a6fd..d54d67b52b 100644
--- a/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md
+++ b/docs/c-runtime-library/reference/rotl-rotl64-rotr-rotr64.md
@@ -1,9 +1,10 @@
---
title: "_rotl, _rotl64, _rotr, _rotr64"
ms.date: "04/05/2018"
-apiname: ["_rotr64", "_rotl", "_rotr", "_rotl64"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_rotr64", "_rotl", "_rotr", "_rotl64"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_rotr64", "rotl64", "_rotl64", "rotr64", "rotr", "_rotr", "_rotl", "rotl"]
helpviewer_keywords: ["rotl64 function", "_rotl function", "rotr function", "rotr64 function", "_rotr function", "rotl function", "_rotl64 function", "rotating bits", "_rotr64 function", "bits, rotating"]
ms.assetid: cfce439b-366f-4584-8ab1-d527b13fcfc6
diff --git a/docs/c-runtime-library/reference/round-roundf-roundl.md b/docs/c-runtime-library/reference/round-roundf-roundl.md
index 1fa9618f82..de3ab3bfcc 100644
--- a/docs/c-runtime-library/reference/round-roundf-roundl.md
+++ b/docs/c-runtime-library/reference/round-roundf-roundl.md
@@ -1,9 +1,10 @@
---
title: "round, roundf, roundl"
ms.date: "04/05/2018"
-apiname: ["round", "roundl", "roundf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["round", "roundl", "roundf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["roundf", "roundl", "round"]
helpviewer_keywords: ["roundl function", "round function", "roundf function"]
ms.assetid: 6be90877-193c-4b80-a32b-c3eca33f9c6f
diff --git a/docs/c-runtime-library/reference/rpt-rptf-rptw-rptfw-macros.md b/docs/c-runtime-library/reference/rpt-rptf-rptw-rptfw-macros.md
index 9faa360887..5852dae298 100644
--- a/docs/c-runtime-library/reference/rpt-rptf-rptw-rptfw-macros.md
+++ b/docs/c-runtime-library/reference/rpt-rptf-rptw-rptfw-macros.md
@@ -1,8 +1,9 @@
---
title: "_RPT, _RPTF, _RPTW, _RPTFW Macros"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["RPT3", "RPTF4", "_RPT4", "RPT1", "_RPTF0", "RPTF3", "_RPTF4", "RPTF1", "RPT4", "_RPT1", "_RPT0", "RPT0", "_RPTF2", "RPTF0", "_RPT3", "_RPT2", "_RPTF3", "RPT2", "_RPTF1"]
helpviewer_keywords: ["debugging [CRT], using macros", "_RPTW3 macro", "_RPT0 macro", "RPTW4 macro", "_RPTF3 macro", "_RPTW4 macro", "RPTF4 macro", "RPTFW2 macro", "RPTW macros", "RPT1 macro", "_RPTF macros", "RPTFW3 macro", "_RPTW0 macro", "_RPTF0 macro", "macros, debugging with", "_RPTW2 macro", "RPTF3 macro", "RPT3 macro", "RPT0 macro", "_RPT macros", "RPTW3 macro", "_RPTFW macros", "debug reporting macros", "RPTF macros", "RPT macros", "_RPTW macros", "RPTF2 macro", "_RPTF1 macro", "_RPT1 macro", "_RPT4 macro", "_RPTFW2 macro", "_RPTFW1 macro", "RPTF0 macro", "_RPT2 macro", "RPTFW macros", "_RPTW1 macro", "_RPTFW0 macro", "RPT4 macro", "_RPT3 macro", "_RPTFW3 macro", "_RPTF4 macro", "_RPTFW4 macro", "_RPTF2 macro", "RPTW0 macro", "RPTFW4 macro", "RPTFW0 macro", "RPTW2 macro", "RPTF1 macro", "RPT2 macro", "RPTFW1 macro", "RPTW1 macro"]
ms.assetid: a5bf8b30-57f7-4971-8030-e773b7a1ae13
diff --git a/docs/c-runtime-library/reference/rtc-geterrdesc.md b/docs/c-runtime-library/reference/rtc-geterrdesc.md
index aa04b806fe..95aa7430ef 100644
--- a/docs/c-runtime-library/reference/rtc-geterrdesc.md
+++ b/docs/c-runtime-library/reference/rtc-geterrdesc.md
@@ -1,9 +1,10 @@
---
title: "_RTC_GetErrDesc"
ms.date: "11/04/2016"
-apiname: ["_RTC_GetErrDesc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_RTC_GetErrDesc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["RTC_GetErrDesc", "_RTC_GetErrDesc"]
helpviewer_keywords: ["run-time errors", "_RTC_GetErrDesc function", "RTC_GetErrDesc function"]
ms.assetid: 7994ec2b-5488-4fd4-806d-a166c9a9f927
diff --git a/docs/c-runtime-library/reference/rtc-numerrors.md b/docs/c-runtime-library/reference/rtc-numerrors.md
index 69e35d23bc..1944e3d4d8 100644
--- a/docs/c-runtime-library/reference/rtc-numerrors.md
+++ b/docs/c-runtime-library/reference/rtc-numerrors.md
@@ -1,9 +1,10 @@
---
title: "_RTC_NumErrors"
ms.date: "11/04/2016"
-apiname: ["_RTC_NumErrors"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_RTC_NumErrors"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_RTC_NumErrors", "RTC_NumErrors"]
helpviewer_keywords: ["run-time errors", "_RTC_NumErrors function", "RTC_NumErrors function"]
ms.assetid: 7e82adae-38e2-4f8b-bc0b-37bda8109fd1
diff --git a/docs/c-runtime-library/reference/rtc-seterrorfunc.md b/docs/c-runtime-library/reference/rtc-seterrorfunc.md
index 1fbaf4c0bf..417c6ec80b 100644
--- a/docs/c-runtime-library/reference/rtc-seterrorfunc.md
+++ b/docs/c-runtime-library/reference/rtc-seterrorfunc.md
@@ -1,9 +1,10 @@
---
title: "_RTC_SetErrorFunc"
ms.date: "11/04/2016"
-apiname: ["_RTC_SetErrorFunc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_RTC_SetErrorFunc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["RTC_SetErrorFunc", "_RTC_SetErrorFunc"]
helpviewer_keywords: ["RTC_SetErrorFunc function", "_RTC_SetErrorFunc function"]
ms.assetid: b2292722-0d83-4092-83df-3d5b19880666
diff --git a/docs/c-runtime-library/reference/rtc-seterrorfuncw.md b/docs/c-runtime-library/reference/rtc-seterrorfuncw.md
index b88cd1e7fd..32b79ce2fc 100644
--- a/docs/c-runtime-library/reference/rtc-seterrorfuncw.md
+++ b/docs/c-runtime-library/reference/rtc-seterrorfuncw.md
@@ -1,9 +1,10 @@
---
title: "_RTC_SetErrorFuncW"
ms.date: "11/04/2016"
-apiname: ["_RTC_SetErrorFuncW"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_RTC_SetErrorFuncW"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_RTC_SetErrorFuncW", "RTC_SetErrorFuncW"]
helpviewer_keywords: ["run-time errors", "RTC_SetErrorFuncW function", "_RTC_error_fnW typedef", "_RTC_SetErrorFuncW function", "RTC_error_fnW typedef"]
ms.assetid: b3e0d71f-1bd3-4c37-9ede-2f638eb3c81a
diff --git a/docs/c-runtime-library/reference/rtc-seterrortype.md b/docs/c-runtime-library/reference/rtc-seterrortype.md
index 860c39b5eb..b768118bfd 100644
--- a/docs/c-runtime-library/reference/rtc-seterrortype.md
+++ b/docs/c-runtime-library/reference/rtc-seterrortype.md
@@ -1,9 +1,10 @@
---
title: "_RTC_SetErrorType"
ms.date: "11/04/2016"
-apiname: ["_RTC_SetErrorType"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_RTC_SetErrorType"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["RTC_SetErrorType", "_RTC_SetErrorType"]
helpviewer_keywords: ["run-time errors", "RTC_SetErrorType function", "_RTC_SetErrorType function"]
ms.assetid: f5f99be7-d357-4b11-b8f5-ddd3428f2b06
diff --git a/docs/c-runtime-library/reference/scalb.md b/docs/c-runtime-library/reference/scalb.md
index 6f845ecb81..0e7d9b34b7 100644
--- a/docs/c-runtime-library/reference/scalb.md
+++ b/docs/c-runtime-library/reference/scalb.md
@@ -1,9 +1,10 @@
---
title: "_scalb, _scalbf"
ms.date: "04/05/2018"
-apiname: ["_scalb", "_scalbf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_scalb", "_scalbf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["scalb", "_scalb", "_scalbf"]
helpviewer_keywords: ["exponential calculations", "_scalb function", "_scalbf function", "scalb function"]
ms.assetid: 148cf5a8-b405-44bf-a1f0-7487adba2421
diff --git a/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md b/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md
index 7ecde53303..5780ab6cd8 100644
--- a/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md
+++ b/docs/c-runtime-library/reference/scalbn-scalbnf-scalbnl-scalbln-scalblnf-scalblnl.md
@@ -1,9 +1,10 @@
---
title: "scalbn, scalbnf, scalbnl, scalbln, scalblnf, scalblnl"
ms.date: "04/05/2018"
-apiname: ["scalblnl", "scalbnl", "scalbnf", "scalblnf", "scalbn", "scalbln"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["scalblnl", "scalbnl", "scalbnf", "scalblnf", "scalbn", "scalbln"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["scalblnf", "scalbnl", "scalblnl", "scalbln", "scalbn", "scalbnf"]
helpviewer_keywords: ["scalbn function", "scalbln function", "scalblnl function", "scalbnl function", "scalbnf function", "scalblnf function"]
ms.assetid: df2f1543-8e39-4af4-a5cf-29307e64807d
diff --git a/docs/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l.md b/docs/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l.md
index b34a004b02..a24d54d41e 100644
--- a/docs/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l.md
+++ b/docs/c-runtime-library/reference/scanf-s-scanf-s-l-wscanf-s-wscanf-s-l.md
@@ -1,9 +1,10 @@
---
title: "scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l"
ms.date: "03/26/2019"
-apiname: ["wscanf_s", "_wscanf_s_l", "scanf_s", "_scanf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["wscanf_s", "_wscanf_s_l", "scanf_s", "_scanf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wscanf_s", "_tscanf_s_l", "_wscanf_s_l", "scanf_s", "_tscanf_s", "_scanf_s_l"]
helpviewer_keywords: ["reading data [C++], from input streams", "buffers [C++], buffer overruns", "_scanf_s_l function", "_wscanf_s_l function", "tscanf_s_l function", "tscanf_s function", "scanf_s function", "data [C++], reading from input stream", "wscanf_s function", "_tscanf_s_l function", "_tscanf_s function", "scanf_s_l function", "formatted data [C++], from input streams", "wscanf_s_l function", "buffers [C++], avoiding overruns"]
ms.assetid: 42cafcf7-52d6-404a-80e4-b056a7faf2e5
diff --git a/docs/c-runtime-library/reference/scanf-scanf-l-wscanf-wscanf-l.md b/docs/c-runtime-library/reference/scanf-scanf-l-wscanf-wscanf-l.md
index a2675fd201..e638afbd34 100644
--- a/docs/c-runtime-library/reference/scanf-scanf-l-wscanf-wscanf-l.md
+++ b/docs/c-runtime-library/reference/scanf-scanf-l-wscanf-wscanf-l.md
@@ -1,9 +1,10 @@
---
title: "scanf, _scanf_l, wscanf, _wscanf_l"
-ms.date: "11/04/2016"
-apiname: ["_wscanf_l", "scanf", "_scanf_l", "wscanf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "10/21/2019"
+api_name: ["_wscanf_l", "scanf", "_scanf_l", "wscanf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tscanf", "_scanf_l", "wscanf", "_wscanf_l", "scanf", "_tscanf_l"]
helpviewer_keywords: ["tscanf_l function", "_tscanf_l function", "reading data [C++], from input streams", "_tscanf function", "data [C++], reading from input stream", "scanf_l function", "scanf function", "wscanf function", "_scanf_l function", "tscanf function", "formatted data [C++], from input streams", "wscanf_l function", "_wscanf_l function"]
ms.assetid: 73eac607-117f-4be4-9ff0-4afd9cf3c848
@@ -12,6 +13,9 @@ ms.assetid: 73eac607-117f-4be4-9ff0-4afd9cf3c848
Reads formatted data from the standard input stream. More secure versions of these function are available; see [scanf_s, _scanf_s_l, wscanf_s, _wscanf_s_l](scanf-s-scanf-s-l-wscanf-s-wscanf-s-l.md).
+> [!NOTE]
+> In Visual Studio 2015 The `printf` and `scanf` family of functions were declared as **inline** and moved to the `` and `` headers. If you are migrating older code you might see *LNK2019* in connection with these functions. For more information, see [Visual C++ change history 2003 - 2015](../../porting/visual-cpp-change-history-2003-2015.md#stdio_and_conio).
+
## Syntax
```C
diff --git a/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md b/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md
index b5549f10fe..6d13903341 100644
--- a/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/scprintf-p-scprintf-p-l-scwprintf-p-scwprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_scprintf_p, _scprintf_p_l, _scwprintf_p, _scwprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_scwprintf_p", "_scprintf_p_l", "_scwprintf_p_l", "_scprintf_p"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_scwprintf_p", "_scprintf_p_l", "_scwprintf_p_l", "_scprintf_p"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_scwprintf_p_l", "_sctprintf_p", "scprintf_p_l", "scprintf_p", "_sctprintf_p_l", "scwprintf_p", "_scprintf_p_l", "scwprintf_p_l", "_scprintf_p", "_scwprintf_p"]
helpviewer_keywords: ["sctprintf_p_l function", "_scwprintf_p_l function", "scprintf_p_l function", "_scprintf_p function", "_scprintf_p_l function", "scprintf_p function", "sctprintf_p function", "_scwprintf_p function", "_sctprintf_p function", "scwprintf_p function", "scwprintf_p_l function", "_sctprintf_p_l function"]
ms.assetid: 8390d1e1-2826-47a4-851f-6635a88087cc
diff --git a/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md b/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md
index 21a6786691..b7e0ad70c9 100644
--- a/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md
+++ b/docs/c-runtime-library/reference/scprintf-scprintf-l-scwprintf-scwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "_scprintf, _scprintf_l, _scwprintf, _scwprintf_l"
ms.date: "11/04/2016"
-apiname: ["_scprintf_l", "_scwprintf", "_scwprintf_l", "_scprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_scprintf_l", "_scwprintf", "_scwprintf_l", "_scprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["scprintf", "_scprintf_l", "_scwprintf_l", "_scprintf", "scwprintf", "_scwprintf", "scprintf_l", "_sctprintf_l", "scwprintf_l", "_sctprintf"]
helpviewer_keywords: ["scprintf function", "sctprintf_l function", "scwprintf_l function", "_scwprintf_l function", "_sctprintf_l function", "sctprintf function", "_scwprintf function", "_scprintf_l function", "_sctprintf function", "scprintf_l function", "formatted text [C++]", "_scprintf function", "scwprintf function"]
ms.assetid: ecbb0ba6-5f4c-4ce6-a64b-144ad8b5fe92
diff --git a/docs/c-runtime-library/reference/searchenv-s-wsearchenv-s.md b/docs/c-runtime-library/reference/searchenv-s-wsearchenv-s.md
index dc1535d718..f29bd6de11 100644
--- a/docs/c-runtime-library/reference/searchenv-s-wsearchenv-s.md
+++ b/docs/c-runtime-library/reference/searchenv-s-wsearchenv-s.md
@@ -1,9 +1,10 @@
---
title: "_searchenv_s, _wsearchenv_s"
ms.date: "11/04/2016"
-apiname: ["_wsearchenv_s", "_searchenv_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wsearchenv_s", "_searchenv_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_searchenv_s", "_wsearchenv_s", "wsearchenv_s", "searchenv_s"]
helpviewer_keywords: ["tsearchenv_s function", "files [C++], finding", "buffers [C++], buffer overruns", "environment paths, searching for files", "wsearchenv_s function", "searchenv_s function", "_tsearchenv_s function", "buffer overruns", "buffers [C++], avoiding overruns", "_wsearchenv_s function", "_searchenv_s function", "environment paths"]
ms.assetid: 47f9fc29-250e-4c09-b52e-9e9f0ef395ca
diff --git a/docs/c-runtime-library/reference/searchenv-wsearchenv.md b/docs/c-runtime-library/reference/searchenv-wsearchenv.md
index 3e7ea79023..3f5f326d29 100644
--- a/docs/c-runtime-library/reference/searchenv-wsearchenv.md
+++ b/docs/c-runtime-library/reference/searchenv-wsearchenv.md
@@ -1,9 +1,10 @@
---
title: "_searchenv, _wsearchenv"
ms.date: "11/04/2016"
-apiname: ["_searchenv", "_wsearchenv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_searchenv", "_wsearchenv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-environment-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wsearchenv", "_tsearchenv", "wsearchenv", "_searchenv", "searchenv"]
helpviewer_keywords: ["_wsearchenv function", "files [C++], finding", "_searchenv function", "tsearchenv function", "environment paths, searching for files", "_tsearchenv function", "wsearchenv function", "searchenv function", "environment paths"]
ms.assetid: 9c944a27-d326-409b-aee6-410e8762d9d3
diff --git a/docs/c-runtime-library/reference/security-init-cookie.md b/docs/c-runtime-library/reference/security-init-cookie.md
index 47df0e7e31..28ed7417a2 100644
--- a/docs/c-runtime-library/reference/security-init-cookie.md
+++ b/docs/c-runtime-library/reference/security-init-cookie.md
@@ -1,9 +1,10 @@
---
title: "__security_init_cookie"
ms.date: "11/04/2016"
-apiname: ["__security_init_cookie"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["__security_init_cookie"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["security_init_cookie", "__security_init_cookie"]
helpviewer_keywords: ["security cookie [C++]", "__security_init_cookie function", "security_init_cookie function", "global security cookie"]
ms.assetid: 32119905-0897-4a1c-84ca-bffd16c9b2af
diff --git a/docs/c-runtime-library/reference/seh-filter-dll-seh-filter-exe.md b/docs/c-runtime-library/reference/seh-filter-dll-seh-filter-exe.md
index aa13de6b99..9fb15a726b 100644
--- a/docs/c-runtime-library/reference/seh-filter-dll-seh-filter-exe.md
+++ b/docs/c-runtime-library/reference/seh-filter-dll-seh-filter-exe.md
@@ -1,9 +1,10 @@
---
title: "_seh_filter_dll, _seh_filter_exe"
ms.date: "11/04/2016"
-apiname: ["_XcptFilter", "_seh_filter_dll", "_seh_filter_exe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_XcptFilter", "_seh_filter_dll", "_seh_filter_exe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["XcptFilter", "_XcptFilter", "_seh_filter_dll", "_seh_filter_exe", "corecrt_startup/_seh_filter_exe", "corecrt_startup/_seh_filter_dll"]
helpviewer_keywords: ["XcptFilter function", "_XcptFilter function", "_seh_filter_dll function", "_seh_filter_exe function"]
ms.assetid: 747e5963-3a12-4bf5-b5c4-d4c1b6068e15
diff --git a/docs/c-runtime-library/reference/set-abort-behavior.md b/docs/c-runtime-library/reference/set-abort-behavior.md
index 1f411dc1e8..0ac0d44794 100644
--- a/docs/c-runtime-library/reference/set-abort-behavior.md
+++ b/docs/c-runtime-library/reference/set-abort-behavior.md
@@ -1,9 +1,10 @@
---
title: "_set_abort_behavior"
-ms.date: "1/02/2018"
-apiname: ["_set_abort_behavior"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "01/02/2018"
+api_name: ["_set_abort_behavior"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_abort_behavior", "set_abort_behavior"]
helpviewer_keywords: ["aborting programs", "_set_abort_behavior function", "set_abort_behavior function"]
---
diff --git a/docs/c-runtime-library/reference/set-controlfp.md b/docs/c-runtime-library/reference/set-controlfp.md
index f4a4c09db2..8b5b1a4f59 100644
--- a/docs/c-runtime-library/reference/set-controlfp.md
+++ b/docs/c-runtime-library/reference/set-controlfp.md
@@ -1,9 +1,10 @@
---
title: "_set_controlfp"
ms.date: "04/05/2018"
-apiname: ["_set_controlfp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_controlfp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_controlfp", "_set_controlfp"]
helpviewer_keywords: ["set_controlfp function", "floating-point functions, setting control word", "_set_controlfp function"]
ms.assetid: e0689d50-f68a-4028-a9c1-fb23eedee4ad
diff --git a/docs/c-runtime-library/reference/set-doserrno.md b/docs/c-runtime-library/reference/set-doserrno.md
index 29a4c07d1a..27979cd406 100644
--- a/docs/c-runtime-library/reference/set-doserrno.md
+++ b/docs/c-runtime-library/reference/set-doserrno.md
@@ -1,9 +1,10 @@
---
title: "_set_doserrno"
ms.date: "11/04/2016"
-apiname: ["_set_doserrno"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_doserrno"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_doserrno", "set_doserrno"]
helpviewer_keywords: ["_set_doserrno function", "doserrno global variable", "set_doserrno function", "_doserrno global variable"]
ms.assetid: 8686c159-3797-4705-a53e-7457869ca6f3
diff --git a/docs/c-runtime-library/reference/set-errno.md b/docs/c-runtime-library/reference/set-errno.md
index 23ceae31f7..c29057385f 100644
--- a/docs/c-runtime-library/reference/set-errno.md
+++ b/docs/c-runtime-library/reference/set-errno.md
@@ -1,9 +1,10 @@
---
title: "_set_errno"
ms.date: "11/04/2016"
-apiname: ["_set_errno"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_errno"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_errno", "_set_errno"]
helpviewer_keywords: ["errno global variable", "set_errno function", "_set_errno function"]
ms.assetid: d338914a-1894-4cf3-ae45-f2c4eb26590b
diff --git a/docs/c-runtime-library/reference/set-error-mode.md b/docs/c-runtime-library/reference/set-error-mode.md
index e9f16cc91f..7df6d5ba3e 100644
--- a/docs/c-runtime-library/reference/set-error-mode.md
+++ b/docs/c-runtime-library/reference/set-error-mode.md
@@ -1,9 +1,10 @@
---
title: "_set_error_mode"
ms.date: "11/04/2016"
-apiname: ["_set_error_mode"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_error_mode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_error_mode", "_set_error_mode"]
helpviewer_keywords: ["_set_error_mode function", "set_error_mode function"]
ms.assetid: f0807be5-73d1-4a32-a701-3c9bdd139c5c
diff --git a/docs/c-runtime-library/reference/set-fmode.md b/docs/c-runtime-library/reference/set-fmode.md
index 5e697f2f3c..694f18ee88 100644
--- a/docs/c-runtime-library/reference/set-fmode.md
+++ b/docs/c-runtime-library/reference/set-fmode.md
@@ -1,9 +1,10 @@
---
title: "_set_fmode"
ms.date: "11/04/2016"
-apiname: ["_set_fmode"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_fmode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_fmode", "set_fmode"]
helpviewer_keywords: ["file translation [C++], default mode", "_set_fmode function", "file translation [C++], setting mode", "set_fmode function"]
ms.assetid: f80eb9c7-733b-4652-a9bc-6b3790a35f12
diff --git a/docs/c-runtime-library/reference/set-invalid-parameter-handler-set-thread-local-invalid-parameter-handler.md b/docs/c-runtime-library/reference/set-invalid-parameter-handler-set-thread-local-invalid-parameter-handler.md
index 7333909344..1f8767470a 100644
--- a/docs/c-runtime-library/reference/set-invalid-parameter-handler-set-thread-local-invalid-parameter-handler.md
+++ b/docs/c-runtime-library/reference/set-invalid-parameter-handler-set-thread-local-invalid-parameter-handler.md
@@ -1,9 +1,10 @@
---
title: "_set_invalid_parameter_handler, _set_thread_local_invalid_parameter_handler"
ms.date: "11/04/2016"
-apiname: ["_set_invalid_parameter_handler", "_set_thread_local_invalid_parameter_handler"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_invalid_parameter_handler", "_set_thread_local_invalid_parameter_handler"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_invalid_parameter_handler", "_set_invalid_parameter_handler", "_set_thread_local_invalid_parameter_handler"]
helpviewer_keywords: ["invalid parameter handler", "set_invalid_parameter_handler function", "_set_invalid_parameter_handler function", "_set_thread_local_invalid_parameter_handler function"]
ms.assetid: c0e67934-1a41-4016-ad8e-972828f3ac11
@@ -58,7 +59,7 @@ The *expression* argument is a wide string representation of the argument expres
|-------------|---------------------|
|**_set_invalid_parameter_handler**, **_set_thread_local_invalid_parameter_handler**|C: \
C++: \ or \|
-The **_set_invalid_parameter_handler** and **_set_thread_local_invalid_parameter_handler** functions are Microsoft specific. For compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+The **_set_invalid_parameter_handler** and **_set_thread_local_invalid_parameter_handler** functions are Microsoft-specific. For compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
## Example
diff --git a/docs/c-runtime-library/reference/set-new-handler.md b/docs/c-runtime-library/reference/set-new-handler.md
index 9ec98bc4cd..7fbfc158cd 100644
--- a/docs/c-runtime-library/reference/set-new-handler.md
+++ b/docs/c-runtime-library/reference/set-new-handler.md
@@ -1,9 +1,10 @@
---
title: "_set_new_handler"
ms.date: "11/04/2016"
-apiname: ["_set_new_handler"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_new_handler"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_new_handler", "set_new_handler"]
helpviewer_keywords: ["_set_new_handler function", "set_new_handler function", "error handling", "transferring control to error handler"]
ms.assetid: 1d1781b6-5cf8-486a-b430-f365e0bb023f
diff --git a/docs/c-runtime-library/reference/set-new-mode.md b/docs/c-runtime-library/reference/set-new-mode.md
index 7fcfc3ca08..31881276ae 100644
--- a/docs/c-runtime-library/reference/set-new-mode.md
+++ b/docs/c-runtime-library/reference/set-new-mode.md
@@ -1,9 +1,10 @@
---
title: "_set_new_mode"
ms.date: "11/04/2016"
-apiname: ["_set_new_mode"]
-apilocation: ["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"]
-apitype: "DLLExport"
+api_name: ["_set_new_mode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-heap-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_new_mode", "_set_new_mode"]
helpviewer_keywords: ["handler modes", "_set_new_mode function", "set_new_mode function"]
ms.assetid: 4d14039a-e54e-4689-8c70-74a4b9834768
diff --git a/docs/c-runtime-library/reference/set-printf-count-output.md b/docs/c-runtime-library/reference/set-printf-count-output.md
index cbcc1b7fac..59ba088b99 100644
--- a/docs/c-runtime-library/reference/set-printf-count-output.md
+++ b/docs/c-runtime-library/reference/set-printf-count-output.md
@@ -1,9 +1,10 @@
---
title: "_set_printf_count_output"
ms.date: "11/04/2016"
-apiname: ["_set_printf_count_output"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_printf_count_output"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_printf_count_output", "_set_printf_count_output"]
helpviewer_keywords: ["%n format", "set_printf_count_output function", "_set_printf_count_output function"]
ms.assetid: d8259ec5-764e-42d0-9169-72172e95163b
diff --git a/docs/c-runtime-library/reference/set-se-translator.md b/docs/c-runtime-library/reference/set-se-translator.md
index 802f3d896b..39b8fecb57 100644
--- a/docs/c-runtime-library/reference/set-se-translator.md
+++ b/docs/c-runtime-library/reference/set-se-translator.md
@@ -1,9 +1,10 @@
---
title: "_set_se_translator"
ms.date: "02/21/2018"
-apiname: ["_set_se_translator"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_set_se_translator"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_se_translator", "set_se_translator"]
helpviewer_keywords: ["set_se_translator function", "exception handling, changing", "_set_se_translator function"]
ms.assetid: 280842bc-d72a-468b-a565-2d3db893ae0f
diff --git a/docs/c-runtime-library/reference/set-sse2-enable.md b/docs/c-runtime-library/reference/set-sse2-enable.md
index 7417e9cafb..f650c479c0 100644
--- a/docs/c-runtime-library/reference/set-sse2-enable.md
+++ b/docs/c-runtime-library/reference/set-sse2-enable.md
@@ -1,9 +1,10 @@
---
title: "_set_SSE2_enable"
ms.date: "04/05/2018"
-apiname: ["_set_SSE2_enable"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_SSE2_enable"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_SSE2_enable", "set_SSE2_enable"]
helpviewer_keywords: ["_set_SSE2_enable function", "Streaming SIMD Extensions 2 instructions", "set_SSE2_enable function"]
ms.assetid: 55db895d-fc1e-475a-9110-b781a9bb51c5
diff --git a/docs/c-runtime-library/reference/set-terminate-crt.md b/docs/c-runtime-library/reference/set-terminate-crt.md
index f02e501683..460af77444 100644
--- a/docs/c-runtime-library/reference/set-terminate-crt.md
+++ b/docs/c-runtime-library/reference/set-terminate-crt.md
@@ -1,9 +1,10 @@
---
title: "set_terminate (CRT)"
ms.date: "11/04/2016"
-apiname: ["set_terminate"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["set_terminate"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_terminate"]
helpviewer_keywords: ["set_terminate function", "terminate function", "exception handling, termination"]
ms.assetid: 3ff1456a-7898-44bc-9266-a328a80b6006
diff --git a/docs/c-runtime-library/reference/set-unexpected-crt.md b/docs/c-runtime-library/reference/set-unexpected-crt.md
index 441d5f3618..1610c0f878 100644
--- a/docs/c-runtime-library/reference/set-unexpected-crt.md
+++ b/docs/c-runtime-library/reference/set-unexpected-crt.md
@@ -1,9 +1,10 @@
---
title: "set_unexpected (CRT)"
ms.date: "11/04/2016"
-apiname: ["set_unexpected"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["set_unexpected"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_unexpected"]
helpviewer_keywords: ["set_unexpected function", "unexpected function", "exception handling, termination"]
ms.assetid: ebcef032-4771-48e5-88aa-2a1ab8750aa6
diff --git a/docs/c-runtime-library/reference/setbuf.md b/docs/c-runtime-library/reference/setbuf.md
index 4609aaa627..9d145ffd52 100644
--- a/docs/c-runtime-library/reference/setbuf.md
+++ b/docs/c-runtime-library/reference/setbuf.md
@@ -1,9 +1,10 @@
---
title: "setbuf"
ms.date: "04/08/2019"
-apiname: ["setbuf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["setbuf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["setbuf"]
helpviewer_keywords: ["setbuf function", "stream buffering"]
ms.assetid: 13beda22-7b56-455d-8a6c-f2eb636885b9
diff --git a/docs/c-runtime-library/reference/setjmp.md b/docs/c-runtime-library/reference/setjmp.md
index 3ce336bceb..1f000d231f 100644
--- a/docs/c-runtime-library/reference/setjmp.md
+++ b/docs/c-runtime-library/reference/setjmp.md
@@ -1,9 +1,10 @@
---
title: "setjmp"
ms.date: "08/14/2018"
-apiname: ["setjmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["setjmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["setjmp"]
helpviewer_keywords: ["programs [C++], saving states", "current state", "setjmp function"]
ms.assetid: 684a8b27-e8eb-455b-b4a8-733ca1cbd7d2
diff --git a/docs/c-runtime-library/reference/setlocale-wsetlocale.md b/docs/c-runtime-library/reference/setlocale-wsetlocale.md
index 0ab2a9aa7a..f5fb466744 100644
--- a/docs/c-runtime-library/reference/setlocale-wsetlocale.md
+++ b/docs/c-runtime-library/reference/setlocale-wsetlocale.md
@@ -1,12 +1,15 @@
---
title: "setlocale, _wsetlocale"
-ms.date: "11/04/2016"
-apiname: ["_wsetlocale", "setlocale"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "Describes the Microsoft C runtime (CRT) library functions setlocale and _wsetlocale."
+ms.date: "01/28/2020"
+api_name: ["_wsetlocale", "setlocale"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wsetlocale", "_tsetlocale", "setlocale"]
helpviewer_keywords: ["wsetlocale function", "setlocale function", "tsetlocale function", "locales, defining", "_tsetlocale function", "defining locales", "_wsetlocale function"]
ms.assetid: 3ffb684e-5990-4202-9553-b5339af9520d
+no-loc: [setlocale, _wsetlocale]
---
# setlocale, _wsetlocale
@@ -27,15 +30,15 @@ wchar_t *_wsetlocale(
### Parameters
-*category*
+*category*\
Category affected by locale.
-*locale*
+*locale*\
Locale specifier.
-## Return Value
+## Return value
-If a valid *locale* and *category* are given, returns a pointer to the string associated with the specified *locale* and *category*. If the *locale* or *category* is not valid, returns a null pointer and the current locale settings of the program are not changed.
+If a valid *locale* and *category* are given, returns a pointer to the string associated with the specified *locale* and *category*. If the *locale* or *category* isn't valid, returns a null pointer, and the current locale settings of the program are unchanged.
For example, the call
@@ -74,7 +77,7 @@ The *category* argument specifies the parts of a program's locale information th
| **LC_NUMERIC** | Decimal-point character for the formatted output routines (such as **printf**), for the data-conversion routines, and for the non-monetary formatting information returned by **localeconv**. In addition to the decimal-point character, **LC_NUMERIC** sets the thousands separator and the grouping control string returned by [localeconv](localeconv.md). |
| **LC_TIME** | The **strftime** and **wcsftime** functions. |
-This function validates the category parameter. If the category parameter is not one of the values given in the previous table, the invalid parameter handler is invoked, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, the function sets **errno** to **EINVAL** and returns **NULL**.
+This function validates the category parameter. If the category parameter isn't one of the values given in the previous table, the invalid parameter handler is invoked, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, the function sets **errno** to **EINVAL** and returns **NULL**.
The *locale* argument is a pointer to a string that specifies the locale. For information about the format of the *locale* argument, see [Locale Names, Languages, and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md). If *locale* points to an empty string, the locale is the implementation-defined native environment. A value of **C** specifies the minimal ANSI conforming environment for C translation. The **C** locale assumes that all **char** data types are 1 byte and that their value is always less than 256.
@@ -84,7 +87,7 @@ At program startup, the equivalent of the following statement is executed:
The *locale* argument can take a locale name, a language string, a language string and country/region code, a code page, or a language string, country/region code, and code page. The set of available locale names, languages, country/region codes, and code pages includes all those supported by the Windows NLS API except code pages that require more than two bytes per character, such as UTF-7 and UTF-8. If you provide a code page value of UTF-7 or UTF-8, **setlocale** will fail, returning **NULL**. The set of locale names supported by **setlocale** are described in [Locale Names, Languages, and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md). The set of language and country/region strings supported by **setlocale** are listed in [Language Strings](../../c-runtime-library/language-strings.md) and [Country/Region Strings](../../c-runtime-library/country-region-strings.md). We recommend the locale name form for performance and for maintainability of locale strings embedded in code or serialized to storage. The locale name strings are less likely to be changed by an operating system update than the language and country/region name form.
-A null pointer that's passed as the *locale* argument tells **setlocale** to query instead of to set the international environment. If the *locale* argument is a null pointer, the program's current locale setting is not changed. Instead, **setlocale** returns a pointer to the string that's associated with the *category* of the thread's current locale. If the *category* argument is **LC_ALL**, the function returns a string that indicates the current setting of each category, separated by semicolons. For example, the sequence of calls
+A null pointer that's passed as the *locale* argument tells **setlocale** to query instead of to set the international environment. If the *locale* argument is a null pointer, the program's current locale setting isn't changed. Instead, **setlocale** returns a pointer to the string that's associated with the *category* of the thread's current locale. If the *category* argument is **LC_ALL**, the function returns a string that indicates the current setting of each category, separated by semicolons. For example, the sequence of calls
```C
// Set all categories and return "en-US"
@@ -102,27 +105,27 @@ LC_COLLATE=en-US;LC_CTYPE=en-US;LC_MONETARY=fr-FR;LC_NUMERIC=en-US;LC_TIME=en-US
which is the string that's associated with the **LC_ALL** category.
-The following examples pertain to the **LC_ALL** category. Either of the strings ".OCP" and ".ACP" can be used instead of a code page number to specify use of the user-default OEM code page and user-default ANSI code page, respectively.
+The following examples pertain to the **LC_ALL** category. Either of the strings ".OCP" and ".ACP" can be used instead of a code page number to specify use of the user-default OEM code page and user-default ANSI code page for that locale name, respectively.
- `setlocale( LC_ALL, "" );`
- Sets the locale to the default, which is the user-default ANSI code page obtained from the operating system.
+ Sets the locale to the default, which is the user-default ANSI code page obtained from the operating system. The locale name is set to the value returned by [GetUserDefaultLocaleName](/windows/win32/api/winnls/nf-winnls-getuserdefaultlocalename). The code page is set to the value returned by [GetACP](/windows/win32/api/winnls/nf-winnls-getacp).
- `setlocale( LC_ALL, ".OCP" );`
- Explicitly sets the locale to the current OEM code page obtained from the operating system.
+ Sets the locale to the current OEM code page obtained from the operating system. The locale name is set to the value returned by [GetUserDefaultLocaleName](/windows/win32/api/winnls/nf-winnls-getuserdefaultlocalename). The code page is set to the [LOCALE_IDEFAULTCODEPAGE](/windows/win32/intl/locale-idefault-constants) value for the user-default locale name by [GetLocaleInfoEx](/windows/win32/api/winnls/nf-winnls-getlocaleinfoex).
- `setlocale( LC_ALL, ".ACP" );`
- Sets the locale to the ANSI code page obtained from the operating system.
+ Sets the locale to the ANSI code page obtained from the operating system. The locale name is set to the value returned by [GetUserDefaultLocaleName](/windows/win32/api/winnls/nf-winnls-getuserdefaultlocalename). The code page is set to the [LOCALE_IDEFAULTANSICODEPAGE](/windows/win32/intl/locale-idefault-constants) value for the user-default locale name by [GetLocaleInfoEx](/windows/win32/api/winnls/nf-winnls-getlocaleinfoex).
- `setlocale( LC_ALL, "" );`
- Sets the locale to the locale name that's indicated by *\*.
+ Sets the locale to the locale name that's indicated by *\*. The code page is set to the [LOCALE_IDEFAULTANSICODEPAGE](/windows/win32/intl/locale-idefault-constants) value for the specified locale name by [GetLocaleInfoEx](/windows/win32/api/winnls/nf-winnls-getlocaleinfoex).
- `setlocale( LC_ALL, "_" );`
- Sets the locale to the language and country/region indicated by *\* and *\*, together with the default code page obtained from the host operating system.
+ Sets the locale to the language and country/region indicated by *\* and *\*, together with the default code page obtained from the host operating system. The code page is set to the [LOCALE_IDEFAULTANSICODEPAGE](/windows/win32/intl/locale-idefault-constants) value for the specified locale name by [GetLocaleInfoEx](/windows/win32/api/winnls/nf-winnls-getlocaleinfoex).
- `setlocale( LC_ALL, "_." );`
@@ -279,18 +282,18 @@ The time in de-DE locale is: 'Mittwoch, 12. Mai 2004'
## See also
-[Locale Names, Languages, and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md)
-[_configthreadlocale](configthreadlocale.md)
-[_create_locale, _wcreate_locale](create-locale-wcreate-locale.md)
-[Locale](../../c-runtime-library/locale.md)
-[localeconv](localeconv.md)
-[_mbclen, mblen, _mblen_l](mbclen-mblen-mblen-l.md)
-[strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l](strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md)
-[mbstowcs, _mbstowcs_l](mbstowcs-mbstowcs-l.md)
-[mbtowc, _mbtowc_l](mbtowc-mbtowc-l.md)
-[_setmbcp](setmbcp.md)
-[strcoll Functions](../../c-runtime-library/strcoll-functions.md)
-[strftime, wcsftime, _strftime_l, _wcsftime_l](strftime-wcsftime-strftime-l-wcsftime-l.md)
-[strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l](strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md)
-[wcstombs, _wcstombs_l](wcstombs-wcstombs-l.md)
-[wctomb, _wctomb_l](wctomb-wctomb-l.md)
+[Locale Names, Languages, and Country/Region Strings](../../c-runtime-library/locale-names-languages-and-country-region-strings.md)\
+[_configthreadlocale](configthreadlocale.md)\
+[_create_locale, _wcreate_locale](create-locale-wcreate-locale.md)\
+[Locale](../../c-runtime-library/locale.md)\
+[localeconv](localeconv.md)\
+[_mbclen, mblen, _mblen_l](mbclen-mblen-mblen-l.md)\
+[strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l](strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md)\
+[mbstowcs, _mbstowcs_l](mbstowcs-mbstowcs-l.md)\
+[mbtowc, _mbtowc_l](mbtowc-mbtowc-l.md)\
+[_setmbcp](setmbcp.md)\
+[strcoll Functions](../../c-runtime-library/strcoll-functions.md)\
+[strftime, wcsftime, _strftime_l, _wcsftime_l](strftime-wcsftime-strftime-l-wcsftime-l.md)\
+[strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l](strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md)\
+[wcstombs, _wcstombs_l](wcstombs-wcstombs-l.md)\
+[wctomb, _wctomb_l](wctomb-wctomb-l.md)
diff --git a/docs/c-runtime-library/reference/setmaxstdio.md b/docs/c-runtime-library/reference/setmaxstdio.md
index cddfdb2f1c..7536ab92e8 100644
--- a/docs/c-runtime-library/reference/setmaxstdio.md
+++ b/docs/c-runtime-library/reference/setmaxstdio.md
@@ -1,9 +1,10 @@
---
title: "_setmaxstdio"
ms.date: "05/21/2019"
-apiname: ["_setmaxstdio"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_setmaxstdio"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["setmaxstdio", "_setmaxstdio"]
helpviewer_keywords: ["maximum open files", "_setmaxstdio function", "setmaxstdio function", "open files, maximum"]
ms.assetid: 9e966875-9ff5-47c4-9b5f-e79e83b70249
diff --git a/docs/c-runtime-library/reference/setmbcp.md b/docs/c-runtime-library/reference/setmbcp.md
index 535ad042b2..81f8fa2f0c 100644
--- a/docs/c-runtime-library/reference/setmbcp.md
+++ b/docs/c-runtime-library/reference/setmbcp.md
@@ -1,9 +1,10 @@
---
title: "_setmbcp"
ms.date: "11/04/2016"
-apiname: ["_setmbcp"]
-apilocation: ["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-locale-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_setmbcp"]
+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-locale-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_setmbcp", "setmbcp"]
helpviewer_keywords: ["setmbcp function", "_setmbcp function", "multibyte code pages"]
ms.assetid: cfde53b5-0b73-4684-81b1-a8d3aafc85de
diff --git a/docs/c-runtime-library/reference/setmode.md b/docs/c-runtime-library/reference/setmode.md
index a33e34aefd..6ebe154a4f 100644
--- a/docs/c-runtime-library/reference/setmode.md
+++ b/docs/c-runtime-library/reference/setmode.md
@@ -1,9 +1,10 @@
---
title: "_setmode"
ms.date: "11/04/2016"
-apiname: ["_setmode"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_setmode"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_setmode"]
helpviewer_keywords: ["Unicode [C++], console output", "files [C++], modes", "_setmode function", "file translation [C++], setting mode", "files [C++], translation", "setmode function"]
ms.assetid: 996ff7cb-11d1-43f4-9810-f6097182642a
diff --git a/docs/c-runtime-library/reference/setvbuf.md b/docs/c-runtime-library/reference/setvbuf.md
index cfb3d5907f..8297ba8404 100644
--- a/docs/c-runtime-library/reference/setvbuf.md
+++ b/docs/c-runtime-library/reference/setvbuf.md
@@ -1,9 +1,10 @@
---
title: "setvbuf"
ms.date: "11/04/2016"
-apiname: ["setvbuf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["setvbuf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["setvbuf"]
helpviewer_keywords: ["controlling stream buffering", "stream buffering", "setvbuf function"]
ms.assetid: 6aa5aa37-3408-4fa0-992f-87f9f9c4baea
diff --git a/docs/c-runtime-library/reference/signal.md b/docs/c-runtime-library/reference/signal.md
index 41dcd064f6..671648e9b9 100644
--- a/docs/c-runtime-library/reference/signal.md
+++ b/docs/c-runtime-library/reference/signal.md
@@ -1,9 +1,10 @@
---
title: "signal"
ms.date: "04/12/2018"
-apiname: ["signal"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["signal"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["signal"]
helpviewer_keywords: ["signal function"]
---
@@ -104,7 +105,6 @@ The following example shows how to use **signal** to add some custom behavior to
// Use signal to attach a signal handler to the abort routine
#include
#include
-#include
void SignalHandler(int signal)
{
@@ -126,9 +126,16 @@ int main()
}
```
+The output depends on the version of the runtime used, whether the app is a console or Windows app, and on Windows registry settings. For a console app, something like the following message may be sent to stderr:
+
```Output
-This application has requested the Runtime to terminate it in an unusual way.
-Please contact the application's support team for more information.
+Debug Error!
+
+Program: c:\Projects\crt_signal\Debug\crt_signal.exe
+
+R6010
+
+- abort() has been called
```
## See also
diff --git a/docs/c-runtime-library/reference/sin-sinf-sinl.md b/docs/c-runtime-library/reference/sin-sinf-sinl.md
index 366551057b..c9cd5b323c 100644
--- a/docs/c-runtime-library/reference/sin-sinf-sinl.md
+++ b/docs/c-runtime-library/reference/sin-sinf-sinl.md
@@ -1,9 +1,10 @@
---
title: "sin, sinf, sinl"
ms.date: "04/10/2018"
-apiname: ["sinl", "sinf", "sin"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["sinl", "sinf", "sin"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_sinl", "sinf", "sinl", "sin"]
helpviewer_keywords: ["_sinl function", "sinl function", "calculating sines", "sin function", "trigonometric functions", "sinf function"]
ms.assetid: 737de73e-3590-45f9-8257-dc1c0c489dfc
diff --git a/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md b/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md
index 0cac1b2d6b..c1afb6026b 100644
--- a/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md
+++ b/docs/c-runtime-library/reference/sinh-sinhf-sinhl.md
@@ -1,9 +1,10 @@
---
title: "sinh, sinhf, sinhl"
ms.date: "04/10/2018"
-apiname: ["sinhl", "sinhf", "sinhl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["sinhl", "sinhf", "sinhl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["sinh", "sinhf", "sinhl"]
helpviewer_keywords: ["sinh function", "sinhl function", "sinhf function", "calculating hyperbolic sines", "trigonometric functions", "sinhf function", "sinhl function", "hyperbolic functions"]
---
diff --git a/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md b/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md
index 2ded2b1ef5..300be95fd2 100644
--- a/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/snprintf-s-snprintf-s-l-snwprintf-s-snwprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "_snprintf_s, _snprintf_s_l, _snwprintf_s, _snwprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_snprintf_s", "_snprintf_s_l", "_snwprintf_s", "_snwprintf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_snprintf_s", "_snprintf_s_l", "_snwprintf_s", "_snwprintf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_snwprintf_s_l", "_sntprintf_s_l", "snprintf_s_l", "_snprintf_s_l", "_sntprintf_s", "_snprintf_s", "snprintf_s", "_snwprintf_s", "snwprintf_s_l", "snwprintf_s", "sntprintf_s", "sntprintf_s_l"]
helpviewer_keywords: ["_snprintf_s_l function", "_snwprintf_s_l function", "_sntprintf_s_l function", "snwprintf_s_l function", "snprintf_s function", "_snprintf_s function", "snprintf_s_l function", "_sntprintf_s function", "sntprintf_s_l function", "sntprintf_s function", "snwprintf_s function", "_snwprintf_s function", "formatted text [C++]"]
ms.assetid: 9336ab86-13e5-4a29-a3cd-074adfee6891
diff --git a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md
index 170999f98e..8340954049 100644
--- a/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md
+++ b/docs/c-runtime-library/reference/snprintf-snprintf-snprintf-l-snwprintf-snwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "snprintf, _snprintf, _snprintf_l, _snwprintf, _snwprintf_l"
ms.date: "11/04/2016"
-apiname: ["_snwprintf", "_snprintf", "_snprintf_l", "_snwprintf_l", "snprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_snwprintf", "_snprintf", "_snprintf_l", "_snwprintf_l", "snprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_snprintf", "snprintf_l", "snwprintf_l", "sntprintf", "snprintf", "_sntprintf", "_sntprintf_l", "sntprintf_l", "snwprintf", "_snprintf_l", "_snwprintf", "_snwprintf_l"]
helpviewer_keywords: ["snwprintf_l function", "sntprintf_l function", "snprintf_l function", "_snwprintf_l function", "_sntprintf_l function", "_snwprintf function", "_snprintf function", "_sntprintf function", "_snprintf_l function", "snwprintf function", "snprintf function", "sntprintf function", "formatted text [C++]"]
ms.assetid: 5976c9c8-876e-4ac9-a515-39f3f7fd0925
diff --git a/docs/c-runtime-library/reference/snscanf-s-snscanf-s-l-snwscanf-s-snwscanf-s-l.md b/docs/c-runtime-library/reference/snscanf-s-snscanf-s-l-snwscanf-s-snwscanf-s-l.md
index 2f40eac6a0..efd578bc58 100644
--- a/docs/c-runtime-library/reference/snscanf-s-snscanf-s-l-snwscanf-s-snwscanf-s-l.md
+++ b/docs/c-runtime-library/reference/snscanf-s-snscanf-s-l-snwscanf-s-snwscanf-s-l.md
@@ -1,9 +1,10 @@
---
title: "_snscanf_s, _snscanf_s_l, _snwscanf_s, _snwscanf_s_l"
ms.date: "11/04/2016"
-apiname: ["_snwscanf_s_l", "_snwscanf_s", "_snscanf_s", "_snscanf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_snwscanf_s_l", "_snwscanf_s", "_snscanf_s", "_snscanf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_sntscanf_s", "snscanf_s", "_snwscanf_s_l", "sntscanf_s_l", "snwscanf_s_l", "snwscanf_s", "_snscanf_s", "_snwscanf_s", "snscanf_s_l", "_sntscanf_s_l", "_snscanf_s_l", "sntscanf_s"]
helpviewer_keywords: ["_snscanf_s_l function", "snwscanf_s function", "_snwscanf_s function", "sntscanf_s_l function", "sntscanf_s function", "_snwscanf_s_l function", "_snscanf_s function", "snscanf_s_l function", "strings [C++], reading data from", "_sntscanf_s_l function", "reading data, strings", "snscanf_s function", "strings [C++], reading", "_sntscanf_s function", "snwscanf_s_l function"]
ms.assetid: 72356653-7362-461a-af73-597b9c0a8094
diff --git a/docs/c-runtime-library/reference/snscanf-snscanf-l-snwscanf-snwscanf-l.md b/docs/c-runtime-library/reference/snscanf-snscanf-l-snwscanf-snwscanf-l.md
index 1e5c8f17aa..161b257d34 100644
--- a/docs/c-runtime-library/reference/snscanf-snscanf-l-snwscanf-snwscanf-l.md
+++ b/docs/c-runtime-library/reference/snscanf-snscanf-l-snwscanf-snwscanf-l.md
@@ -1,9 +1,10 @@
---
title: "_snscanf, _snscanf_l, _snwscanf, _snwscanf_l"
ms.date: "11/04/2016"
-apiname: ["_snwscanf", "_snscanf_l", "_snscanf", "_snwscanf_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_snwscanf", "_snscanf_l", "_snscanf", "_snwscanf_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_snscanf", "_snscanf_l", "_snwscanf", "snscanf_l", "snscanf", "_sntscanf_l", "_sntscanf", "_snwscanf_l", "sntscanf_l", "sntscanf", "snwscanf", "snwscanf_l"]
helpviewer_keywords: ["snscanf_l function", "snwscanf function", "_sntscanf_l function", "sntscanf function", "_snwscanf_l function", "_sntscanf function", "_snscanf_l function", "sntscanf_l function", "strings [C++], reading data from", "snscanf function", "snwscanf_l function", "_snwscanf function", "reading data, strings", "strings [C++], reading", "_snscanf function"]
ms.assetid: da1ac890-f905-4cd7-954b-3c90957b5551
diff --git a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md
index 281e9f4ece..ac961fe89a 100644
--- a/docs/c-runtime-library/reference/sopen-s-wsopen-s.md
+++ b/docs/c-runtime-library/reference/sopen-s-wsopen-s.md
@@ -1,9 +1,10 @@
---
title: "_sopen_s, _wsopen_s"
ms.date: "11/04/2016"
-apiname: ["_sopen_s", "_wsopen_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_sopen_s", "_wsopen_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_sopen_s", "wsopen_s", "_wsopen_s", "sopen_s"]
helpviewer_keywords: ["sopen_s function", "_wsopen_s function", "wsopen_s function", "opening files, for sharing", "files [C++], opening", "_sopen_s function", "files [C++], sharing"]
ms.assetid: 059a0084-d08c-4973-9174-55e391b72aa2
diff --git a/docs/c-runtime-library/reference/sopen-wsopen.md b/docs/c-runtime-library/reference/sopen-wsopen.md
index 096fe25660..ca82adf9cd 100644
--- a/docs/c-runtime-library/reference/sopen-wsopen.md
+++ b/docs/c-runtime-library/reference/sopen-wsopen.md
@@ -1,9 +1,10 @@
---
title: "_sopen, _wsopen"
ms.date: "11/04/2016"
-apiname: ["_sopen", "_wsopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_sopen", "_wsopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wsopen", "wsopen", "_sopen", "_tsopen"]
helpviewer_keywords: ["sopen function", "sharing files", "opening files, for sharing", "_sopen function", "wsopen function", "files [C++], opening", "files [C++], sharing", "_wsopen function"]
ms.assetid: a9d4cccf-06e9-414d-96fa-453fca88cc1f
diff --git a/docs/c-runtime-library/reference/sopen.md b/docs/c-runtime-library/reference/sopen.md
index b6141d4e68..b264ccb8f7 100644
--- a/docs/c-runtime-library/reference/sopen.md
+++ b/docs/c-runtime-library/reference/sopen.md
@@ -1,13 +1,16 @@
---
title: "sopen"
-ms.date: "11/04/2016"
-apiname: ["sopen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["sopen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["sopen"]
helpviewer_keywords: ["sopen function"]
ms.assetid: 1ce0b707-0c9e-4942-8467-ce7f6cd68acc
---
# sopen
-This POSIX function is deprecated. Use the ISO C++ conformant [_sopen](sopen-wsopen.md) or security-enhanced [_sopen_s](sopen-s-wsopen-s.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `sopen` is a deprecated alias for the [_sopen](sopen-wsopen.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_sopen](sopen-wsopen.md) or the security-enhanced [_sopen_s](sopen-s-wsopen-s.md) function instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/spawnl-wspawnl.md b/docs/c-runtime-library/reference/spawnl-wspawnl.md
index 848a07050d..d946647f9d 100644
--- a/docs/c-runtime-library/reference/spawnl-wspawnl.md
+++ b/docs/c-runtime-library/reference/spawnl-wspawnl.md
@@ -1,9 +1,10 @@
---
title: "_spawnl, _wspawnl"
ms.date: "11/04/2016"
-apiname: ["_wspawnl", "_spawnl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wspawnl", "_spawnl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnl", "wspawnl", "_wspawnl", "_spawnl"]
helpviewer_keywords: ["spawnl function", "processes, creating", "_spawnl function", "processes, executing new", "_wspawnl function", "wspawnl function", "process creation"]
ms.assetid: dd4584c9-7173-4fc5-b93a-6e7d3c2316d7
diff --git a/docs/c-runtime-library/reference/spawnl.md b/docs/c-runtime-library/reference/spawnl.md
index efb7e22687..1915a3d04c 100644
--- a/docs/c-runtime-library/reference/spawnl.md
+++ b/docs/c-runtime-library/reference/spawnl.md
@@ -1,16 +1,19 @@
---
title: "spawnl"
-ms.date: "11/04/2016"
-apiname: ["spawnl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnl"]
helpviewer_keywords: ["spawnl function"]
ms.assetid: ae762de9-e761-4fb7-bb63-b7904ed09a98
---
# spawnl
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnl](spawnl-wspawnl.md) instead.
+The Microsoft-specific function name `spawnl` is a deprecated alias for the [_spawnl](spawnl-wspawnl.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnl](spawnl-wspawnl.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/spawnle-wspawnle.md b/docs/c-runtime-library/reference/spawnle-wspawnle.md
index 5d276d2f91..70c894d602 100644
--- a/docs/c-runtime-library/reference/spawnle-wspawnle.md
+++ b/docs/c-runtime-library/reference/spawnle-wspawnle.md
@@ -1,9 +1,10 @@
---
title: "_spawnle, _wspawnle"
ms.date: "11/04/2016"
-apiname: ["_spawnle", "_wspawnle"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_spawnle", "_wspawnle"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnle", "_spawnle", "wspawnle", "_wspawnle"]
helpviewer_keywords: ["spawnle function", "processes, creating", "_wspawnle function", "processes, executing new", "process creation", "wspawnle function", "_spawnle function"]
ms.assetid: 80308892-2815-49b1-8cca-53894c366f5a
diff --git a/docs/c-runtime-library/reference/spawnle.md b/docs/c-runtime-library/reference/spawnle.md
index 261c2c3f59..41d02bc7ff 100644
--- a/docs/c-runtime-library/reference/spawnle.md
+++ b/docs/c-runtime-library/reference/spawnle.md
@@ -1,16 +1,19 @@
---
title: "spawnle"
-ms.date: "11/04/2016"
-apiname: ["spawnle"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnle"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnle"]
helpviewer_keywords: ["spawnle function"]
ms.assetid: 7c90cfdd-dcee-4ea6-b709-cd0f7598b0fe
---
# spawnle
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnle](spawnle-wspawnle.md) instead.
+The Microsoft-specific function name `spawnle` is a deprecated alias for the [_spawnle](spawnle-wspawnle.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnle](spawnle-wspawnle.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/spawnlp-wspawnlp.md b/docs/c-runtime-library/reference/spawnlp-wspawnlp.md
index ae086b3e2a..724a3989a9 100644
--- a/docs/c-runtime-library/reference/spawnlp-wspawnlp.md
+++ b/docs/c-runtime-library/reference/spawnlp-wspawnlp.md
@@ -1,9 +1,10 @@
---
title: "_spawnlp, _wspawnlp"
ms.date: "11/04/2016"
-apiname: ["_wspawnlp", "_spawnlp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wspawnlp", "_spawnlp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wspawnlp", "wspawnlp", "_spawnlp"]
helpviewer_keywords: ["wspawnlp function", "_spawnlp function", "processes, creating", "processes, executing new", "_wspawnlp function", "process creation", "spawnlp function"]
ms.assetid: 74fc6e7a-4f24-4103-9387-7177875875e6
diff --git a/docs/c-runtime-library/reference/spawnlp.md b/docs/c-runtime-library/reference/spawnlp.md
index ab6df3171b..77f4cc74eb 100644
--- a/docs/c-runtime-library/reference/spawnlp.md
+++ b/docs/c-runtime-library/reference/spawnlp.md
@@ -1,16 +1,19 @@
---
title: "spawnlp"
-ms.date: "11/04/2016"
-apiname: ["spawnlp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnlp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnlp"]
helpviewer_keywords: ["spawnlp function"]
ms.assetid: 560da96f-4902-4620-8a92-0d128ecaa001
---
# spawnlp
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnlp](spawnlp-wspawnlp.md) instead.
+The Microsoft-specific function name `spawnlp` is a deprecated alias for the [_spawnlp](spawnlp-wspawnlp.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnlp](spawnlp-wspawnlp.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/spawnlpe-wspawnlpe.md b/docs/c-runtime-library/reference/spawnlpe-wspawnlpe.md
index 52e1c88202..a0791fdd8b 100644
--- a/docs/c-runtime-library/reference/spawnlpe-wspawnlpe.md
+++ b/docs/c-runtime-library/reference/spawnlpe-wspawnlpe.md
@@ -1,9 +1,10 @@
---
title: "_spawnlpe, _wspawnlpe"
ms.date: "11/04/2016"
-apiname: ["_spawnlpe", "_wspawnlpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_spawnlpe", "_wspawnlpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnlpe", "_wspawnlpe", "_spawnlpe", "wspawnlpe"]
helpviewer_keywords: ["_wspawnlpe function", "wspawnlpe function", "processes, creating", "spawnlpe function", "_spawnlpe function", "processes, executing new", "process creation"]
ms.assetid: e171ebfa-70e7-4c44-8331-2a291fc17bd6
diff --git a/docs/c-runtime-library/reference/spawnlpe.md b/docs/c-runtime-library/reference/spawnlpe.md
index eb2db67e6a..243ba9d025 100644
--- a/docs/c-runtime-library/reference/spawnlpe.md
+++ b/docs/c-runtime-library/reference/spawnlpe.md
@@ -1,16 +1,19 @@
---
title: "spawnlpe"
-ms.date: "11/04/2016"
-apiname: ["spawnlpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnlpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnlpe"]
helpviewer_keywords: ["spawnlpe function"]
ms.assetid: 379143a7-f3d0-41de-83cc-2b4321146390
---
# spawnlpe
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnlpe](spawnlpe-wspawnlpe.md) instead.
+The Microsoft-specific function name `spawnlpe` is a deprecated alias for the [_spawnlpe](spawnlpe-wspawnlpe.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnlpe](spawnlpe-wspawnlpe.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/spawnv-wspawnv.md b/docs/c-runtime-library/reference/spawnv-wspawnv.md
index b819b83961..f909f85e92 100644
--- a/docs/c-runtime-library/reference/spawnv-wspawnv.md
+++ b/docs/c-runtime-library/reference/spawnv-wspawnv.md
@@ -1,9 +1,10 @@
---
title: "_spawnv, _wspawnv"
ms.date: "11/04/2016"
-apiname: ["_wspawnv", "_spawnv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wspawnv", "_spawnv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wspawnv", "_spawnv", "_wspawnv"]
helpviewer_keywords: ["wspawnv function", "processes, creating", "_spawnv function", "processes, executing new", "process creation", "_wspawnv function", "spawnv function"]
ms.assetid: 72360ef4-dfa9-44c1-88c1-b3ecb660aa7d
diff --git a/docs/c-runtime-library/reference/spawnv.md b/docs/c-runtime-library/reference/spawnv.md
index be12984a6c..30fa608e73 100644
--- a/docs/c-runtime-library/reference/spawnv.md
+++ b/docs/c-runtime-library/reference/spawnv.md
@@ -1,16 +1,19 @@
---
title: "spawnv"
-ms.date: "11/04/2016"
-apiname: ["spawnv"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnv"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnv"]
helpviewer_keywords: ["spawnv function"]
ms.assetid: 6f9b247c-1524-4c24-b846-6925fe22f1cd
---
# spawnv
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnv](spawnv-wspawnv.md) instead.
+The Microsoft-specific function name `spawnv` is a deprecated alias for the [_spawnv](spawnv-wspawnv.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnv](spawnv-wspawnv.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/spawnve-wspawnve.md b/docs/c-runtime-library/reference/spawnve-wspawnve.md
index b8509b581c..2c45d6bd34 100644
--- a/docs/c-runtime-library/reference/spawnve-wspawnve.md
+++ b/docs/c-runtime-library/reference/spawnve-wspawnve.md
@@ -1,9 +1,10 @@
---
title: "_spawnve, _wspawnve"
ms.date: "11/04/2016"
-apiname: ["_spawnve", "_wspawnve"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_spawnve", "_wspawnve"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wspawnve", "_spawnve", "_wspawnve", "spawnve"]
helpviewer_keywords: ["_spawnve function", "spawnve function", "wspawnve function", "processes, creating", "_wspawnve function", "processes, executing new", "process creation"]
ms.assetid: 26d1713d-b551-4f21-a07b-e9891a2ae6cf
diff --git a/docs/c-runtime-library/reference/spawnve.md b/docs/c-runtime-library/reference/spawnve.md
index c652b749b0..59550216dc 100644
--- a/docs/c-runtime-library/reference/spawnve.md
+++ b/docs/c-runtime-library/reference/spawnve.md
@@ -1,16 +1,19 @@
---
title: "spawnve"
-ms.date: "11/04/2016"
-apiname: ["spawnve"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnve"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnve"]
helpviewer_keywords: ["spawnve function"]
ms.assetid: 39507df8-f15f-45fb-b2b6-01359272b147
---
# spawnve
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnve](spawnve-wspawnve.md) instead.
+The Microsoft-specific function name `spawnve` is a deprecated alias for the [_spawnve](spawnve-wspawnve.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnve](spawnve-wspawnve.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/spawnvp-wspawnvp.md b/docs/c-runtime-library/reference/spawnvp-wspawnvp.md
index ef8e45544c..8c6529b303 100644
--- a/docs/c-runtime-library/reference/spawnvp-wspawnvp.md
+++ b/docs/c-runtime-library/reference/spawnvp-wspawnvp.md
@@ -1,9 +1,10 @@
---
title: "_spawnvp, _wspawnvp"
ms.date: "11/04/2016"
-apiname: ["_wspawnvp", "_spawnvp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wspawnvp", "_spawnvp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wspawnvp", "_spawnvp", "wspawnvp"]
helpviewer_keywords: ["wspawnvp function", "processes, creating", "_wspawnvp function", "processes, executing new", "spawnvp function", "process creation", "_spawnvp function"]
ms.assetid: 8d8774ec-6ad4-4680-a5aa-440cde1e0249
diff --git a/docs/c-runtime-library/reference/spawnvp.md b/docs/c-runtime-library/reference/spawnvp.md
index 1a4a6d356a..2e5abd51f0 100644
--- a/docs/c-runtime-library/reference/spawnvp.md
+++ b/docs/c-runtime-library/reference/spawnvp.md
@@ -1,16 +1,19 @@
---
title: "spawnvp"
-ms.date: "11/04/2016"
-apiname: ["spawnvp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnvp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnvp"]
helpviewer_keywords: ["spawnvp function"]
ms.assetid: 25d3896d-1934-4453-ae8b-4fb5480a2657
---
# spawnvp
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnvp](spawnvp-wspawnvp.md) instead.
+The Microsoft-specific function name `spawnvp` is a deprecated alias for the [_spawnvp](spawnvp-wspawnvp.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnvp](spawnvp-wspawnvp.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/spawnvpe-wspawnvpe.md b/docs/c-runtime-library/reference/spawnvpe-wspawnvpe.md
index 0e9299715e..fc8bc3bdf3 100644
--- a/docs/c-runtime-library/reference/spawnvpe-wspawnvpe.md
+++ b/docs/c-runtime-library/reference/spawnvpe-wspawnvpe.md
@@ -1,9 +1,10 @@
---
title: "_spawnvpe, _wspawnvpe"
ms.date: "11/04/2016"
-apiname: ["_spawnvpe", "_wspawnvpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_spawnvpe", "_wspawnvpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-process-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_spawnvpe", "wspawnvpe", "spawnvpe", "_wspawnvpe"]
helpviewer_keywords: ["_wspawnvpe function", "processes, creating", "_spawnvpe function", "processes, executing new", "wspawnvpe function", "process creation", "spawnvpe function"]
ms.assetid: 3db6394e-a955-4837-97a1-fab1db1e6092
diff --git a/docs/c-runtime-library/reference/spawnvpe.md b/docs/c-runtime-library/reference/spawnvpe.md
index 95c285002e..5de53d8084 100644
--- a/docs/c-runtime-library/reference/spawnvpe.md
+++ b/docs/c-runtime-library/reference/spawnvpe.md
@@ -1,16 +1,19 @@
---
title: "spawnvpe"
-ms.date: "11/04/2016"
-apiname: ["spawnvpe"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["spawnvpe"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["spawnvpe"]
helpviewer_keywords: ["spawnvpe function"]
ms.assetid: be16bf98-5059-4c33-be00-7524142a017e
---
# spawnvpe
-This POSIX function is deprecated. Use the ISO C++ conformant [_spawnvpe](spawnvpe-wspawnvpe.md) instead.
+The Microsoft-specific function name `spawnvpe` is a deprecated alias for the [_spawnvpe](spawnvpe-wspawnvpe.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_spawnvpe](spawnvpe-wspawnvpe.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/splitpath-s-wsplitpath-s.md b/docs/c-runtime-library/reference/splitpath-s-wsplitpath-s.md
index 4191b3264b..a336f2d9a8 100644
--- a/docs/c-runtime-library/reference/splitpath-s-wsplitpath-s.md
+++ b/docs/c-runtime-library/reference/splitpath-s-wsplitpath-s.md
@@ -1,9 +1,10 @@
---
title: "_splitpath_s, _wsplitpath_s"
ms.date: "11/04/2016"
-apiname: ["_wsplitpath_s", "_splitpath_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wsplitpath_s", "_splitpath_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wsplitpath_s", "splitpath_s", "_splitpath_s", "wsplitpath_s"]
helpviewer_keywords: ["splitpath_s function", "pathnames", "_splitpath_s function", "_wsplitpath_s function", "path names", "wsplitpath_s function"]
ms.assetid: 30fff3e2-cd00-4eb6-b5a2-65db79cb688b
@@ -131,7 +132,7 @@ If the full path does not contain a component (for example, a filename), **_spli
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically, eliminating the need to specify a size argument. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
## Requirements
diff --git a/docs/c-runtime-library/reference/splitpath-wsplitpath.md b/docs/c-runtime-library/reference/splitpath-wsplitpath.md
index 76e08f5b88..df2dc19957 100644
--- a/docs/c-runtime-library/reference/splitpath-wsplitpath.md
+++ b/docs/c-runtime-library/reference/splitpath-wsplitpath.md
@@ -1,9 +1,10 @@
---
title: "_splitpath, _wsplitpath"
ms.date: "11/04/2016"
-apiname: ["_wsplitpath", "_splitpath"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wsplitpath", "_splitpath"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wsplitpath", "_splitpath", "splitpath", "_wsplitpath", "_tsplitpath"]
helpviewer_keywords: ["_splitpath function", "pathnames", "wsplitpath function", "splitpath function", "_wsplitpath function", "tsplitpath function", "path names", "_tsplitpath function"]
ms.assetid: 32bd76b5-1385-4ee8-a64c-abcb541cd2e4
diff --git a/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md b/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md
index f655980230..b67a404af9 100644
--- a/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md
+++ b/docs/c-runtime-library/reference/sprintf-p-sprintf-p-l-swprintf-p-swprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_sprintf_p, _sprintf_p_l, _swprintf_p, _swprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_sprintf_p", "_swprintf_p_l", "_swprintf_p", "_sprintf_p_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_sprintf_p", "_swprintf_p_l", "_swprintf_p", "_sprintf_p_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_sprintf_p", "_swprintf_p_l", "_sprintf_p_l", "_swprintf_p", "sprintf_p", "swprint_p_l", "swprintf_p", "swprintf_p_l"]
helpviewer_keywords: ["sprintf_p_l function", "swprintf_p function", "swprintf_p_l function", "_sprintf_p function", "_sprintf_p_l function", "_swprintf_p function", "sprintf_p function", "_stprintf_p function", "stprintf_p function", "_swprintf_p_l function", "stprintf_p_l function", "formatted text [C++]", "_stprintf_p_l function"]
ms.assetid: a2ae78e8-6b0c-48d5-87a9-ea2365b0693d
diff --git a/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md b/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md
index 9a253b91a0..935653b31b 100644
--- a/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md
+++ b/docs/c-runtime-library/reference/sprintf-s-sprintf-s-l-swprintf-s-swprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "sprintf_s, _sprintf_s_l, swprintf_s, _swprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_swprintf_s_l", "_sprintf_s_l", "swprintf_s", "sprintf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_swprintf_s_l", "_sprintf_s_l", "swprintf_s", "sprintf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["swprintf_s", "sprintf_s", "stdio/sprintf_s", "stdio/swprintf_s", "stdio/_sprintf_s_l", "stdio/_swprintf_s_l", "_sprintf_s_l", "_swprintf_s_l"]
helpviewer_keywords: ["stprintf_s function", "stprintf_s_l function", "swprintf_s_l function", "sprintf_s function", "swprintf_s function", "_swprintf_s_l function", "sprintf_s_l function", "_stprintf_s_l function", "_stprintf_s function", "_sprintf_s_l function", "formatted text [C++]"]
ms.assetid: 424f0a29-22ef-40e8-b565-969f5f57782f
diff --git a/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md b/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md
index 15beca19b3..e7a42c7370 100644
--- a/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md
+++ b/docs/c-runtime-library/reference/sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md
@@ -1,9 +1,10 @@
---
title: "sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l"
ms.date: "11/04/2016"
-apiname: ["__swprintf_l", "sprintf", "_sprintf_l", "_swprintf_l", "swprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["__swprintf_l", "sprintf", "_sprintf_l", "_swprintf_l", "swprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_stprintf_l", "__swprintf_l", "sprintf_l", "swprintf", "_sprintf_l", "sprintf", "_stprintf", "stprintf_l"]
helpviewer_keywords: ["_swprintf_l function", "_stprintf function", "__swprintf_l function", "stprintf function", "sprintf function", "_sprintf_l function", "_stprintf_l function", "swprintf function", "strings [C++], writing to", "_CRT_NON_CONFORMING_SWPRINTFS", "swprintf_l function", "stprintf_l function", "sprintf_l function", "formatted text [C++]"]
ms.assetid: f6efe66f-3563-4c74-9455-5411ed939b81
diff --git a/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md b/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md
index 689d44e0c0..08621418fb 100644
--- a/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md
+++ b/docs/c-runtime-library/reference/sqrt-sqrtf-sqrtl.md
@@ -1,9 +1,10 @@
---
title: "sqrt, sqrtf, sqrtl"
ms.date: "04/05/2018"
-apiname: ["sqrtl", "sqrtf", "sqrt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["sqrtl", "sqrtf", "sqrt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["sqrt", "sqrtf", "_sqrtl"]
helpviewer_keywords: ["sqrtf function", "sqrt function", "sqrtl function", "_sqrtl function", "calculating square roots", "square roots, calculating"]
ms.assetid: 2ba9467b-f172-41dc-8f10-b86f68fa813c
diff --git a/docs/c-runtime-library/reference/srand.md b/docs/c-runtime-library/reference/srand.md
index 56d47e5167..964671e63b 100644
--- a/docs/c-runtime-library/reference/srand.md
+++ b/docs/c-runtime-library/reference/srand.md
@@ -1,9 +1,10 @@
---
title: "srand"
-ms.date: "1/02/2018"
-apiname: ["srand"]
-apilocation: ["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-utility-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+ms.date: "01/02/2018"
+api_name: ["srand"]
+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-utility-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["srand"]
helpviewer_keywords: ["random starting point", "random starting point, setting", "random numbers, generating", "srand function", "numbers, pseudorandom", "numbers, random", "pseudorandom numbers", "starting points, setting random", "starting points"]
---
diff --git a/docs/c-runtime-library/reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l.md b/docs/c-runtime-library/reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l.md
index f5ca8052a4..3f7074aa0c 100644
--- a/docs/c-runtime-library/reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l.md
+++ b/docs/c-runtime-library/reference/sscanf-s-sscanf-s-l-swscanf-s-swscanf-s-l.md
@@ -1,9 +1,10 @@
---
title: "sscanf_s, _sscanf_s_l, swscanf_s, _swscanf_s_l"
ms.date: "11/04/2016"
-apiname: ["_sscanf_s_l", "sscanf_s", "_swscanf_s_l", "swscanf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_sscanf_s_l", "sscanf_s", "_swscanf_s_l", "swscanf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_stscanf_s", "sscanf_s", "swscanf_s", "_swscanf_s_l", "_stscanf_s_l", "_sscanf_s_l"]
helpviewer_keywords: ["stscanf_s_l function", "stscanf_s function", "swscanf_s function", "swscanf_s_l function", "sscanf_s_l function", "_stscanf_s_l function", "strings [C++], reading data from", "sscanf_s function", "_swscanf_s_l function", "_stscanf_s function", "reading data, strings", "strings [C++], reading", "_sscanf_s_l function"]
ms.assetid: 956e65c8-00a5-43e8-a2f2-0f547ac9e56c
diff --git a/docs/c-runtime-library/reference/sscanf-sscanf-l-swscanf-swscanf-l.md b/docs/c-runtime-library/reference/sscanf-sscanf-l-swscanf-swscanf-l.md
index e47ca8f484..97c47e855e 100644
--- a/docs/c-runtime-library/reference/sscanf-sscanf-l-swscanf-swscanf-l.md
+++ b/docs/c-runtime-library/reference/sscanf-sscanf-l-swscanf-swscanf-l.md
@@ -1,9 +1,10 @@
---
title: "sscanf, _sscanf_l, swscanf, _swscanf_l"
ms.date: "08/29/2019"
-apiname: ["swscanf", "sscanf", "_sscanf_l", "_swscanf_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["swscanf", "sscanf", "_sscanf_l", "_swscanf_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_sscanf_l", "_stscanf", "swscanf", "_stscanf_l", "sscanf", "_swscanf_l"]
helpviewer_keywords: ["swscanf function", "_stscanf function", "sscanf function", "_stscanf_l function", "_sscanf_l function", "_swscanf_l function", "swscanf_l function", "strings [C++], reading data from", "stscanf function", "reading data, strings", "strings [C++], reading", "sscanf_l function", "stscanf_l function"]
ms.assetid: c2dcf0d2-9798-499f-a4a8-06f7e2b9a80c
diff --git a/docs/c-runtime-library/reference/stat-functions.md b/docs/c-runtime-library/reference/stat-functions.md
index fa9d1f3cc1..79270abd02 100644
--- a/docs/c-runtime-library/reference/stat-functions.md
+++ b/docs/c-runtime-library/reference/stat-functions.md
@@ -1,9 +1,10 @@
---
title: "_stat, _stat32, _stat64, _stati64, _stat32i64, _stat64i32, _wstat, _wstat32, _wstat64, _wstati64, _wstat32i64, _wstat64i32"
ms.date: "11/04/2016"
-apiname: ["_wstat64", "_stati64", "_stat32", "_stat32i64", "_stat", "_wstati64", "_wstat32", "_wstat64i32", "_wstat", "_stat64", "_stat64i32", "_wstat32i64"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wstat64", "_stati64", "_stat32", "_stat32i64", "_stat", "_wstati64", "_wstat32", "_wstat64i32", "_wstat", "_stat64", "_stat64i32", "_wstat32i64"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tstat32", "tstat", "_tstat64i32", "tstati64", "_wstat64", "_wstat32", "wstati64", "tstat64", "_stati64", "_wstat", "wstat64i32", "stat32i64", "tstat32i64", "_tstat", "_wstati64", "_tstati64", "_wstat32i64", "wstat32", "_wstat64i32", "_stat", "_tstat32", "stat64i32", "wstat64", "stat", "_stat32i64", "_stat32", "stati64", "wstat", "_stat64i32", "stat32", "_tstat32i64", "tstat64i32", "_tstat64", "_stat64", "stat/_stat", "stat/_stat32", "stat/_stat64", "stat/_stati64", "stat/_stat32i64", "stat/_stat64i32", "stat/_wstat", "stat/_wstat32", "stat/_wstat64", "stat/_wstati64", "stat/_wstat32i64", "stat/_wstat64i32"]
helpviewer_keywords: ["files [C++], status information", "_stat function", "_wstat function", "_stat64i32 function", "tstat function", "_tstat64i32 function", "_stati64 function", "_stat64 function", "tstati64 function", "wstati64 function", "wstat64 function", "_wstat64i32 function", "_tstat32i64 function", "_stat32i64 function", "stat function", "status of files", "_tstat32 function", "tstat64 function", "_wstat64 function", "_tstat function", "_stat32 function", "wstat function", "_wstat32i64 function", "_tstati64 function", "_wstat32 function", "stat64 function", "stati64 function", "_wstati64 function", "_tstat64 function", "files [C++], getting status information"]
ms.assetid: 99a75ae6-ff26-47ad-af70-5ea7e17226a5
diff --git a/docs/c-runtime-library/reference/static-assert-macro.md b/docs/c-runtime-library/reference/static-assert-macro.md
index 7455a74098..349d5eda0e 100644
--- a/docs/c-runtime-library/reference/static-assert-macro.md
+++ b/docs/c-runtime-library/reference/static-assert-macro.md
@@ -1,8 +1,9 @@
---
title: "_STATIC_ASSERT Macro"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_STATIC_ASSERT"]
helpviewer_keywords: ["_STATIC_ASSERT macro"]
ms.assetid: 89b0350c-2c2f-4be6-9786-8b1f0780a5da
diff --git a/docs/c-runtime-library/reference/status87-statusfp-statusfp2.md b/docs/c-runtime-library/reference/status87-statusfp-statusfp2.md
index dd4d5becdc..d1f3ec5256 100644
--- a/docs/c-runtime-library/reference/status87-statusfp-statusfp2.md
+++ b/docs/c-runtime-library/reference/status87-statusfp-statusfp2.md
@@ -1,9 +1,10 @@
---
title: "_status87, _statusfp, _statusfp2"
ms.date: "04/05/2018"
-apiname: ["_statusfp2", "_statusfp", "_status87"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_statusfp2", "_statusfp", "_status87"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_statusfp2", "_statusfp", "statusfp2", "_status87", "status87", "statusfp"]
helpviewer_keywords: ["floating-point functions, getting status word", "floating-point numbers, status word", "status87 function", "status word, getting floating point", "statusfp function", "_statusfp function", "_statusfp2 function", "statusfp2 function", "_status87 function", "floating-point functions", "status word"]
ms.assetid: 7ef963fa-b1fb-429d-94d6-fbf282ab7432
diff --git a/docs/c-runtime-library/reference/strcat-s-wcscat-s-mbscat-s.md b/docs/c-runtime-library/reference/strcat-s-wcscat-s-mbscat-s.md
index 3f138615b8..98b808f99e 100644
--- a/docs/c-runtime-library/reference/strcat-s-wcscat-s-mbscat-s.md
+++ b/docs/c-runtime-library/reference/strcat-s-wcscat-s-mbscat-s.md
@@ -1,9 +1,10 @@
---
title: "strcat_s, wcscat_s, _mbscat_s, _mbscat_s_l"
ms.date: "01/22/2019"
-apiname: ["strcat_s", "_mbscat_s", "_mbscat_s_l", "wcscat_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["strcat_s", "_mbscat_s", "_mbscat_s_l", "wcscat_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strcat_s", "wcscat_s", "_mbscat_s", "_mbscat_s_l"]
helpviewer_keywords: ["wcscat_s function", "strcat_s function", "mbscat_s function", "strings [C++], appending", "_mbscat_s function", "_mbscat_s_l function", "appending strings"]
ms.assetid: 0f2f9901-c5c5-480b-98bc-f8f690792fc0
@@ -109,7 +110,7 @@ The versions of functions that have the **_l** suffix have the same behavior, bu
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strcat-wcscat-mbscat.md b/docs/c-runtime-library/reference/strcat-wcscat-mbscat.md
index e98aae1a6c..e55bf24e8d 100644
--- a/docs/c-runtime-library/reference/strcat-wcscat-mbscat.md
+++ b/docs/c-runtime-library/reference/strcat-wcscat-mbscat.md
@@ -1,9 +1,10 @@
---
title: "strcat, wcscat, _mbscat"
ms.date: "11/04/2016"
-apiname: ["_mbscat", "wcscat", "strcat"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_mbscat", "wcscat", "strcat"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbscat", "_ftcscat", "_tcscat", "strcat", "wcscat"]
helpviewer_keywords: ["concatenating strings", "mbscat function", "_ftcscat function", "_tcscat function", "ftcscat function", "strcat function", "strings [C++], appending", "_mbscat function", "tcscat function", "strings [C++], concatenating", "appending strings", "wcscat function"]
ms.assetid: c89c4ef1-817a-44ff-a229-fe22d06ba78a
diff --git a/docs/c-runtime-library/reference/strchr-wcschr-mbschr-mbschr-l.md b/docs/c-runtime-library/reference/strchr-wcschr-mbschr-mbschr-l.md
index 71ff790f46..b46bf41f5d 100644
--- a/docs/c-runtime-library/reference/strchr-wcschr-mbschr-mbschr-l.md
+++ b/docs/c-runtime-library/reference/strchr-wcschr-mbschr-mbschr-l.md
@@ -1,9 +1,10 @@
---
title: "strchr, wcschr, _mbschr, _mbschr_l"
ms.date: "11/04/2016"
-apiname: ["strchr", "wcschr", "_mbschr_l", "_mbschr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["strchr", "wcschr", "_mbschr_l", "_mbschr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftcschr", "strchr", "wcschr", "_tcschr", "_mbschr"]
helpviewer_keywords: ["strings [C++], searching", "mbschr function", "_ftcschr function", "_mbschr function", "characters [C++], finding in strings", "_mbschr_l function", "ftcschr function", "wcschr function", "strchr function", "_tcschr function", "tcschr function", "mbschr_l function"]
ms.assetid: 2639905d-e983-43b7-b885-abef32cfac43
diff --git a/docs/c-runtime-library/reference/strcmp-wcscmp-mbscmp.md b/docs/c-runtime-library/reference/strcmp-wcscmp-mbscmp.md
index 82191eca33..82f7e99eec 100644
--- a/docs/c-runtime-library/reference/strcmp-wcscmp-mbscmp.md
+++ b/docs/c-runtime-library/reference/strcmp-wcscmp-mbscmp.md
@@ -1,9 +1,10 @@
---
title: "strcmp, wcscmp, _mbscmp, _mbscmp_l"
ms.date: "01/22/2019"
-apiname: ["wcscmp", "_mbscmp", "_mbscmp_l", "strcmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["wcscmp", "_mbscmp", "_mbscmp_l", "strcmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbscmp", "_mbscmp_l", "wcscmp", "strcmp", "_tcscmp", "_ftcscmp"]
helpviewer_keywords: ["tcscmp function", "strcmp function", "strings [C++], comparing", "mbscmp function", "string comparison [C++]", "_mbscmp function", "_mbscmp_l function", "wcscmp function", "_tcscmp function", "_ftcscmp function", "ftcscmp function"]
ms.assetid: 5d216b57-7a5c-4cb3-abf0-0f4facf4396d
diff --git a/docs/c-runtime-library/reference/strcmpi.md b/docs/c-runtime-library/reference/strcmpi.md
index 05cb463043..79e041dd0a 100644
--- a/docs/c-runtime-library/reference/strcmpi.md
+++ b/docs/c-runtime-library/reference/strcmpi.md
@@ -1,13 +1,16 @@
---
title: "strcmpi"
-ms.date: "11/04/2016"
-apiname: ["_strcmpi", "strcmpi"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["_strcmpi", "strcmpi"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strcmpi"]
helpviewer_keywords: ["strcmpi function"]
ms.assetid: 74206b2f-9bca-4d32-9cdc-93cb94c2aaa1
---
# strcmpi
-This POSIX function is deprecated. Use the ISO C++ conformant [_stricmp](stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `strcmpi` is a deprecated alias for the [_stricmp](stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_stricmp](stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/strcoll-wcscoll-mbscoll-strcoll-l-wcscoll-l-mbscoll-l.md b/docs/c-runtime-library/reference/strcoll-wcscoll-mbscoll-strcoll-l-wcscoll-l-mbscoll-l.md
index faa1372ed5..4a43c4a015 100644
--- a/docs/c-runtime-library/reference/strcoll-wcscoll-mbscoll-strcoll-l-wcscoll-l-mbscoll-l.md
+++ b/docs/c-runtime-library/reference/strcoll-wcscoll-mbscoll-strcoll-l-wcscoll-l-mbscoll-l.md
@@ -1,9 +1,10 @@
---
title: "strcoll, wcscoll, _mbscoll, _strcoll_l, _wcscoll_l, _mbscoll_l"
ms.date: "11/04/2016"
-apiname: ["wcscoll", "_mbscoll", "_mbscoll_l", "strcoll", "_strcoll_l", "_wcscoll_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcscoll", "_mbscoll", "_mbscoll_l", "strcoll", "_strcoll_l", "_wcscoll_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcscoll", "_mbscoll", "_tcscoll", "_ftcscoll"]
helpviewer_keywords: ["code pages, using for string comparisons", "mbscoll function", "wcscoll_l function", "ftcscoll function", "wcscoll function", "_strcoll_l function", "tcscoll function", "_ftcscoll function", "_tcscoll function", "_wcscoll_l function", "_mbscoll function", "strcoll_l function", "strcoll functions", "strings [C++], comparing by code page"]
ms.assetid: 900a7540-c7ec-4c2f-b292-7a85f63e3fe8
diff --git a/docs/c-runtime-library/reference/strcpy-s-wcscpy-s-mbscpy-s.md b/docs/c-runtime-library/reference/strcpy-s-wcscpy-s-mbscpy-s.md
index cd88f5e9e2..4e83e94cd9 100644
--- a/docs/c-runtime-library/reference/strcpy-s-wcscpy-s-mbscpy-s.md
+++ b/docs/c-runtime-library/reference/strcpy-s-wcscpy-s-mbscpy-s.md
@@ -1,9 +1,10 @@
---
title: "strcpy_s, wcscpy_s, _mbscpy_s, _mbscpy_s_l"
ms.date: "01/22/2019"
-apiname: ["wcscpy_s", "_mbscpy_s", "_mbscpy_s_l", "strcpy_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["wcscpy_s", "_mbscpy_s", "_mbscpy_s_l", "strcpy_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strcpy_s", "_mbscpy_s", "_mbscpy_s_l", "_tcscpy_s", "wcscpy_s"]
helpviewer_keywords: ["strcpy_s function", "_tcscpy_s function", "_mbscpy_s function", "_mbscpy_s_l function", "copying strings", "strings [C++], copying", "tcscpy_s function", "wcscpy_s function"]
ms.assetid: 611326f3-7929-4a5d-a465-a4683af3b053
diff --git a/docs/c-runtime-library/reference/strcpy-wcscpy-mbscpy.md b/docs/c-runtime-library/reference/strcpy-wcscpy-mbscpy.md
index c04c39f162..5e08fa7b3f 100644
--- a/docs/c-runtime-library/reference/strcpy-wcscpy-mbscpy.md
+++ b/docs/c-runtime-library/reference/strcpy-wcscpy-mbscpy.md
@@ -1,9 +1,10 @@
---
title: "strcpy, wcscpy, _mbscpy"
ms.date: "11/04/2016"
-apiname: ["strcpy", "wcscpy", "_mbscpy"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["strcpy", "wcscpy", "_mbscpy"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbscpy", "_ftcscpy", "wcscpy", "_tcscpy", "strcpy"]
helpviewer_keywords: ["strcpy function", "tcscpy function", "ftcscpy function", "mbscpy function", "wcscpy function", "copying strings", "strings [C++], copying", "_tcscpy function", "_ftcscpy function", "_mbscpy function"]
ms.assetid: f97a4f81-e9ee-4f15-888a-0fa5d7094c5a
diff --git a/docs/c-runtime-library/reference/strcspn-wcscspn-mbscspn-mbscspn-l.md b/docs/c-runtime-library/reference/strcspn-wcscspn-mbscspn-mbscspn-l.md
index a5536b1eb9..3bd7f6c2f3 100644
--- a/docs/c-runtime-library/reference/strcspn-wcscspn-mbscspn-mbscspn-l.md
+++ b/docs/c-runtime-library/reference/strcspn-wcscspn-mbscspn-mbscspn-l.md
@@ -1,9 +1,10 @@
---
title: "strcspn, wcscspn, _mbscspn, _mbscspn_l"
ms.date: "11/04/2016"
-apiname: ["_mbscspn_l", "wcscspn", "_mbscspn", "strcspn"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbscspn_l", "wcscspn", "_mbscspn", "strcspn"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strcspn", "_mbscspn", "wcscspn", "_ftcscspn", "_tcscspn"]
helpviewer_keywords: ["strings [C++], searching", "ftcscspn function", "strcspn function", "_mbscspn function", "mbscspn_l function", "wcscspn function", "tcscspn function", "_ftcscspn function", "_mbscspn_l function", "mbscspn function", "_tcscspn function"]
ms.assetid: f73f51dd-b533-4e46-ba29-d05c553708a6
diff --git a/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md b/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md
index 8f504006db..13bcd7d472 100644
--- a/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md
+++ b/docs/c-runtime-library/reference/strdate-s-wstrdate-s.md
@@ -1,27 +1,29 @@
---
title: "_strdate_s, _wstrdate_s"
-ms.date: "11/04/2016"
-apiname: ["_strdate_s", "_wstrdate_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "_strdate_s and _wstrdate_s are secure CRT versions of the _strdate and _wstrdate functions that put the current date in a buffer."
+ms.date: "11/01/2019"
+api_name: ["_strdate_s", "_wstrdate_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strdate_s", "wstrdate_s", "_wstrdate_s", "strdate_s", "_tstrdate_s"]
helpviewer_keywords: ["dates, copying", "tstrdate_s function", "wstrdate_s function", "_tstrdate_s function", "strdate_s function", "copying dates", "_strdate_s function", "_wstrdate_s function"]
ms.assetid: d41d8ea9-e5ce-40d4-864e-1ac29b455991
---
# _strdate_s, _wstrdate_s
-Copy the current system date to a buffer. These are versions of [_strdate, _wstrdate](strdate-wstrdate.md) with security enhancements as described in [Security Features in the CRT](../../c-runtime-library/security-features-in-the-crt.md).
+Copy the current system date to a buffer. These functions are versions of [_strdate, _wstrdate](strdate-wstrdate.md) with security enhancements as described in [Security Features in the CRT](../../c-runtime-library/security-features-in-the-crt.md).
## Syntax
```C
errno_t _strdate_s(
char *buffer,
- size_t numberOfElements
+ size_t size
);
errno_t _wstrdate_s(
wchar_t *buffer,
- size_t numberOfElements
+ size_t size
);
template
errno_t _strdate_s(
@@ -35,42 +37,44 @@ errno_t _wstrdate_s(
### Parameters
-*buffer*
-A pointer to a buffer which will be filled in with the formatted date string.
+*buffer*\
+A pointer to a buffer to put the formatted date string.
-*numberOfElements*
-Size of the buffer.
+*size*\
+Size of the buffer in character units.
-## Return Value
+## Return value
-Zero if successful. The return value is an error code if there is a failure. Error codes are defined in ERRNO.H; see table below for the exact errors generated by this function. For more information on error codes, see [errno](../../c-runtime-library/errno-constants.md).
+Zero if successful. The return value is an error code if there's a failure. Error codes are defined in ERRNO.H; see table below for the exact errors generated by this function. For more information on error codes, see [errno](../../c-runtime-library/errno-constants.md).
-## Error Conditions
+## Error conditions
-|*buffer*|*numberOfElements*|Return|Contents of *buffer*|
+|*buffer*|*size*|Return|Contents of *buffer*|
|--------------|------------------------|------------|--------------------------|
|**NULL**|(any)|**EINVAL**|Not modified|
|Not **NULL** (pointing to valid buffer)|0|**EINVAL**|Not modified|
-|Not **NULL** (pointing to valid buffer)|0 < *numberOfElements* < 9|**EINVAL**|Empty string|
-|Not **NULL** (pointing to valid buffer)|*numberOfElements* >= 9|0|Current date formatted as specified in the remarks|
+|Not **NULL** (pointing to valid buffer)|0 < *size* < 9|**EINVAL**|Empty string|
+|Not **NULL** (pointing to valid buffer)|*size* >= 9|0|Current date formatted as specified in the remarks|
-## Security Issues
+## Security issues
-Passing in an invalid non **NULL** value for the buffer will result in an access violation if the *numberOfElements* parameter is greater than 9.
+Passing in an invalid, non-NULL value for *buffer* results in an access violation if the *size* parameter is greater than nine.
-Passing values for size that is greater than the actual size of the *buffer* will result in buffer overrun.
+Passing a value for *size* greater than the actual size of *buffer* results in a buffer overrun.
## Remarks
-These functions provide more secure versions of **_strdate** and **_wstrdate**. The **_strdate_s** function copies the current system date to the buffer pointed to by *buffer*, formatted **mm**/**dd**/**yy**, where **mm** is two digits representing the month, **dd** is two digits representing the day, and **yy** is the last two digits of the year. For example, the string **12/05/99** represents December 5, 1999. The buffer must be at least 9 characters long.
+These functions provide more secure versions of **_strdate** and **_wstrdate**. The **_strdate_s** function copies the current system date to the buffer pointed to by *buffer*. It's formatted `mm/dd/yy`, where `mm` is the two-digit month, `dd` is the two-digit day, and `yy` is the last two digits of the year. For example, the string `12/05/99` represents December 5, 1999. The buffer must be at least nine characters long.
**_wstrdate_s** is a wide-character version of **_strdate_s**; the argument and return value of **_wstrdate_s** are wide-character strings. These functions behave identically otherwise.
-If *buffer* is a **NULL** pointer, or if *numberOfElements* is less than 9 characters, the invalid parameter handler is invoked, as described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, these functions return -1 and set **errno** to **EINVAL** if the buffer is **NULL** or if *numberOfElements* is less than or equal to 0, or set **errno** to **ERANGE** if *numberOfElements* is less than 9.
+When *buffer* is a **NULL** pointer, or *size* is fewer than nine characters, the invalid parameter handler is invoked. It's described in [Parameter Validation](../../c-runtime-library/parameter-validation.md). If execution is allowed to continue, these functions return -1. They set **errno** to **EINVAL** if the buffer is **NULL** or if *size* is less than or equal to 0. Or, they set **errno** to **ERANGE** if *size* is less than 9.
-In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
+In C++, use of these functions is simplified by template overloads. The overloads can infer buffer length automatically, which eliminates the need to specify a *size* argument. And, they can automatically replace non-secure functions with their newer, more secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-### Generic-Text Routine Mapping:
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+
+### Generic-text routine mapping:
|TCHAR.H routine|_UNICODE & _MBCS not defined|_MBCS defined|_UNICODE defined|
|---------------------|------------------------------------|--------------------|-----------------------|
@@ -90,11 +94,11 @@ See the example for [time](time-time32-time64.md).
## See also
-[Time Management](../../c-runtime-library/time-management.md)
-[asctime_s, _wasctime_s](asctime-s-wasctime-s.md)
-[ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s](ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md)
-[gmtime_s, _gmtime32_s, _gmtime64_s](gmtime-s-gmtime32-s-gmtime64-s.md)
-[localtime_s, _localtime32_s, _localtime64_s](localtime-s-localtime32-s-localtime64-s.md)
-[mktime, _mktime32, _mktime64](mktime-mktime32-mktime64.md)
-[time, _time32, _time64](time-time32-time64.md)
-[_tzset](tzset.md)
+[Time Management](../../c-runtime-library/time-management.md)\
+[asctime_s, _wasctime_s](asctime-s-wasctime-s.md)\
+[ctime_s, _ctime32_s, _ctime64_s, _wctime_s, _wctime32_s, _wctime64_s](ctime-s-ctime32-s-ctime64-s-wctime-s-wctime32-s-wctime64-s.md)\
+[gmtime_s, _gmtime32_s, _gmtime64_s](gmtime-s-gmtime32-s-gmtime64-s.md)\
+[localtime_s, _localtime32_s, _localtime64_s](localtime-s-localtime32-s-localtime64-s.md)\
+[mktime, _mktime32, _mktime64](mktime-mktime32-mktime64.md)\
+[time, _time32, _time64](time-time32-time64.md)\
+[_tzset](tzset.md)
diff --git a/docs/c-runtime-library/reference/strdate-wstrdate.md b/docs/c-runtime-library/reference/strdate-wstrdate.md
index b4e06a65b9..1b2e8fda4a 100644
--- a/docs/c-runtime-library/reference/strdate-wstrdate.md
+++ b/docs/c-runtime-library/reference/strdate-wstrdate.md
@@ -1,9 +1,10 @@
---
title: "_strdate, _wstrdate"
ms.date: "11/04/2016"
-apiname: ["_strdate", "_wstrdate"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strdate", "_wstrdate"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tstrdate", "wstrdate", "_wstrdate", "_strdate", "strdate"]
helpviewer_keywords: ["strdate function", "dates, copying", "tstrdate function", "_wstrdate function", "wstrdate function", "_strdate function", "_tstrdate function", "copying dates"]
ms.assetid: de8e4097-58f8-42ba-9dcd-cb4d9a9f1696
diff --git a/docs/c-runtime-library/reference/strdec-wcsdec-mbsdec-mbsdec-l.md b/docs/c-runtime-library/reference/strdec-wcsdec-mbsdec-mbsdec-l.md
index 752d1223fc..c7415dc910 100644
--- a/docs/c-runtime-library/reference/strdec-wcsdec-mbsdec-mbsdec-l.md
+++ b/docs/c-runtime-library/reference/strdec-wcsdec-mbsdec-mbsdec-l.md
@@ -1,9 +1,10 @@
---
title: "_strdec, _wcsdec, _mbsdec, _mbsdec_l"
ms.date: "11/04/2016"
-apiname: ["_wcsdec", "_strdec", "_mbsdec", "_mbsdec_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wcsdec", "_strdec", "_mbsdec", "_mbsdec_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strdec", "mbsdec_l", "strdec", "_mbsdec", "_mbsdec_l", "mbsdec", "wcsdec", "_wcsdec"]
helpviewer_keywords: ["mbsdec_l function", "mbsdec function", "tcsdec function", "_tcsdec function", "_strdec function", "_wcsdec function", "_mbsdec_l function", "strdec function", "wcsdec function", "_mbsdec function"]
ms.assetid: ae37c223-800f-48a9-ae8e-38c8d20af2dd
diff --git a/docs/c-runtime-library/reference/strdup-dbg-wcsdup-dbg.md b/docs/c-runtime-library/reference/strdup-dbg-wcsdup-dbg.md
index f5f9cb3749..f1844c3b9c 100644
--- a/docs/c-runtime-library/reference/strdup-dbg-wcsdup-dbg.md
+++ b/docs/c-runtime-library/reference/strdup-dbg-wcsdup-dbg.md
@@ -1,9 +1,10 @@
---
title: "_strdup_dbg, _wcsdup_dbg"
ms.date: "11/04/2016"
-apiname: ["_strdup_dbg", "_wcsdup_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_strdup_dbg", "_wcsdup_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wcsdup_dbg", "strdup_dbg", "_strdup_dbg", "wcsdup_dbg"]
helpviewer_keywords: ["_wcsdup_dbg function", "stdup_dbg function", "copying strings", "duplicating strings", "strings [C++], copying", "strings [C++], duplicating", "_strdup_dbg function", "wcsdup_dbg function"]
ms.assetid: 681db70c-d124-43ab-b83e-5eeea9035097
diff --git a/docs/c-runtime-library/reference/strdup-wcsdup-mbsdup.md b/docs/c-runtime-library/reference/strdup-wcsdup-mbsdup.md
index da8627a44e..3b73dc434f 100644
--- a/docs/c-runtime-library/reference/strdup-wcsdup-mbsdup.md
+++ b/docs/c-runtime-library/reference/strdup-wcsdup-mbsdup.md
@@ -1,9 +1,10 @@
---
title: "_strdup, _wcsdup, _mbsdup"
ms.date: "11/04/2016"
-apiname: ["_strdup", "_mbsdup", "_wcsdup"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strdup", "_mbsdup", "_wcsdup"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcsdup", "mbsdup", "_mbsdup", "_strdup", "_ftcsdup", "_wcsdup"]
helpviewer_keywords: ["wcsdup function", "ftcsdup function", "_ftcsdup function", "mbsdup function", "strdup function", "_strdup function", "_wcsdup function", "copying strings", "duplicating strings", "strings [C++], copying", "_mbsdup function", "strings [C++], duplicating", "tcsdup function", "_tcsdup function"]
ms.assetid: 8604f8bb-95e9-45d3-93ef-20397ebf247a
diff --git a/docs/c-runtime-library/reference/strdup-wcsdup.md b/docs/c-runtime-library/reference/strdup-wcsdup.md
index 26471a5116..f19af92332 100644
--- a/docs/c-runtime-library/reference/strdup-wcsdup.md
+++ b/docs/c-runtime-library/reference/strdup-wcsdup.md
@@ -1,13 +1,16 @@
---
title: "strdup, wcsdup"
-ms.date: "11/04/2016"
-apiname: ["wcsdup", "strdup"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["wcsdup", "strdup"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsdup", "strdup"]
helpviewer_keywords: ["wcsdup function", "strdup function"]
ms.assetid: c9ac0935-b525-4e95-8a64-396fc7e34ee9
---
# strdup, wcsdup
-These POSIX functions are deprecated. Use the ISO C++ conformant [_strdup, _wcsdup, _mbsdup](strdup-wcsdup-mbsdup.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function names `strdup` and `wcsdup` are deprecated aliases for the [_strdup and _wcsdup](strdup-wcsdup-mbsdup.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_strdup and _wcsdup](strdup-wcsdup-mbsdup.md) instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/strerror-s-strerror-s-wcserror-s-wcserror-s.md b/docs/c-runtime-library/reference/strerror-s-strerror-s-wcserror-s-wcserror-s.md
index 76b5a6d1a8..298446f8c0 100644
--- a/docs/c-runtime-library/reference/strerror-s-strerror-s-wcserror-s-wcserror-s.md
+++ b/docs/c-runtime-library/reference/strerror-s-strerror-s-wcserror-s-wcserror-s.md
@@ -1,9 +1,10 @@
---
title: "strerror_s, _strerror_s, _wcserror_s, __wcserror_s"
ms.date: "11/04/2016"
-apiname: ["__wcserror_s", "_strerror_s", "_wcserror_s", "strerror_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["__wcserror_s", "_strerror_s", "_wcserror_s", "strerror_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcserror_s", "__wcserror_s", "_tcserror_s", "_wcserror_s", "tcserror_s", "strerror_s", "_strerror_s"]
helpviewer_keywords: ["__wcserror_s function", "error messages, printing", "tcserror_s function", "printing error messages", "strerror_s function", "_wcserror_s function", "_tcserror_s function", "_strerror_s function", "wcserror_s function", "error messages, getting"]
ms.assetid: 9e5b15a0-efe1-4586-b7e3-e1d7c31a03d6
@@ -108,7 +109,7 @@ These functions validate their parameters. If buffer is **NULL** or if the size
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically, eliminating the need to specify a size argument. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strerror-strerror-wcserror-wcserror.md b/docs/c-runtime-library/reference/strerror-strerror-wcserror-wcserror.md
index dbe7a18f25..0955d13c3c 100644
--- a/docs/c-runtime-library/reference/strerror-strerror-wcserror-wcserror.md
+++ b/docs/c-runtime-library/reference/strerror-strerror-wcserror-wcserror.md
@@ -1,9 +1,11 @@
---
title: "strerror, _strerror, _wcserror, __wcserror"
-ms.date: "11/04/2016"
-apiname: ["strerror", "_strerror", "_wcserror", "__wcserror"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+description: "Describes the Microsoft C Runtime Library (CRT) functions strerror, _strerror, _wcserror, and __wcserror."
+ms.date: "01/07/2020"
+api_name: ["strerror", "_strerror", "_wcserror", "__wcserror"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__sys_errlist", "wcserror", "_strerror", "__wcserror", "strerror", "__sys_nerr", "_tcserror", "_wcserror", "tcserror"]
helpviewer_keywords: ["strerror function", "_strerror function", "__sys_errlist", "wcserror function", "error messages, printing", "__sys_nerr", "tcserror function", "printing error messages", "_wcserror function", "_tcserror function", "__wcserror function", "error messages, getting"]
ms.assetid: 27b72255-f627-43c0-8836-bcda8b003e14
@@ -15,52 +17,51 @@ Gets a system error message string (**strerror**, **_wcserror**) or formats a us
## Syntax
```C
-char *strerror(
- int errnum
-);
-char *_strerror(
- const char *strErrMsg
-);
+char * strerror(
+ int errnum );
+
+char * _strerror(
+ const char *strErrMsg );
+
wchar_t * _wcserror(
- int errnum
-);
+ int errnum );
+
wchar_t * __wcserror(
- const wchar_t *strErrMsg
-);
+ const wchar_t *strErrMsg );
```
### Parameters
-*errnum*
+*errnum*\
Error number.
-*strErrMsg*
+*strErrMsg*\
User-supplied message.
-## Return Value
+## Return value
-All of these functions return a pointer to the error-message string. Subsequent calls can overwrite the string.
+All of these functions return a pointer to an error-message string, in a thread-local storage buffer owned by the runtime. Later calls on the same thread can overwrite this string.
## Remarks
-The **strerror** function maps *errnum* to an error-message string and returns a pointer to the string. Neither **strerror** nor **_strerror** actually prints the message: For that, you have to call an output function such as [fprintf](fprintf-fprintf-l-fwprintf-fwprintf-l.md):
+The **strerror** function maps *errnum* to an error-message string and returns a pointer to the string. The **strerror** and **_strerror** functions don't actually print the message. To print, call an output function such as [fprintf](fprintf-fprintf-l-fwprintf-fwprintf-l.md):
```C
-if (( _access( "datafile",2 )) == -1 )
+if (( _access( "datafile", 2 )) == -1 )
fprintf( stderr, _strerror(NULL) );
```
-If *strErrMsg* is passed as **NULL**, **_strerror** returns a pointer to a string that contains the system error message for the last library call that produced an error. The error-message string is terminated by the newline character ('\n'). If *strErrMsg* is not equal to **NULL**, then **_strerror** returns a pointer to a string that contains (in order) your string message, a colon, a space, the system error message for the last library call that produces an error, and a newline character. Your string message can be, at most, 94 characters long.
+If *strErrMsg* is passed as **NULL**, **_strerror** returns a pointer to a string. It contains the system error message for the last library call that produced an error. The error-message string is terminated by the newline character ('\n'). When *strErrMsg* isn't **NULL**, the string contains, in order: your *strErrMsg* string, a colon, a space, the system error message, and a newline character. Your string message can be, at most, 94 characters long, in either narrow (**_strerror**) or wide (**__wcserror**) characters.
-The actual error number for **_strerror** is stored in the variable [errno](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md). To produce accurate results, call **_strerror** immediately after a library routine returns with an error. Otherwise, subsequent calls to **strerror** or **_strerror** can overwrite the **errno** value.
+The actual error number for **_strerror** is stored in the variable [errno](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md). To produce accurate results, call **_strerror** immediately after a library routine returns an error. Otherwise, later calls to library routines may overwrite the **errno** value.
**_wcserror** and **__wcserror** are wide-character versions of **strerror** and **_strerror**, respectively.
-**_strerror**, **_wcserror**, and **__wcserror** are not part of the ANSI definition; they are Microsoft extensions and we recommend that you do not use them where you want portable code. For ANSI compatibility, use **strerror** instead.
+**_strerror**, **_wcserror**, and **__wcserror** are Microsoft-specific, not part of the Standard C library. We don't recommend you use them where you want portable code. For Standard C compatibility, use **strerror** instead.
To get error strings, we recommend **strerror** or **_wcserror** instead of the deprecated macros [_sys_errlist](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md) and [_sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md) and the deprecated internal functions **__sys_errlist** and **__sys_nerr**.
-### Generic-Text Routine Mappings
+### Generic-text routine mappings
|TCHAR.H routine|_UNICODE & _MBCS not defined|_MBCS defined|_UNICODE defined|
|---------------------|------------------------------------|--------------------|-----------------------|
@@ -82,7 +83,7 @@ See the example for [perror](perror-wperror.md).
## See also
-[String Manipulation](../../c-runtime-library/string-manipulation-crt.md)
-[clearerr](clearerr.md)
-[ferror](ferror.md)
-[perror, _wperror](perror-wperror.md)
+[String manipulation](../../c-runtime-library/string-manipulation-crt.md)\
+[clearerr](clearerr.md)\
+[ferror](ferror.md)\
+[perror, _wperror](perror-wperror.md)
diff --git a/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md b/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md
index 785810d222..0d3e8735e0 100644
--- a/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md
+++ b/docs/c-runtime-library/reference/strftime-wcsftime-strftime-l-wcsftime-l.md
@@ -1,9 +1,10 @@
---
title: "strftime, wcsftime, _strftime_l, _wcsftime_l"
ms.date: "03/22/2018"
-apiname: ["strftime", "_wcsftime_l", "_strftime_l", "wcsftime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["strftime", "_wcsftime_l", "_strftime_l", "wcsftime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcsftime", "strftime", "wcsftime", "_strftime_l", "_wcsftime_l"]
helpviewer_keywords: ["_strftime_l function", "strftime function", "tcsftime function", "_wcsftime_l function", "wcsftime function", "_tcsftime function", "time strings"]
ms.assetid: 6330ff20-4729-4c4a-82af-932915d893ea
diff --git a/docs/c-runtime-library/reference/stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md b/docs/c-runtime-library/reference/stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md
index 027790aad6..0f36979fbb 100644
--- a/docs/c-runtime-library/reference/stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md
+++ b/docs/c-runtime-library/reference/stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md
@@ -1,9 +1,10 @@
---
title: "_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l"
ms.date: "11/04/2016"
-apiname: ["_stricmp_l", "_mbsicmp", "_wcsicmp", "_mbsicmp_l", "_stricmp", "_wcsicmp_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_stricmp_l", "_mbsicmp", "_wcsicmp", "_mbsicmp_l", "_stricmp", "_wcsicmp_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftcsicmp", "_stricmp", "wcsicmp_l", "_wcsicmp", "_tcsicmp", "_strcmpi", "stricmp_l", "_mbsicmp", "_fstricmp", "mbsicmp_l", "mbsicmp"]
helpviewer_keywords: ["_wcsicmp function", "_stricmp_l function", "fstricmp function", "_tcsicmp function", "ftcsicmp function", "string comparison [C++], lowercase", "_wcsicmp_l function", "_fstricmp function", "strings [C++], comparing", "mbsicmp function", "_ftcsicmp function", "_mbsicmp_l function", "wcsicmp_l function", "_stricmp function", "_mbsicmp function", "tcsicmp function", "stricmp_l function", "mbsicmp_l function", "_strcmpi function"]
ms.assetid: 0e1ee515-0d75-435a-a445-8875d4669b50
diff --git a/docs/c-runtime-library/reference/stricmp-wcsicmp.md b/docs/c-runtime-library/reference/stricmp-wcsicmp.md
index c7ee6d6886..853e35486e 100644
--- a/docs/c-runtime-library/reference/stricmp-wcsicmp.md
+++ b/docs/c-runtime-library/reference/stricmp-wcsicmp.md
@@ -1,13 +1,16 @@
---
title: "stricmp, wcsicmp"
-ms.date: "11/04/2016"
-apiname: ["stricmp", "wcsicmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["stricmp", "wcsicmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["stricmp", "wcsicmp"]
helpviewer_keywords: ["stricmp function", "wcsicmp function"]
ms.assetid: 2e3c6703-2635-4961-a253-e2c4c5029ed8
---
# stricmp, wcsicmp
-These POSIX functions are deprecated. Use the ISO C++ conformant [_stricmp, _wcsicmp, _mbsicmp, _stricmp_l, _wcsicmp_l, _mbsicmp_l](stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function names `stricmp` and `wcsicmp` are deprecated aliases for the [_stricmp and _wcsicmp](stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_stricmp or _wcsicmp](stricmp-wcsicmp-mbsicmp-stricmp-l-wcsicmp-l-mbsicmp-l.md) instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md b/docs/c-runtime-library/reference/stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md
index 62df57a796..fd804aca86 100644
--- a/docs/c-runtime-library/reference/stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md
+++ b/docs/c-runtime-library/reference/stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md
@@ -1,9 +1,10 @@
---
title: "_stricoll, _wcsicoll, _mbsicoll, _stricoll_l, _wcsicoll_l, _mbsicoll_l"
ms.date: "11/04/2016"
-apiname: ["_mbsicoll_l", "_stricoll_l", "_mbsicoll", "_wcsicoll_l", "_wcsicoll", "_stricoll"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsicoll_l", "_stricoll_l", "_mbsicoll", "_wcsicoll_l", "_wcsicoll", "_stricoll"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["stricoll", "_stricoll", "_wcsicoll", "mbsicoll_l", "_mbsicoll", "_ftcsicoll", "wcsicoll_l", "_tcsicoll", "mbsicoll", "stricoll_l"]
helpviewer_keywords: ["code pages, using for string comparisons", "_ftcsicoll function", "_mbsicoll_l function", "_mbsicoll function", "mbsicoll function", "stricoll function", "tcsicoll function", "string comparison [C++], culture-specific", "_tcsicoll function", "_stricoll function", "_stricoll_l function", "_wcsicoll function", "mbsicoll_l function", "stricoll_l function", "strings [C++], comparing by code page", "ftcsicoll function"]
ms.assetid: 8ec93016-5a49-49d2-930f-721566661d82
diff --git a/docs/c-runtime-library/reference/strinc-wcsinc-mbsinc-mbsinc-l.md b/docs/c-runtime-library/reference/strinc-wcsinc-mbsinc-mbsinc-l.md
index 1b4aac2f03..44064609e2 100644
--- a/docs/c-runtime-library/reference/strinc-wcsinc-mbsinc-mbsinc-l.md
+++ b/docs/c-runtime-library/reference/strinc-wcsinc-mbsinc-mbsinc-l.md
@@ -1,9 +1,10 @@
---
title: "_strinc, _wcsinc, _mbsinc, _mbsinc_l"
ms.date: "11/04/2016"
-apiname: ["_mbsinc", "_wcsinc", "_mbsinc_l", "_strinc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsinc", "_wcsinc", "_mbsinc_l", "_strinc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsinc_l", "_strinc", "strinc", "_mbsinc", "_wcsinc", "wcsinc", "mbsinc", "_mbsinc_l"]
helpviewer_keywords: ["_mbsinc function", "wcsinc function", "mbsinc_l function", "_strinc function", "strinc function", "_mbsinc_l function", "mbsinc function", "_wcsinc function", "_tcsinc function", "tcsinc function"]
ms.assetid: 54685943-8e2c-45e9-a559-2d94930dc6b4
diff --git a/docs/c-runtime-library/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md b/docs/c-runtime-library/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md
index 13a6230bf8..00746952f5 100644
--- a/docs/c-runtime-library/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md
+++ b/docs/c-runtime-library/reference/strlen-wcslen-mbslen-mbslen-l-mbstrlen-mbstrlen-l.md
@@ -1,9 +1,10 @@
---
title: "strlen, wcslen, _mbslen, _mbslen_l, _mbstrlen, _mbstrlen_l"
ms.date: "11/04/2016"
-apiname: ["_mbslen", "_mbslen_l", "_mbstrlen", "wcslen", "_mbstrlen_l", "strlen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_mbslen", "_mbslen_l", "_mbstrlen", "wcslen", "_mbstrlen_l", "strlen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbstrlen", "wcslen", "_tcslen", "_ftcslen", "strlen", "_mbslen"]
helpviewer_keywords: ["wcslen function", "string length, getting", "ftcslen function", "lengths, strings", "mbstrlen_l function", "_mbslen_l function", "_tcslen function", "mbslen_l function", "mbslen function", "_mbstrlen function", "strings [C++], getting length", "mbstrlen function", "_mbstrlen_l function", "_ftcslen function", "tcslen function", "strlen function", "_mbslen function"]
ms.assetid: 16462f2a-1e0f-4eb3-be55-bf1c83f374c2
diff --git a/docs/c-runtime-library/reference/strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md b/docs/c-runtime-library/reference/strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md
index 6a9ea0ab6f..703c9b2e01 100644
--- a/docs/c-runtime-library/reference/strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md
+++ b/docs/c-runtime-library/reference/strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md
@@ -1,9 +1,10 @@
---
title: "_strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l"
ms.date: "11/04/2016"
-apiname: ["_strlwr_s_l", "_mbslwr_s_l", "_mbslwr_s", "_wcslwr_s", "_strlwr_s", "_wcslwr_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strlwr_s_l", "_mbslwr_s_l", "_mbslwr_s", "_wcslwr_s", "_strlwr_s", "_wcslwr_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strlwr_s_l", "_strlwr_s", "mbslwr_s_l", "strlwr_s_l", "_wcslwr_s", "strlwr_s", "mbslwr_s", "_wcslwr_s_l", "wcslwr_s_l", "_tcslwr_s", "_tcslwr_s_l", "_mbslwr_s_l", "wcslwr_s", "_mbslwr_s"]
helpviewer_keywords: ["_tcslwr_s function", "wcslwr_s function", "_mbslwr_s function", "_wcslwr_s function", "strlwr_s_l function", "mbslwr_s_l function", "_strlwr_s function", "string conversion [C++], case", "strlwr_s function", "wcslwr_s_l function", "_tcslwr_s_l function", "mbslwr_s function", "strings [C++], case", "_wcslwr_s_l function", "converting case, CRT functions", "_strlwr_s_l function", "_mbslwr_s_l function", "case, converting", "tcslwr_s function", "tcslwr_s_l function", "strings [C++], converting case"]
ms.assetid: 4883d31b-bdac-4049-83a1-91dfdeceee79
@@ -99,7 +100,7 @@ The output value is affected by the setting of the **LC_CTYPE** category setting
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md b/docs/c-runtime-library/reference/strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md
index 098f4ae6be..d23d69311c 100644
--- a/docs/c-runtime-library/reference/strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md
+++ b/docs/c-runtime-library/reference/strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md
@@ -1,9 +1,10 @@
---
title: "_strlwr, _wcslwr, _mbslwr, _strlwr_l, _wcslwr_l, _mbslwr_l"
ms.date: "11/04/2016"
-apiname: ["_strlwr_l", "_strlwr", "_wcslwr_l", "_mbslwr_l", "_wcslwr", "_mbslwr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_strlwr_l", "_strlwr", "_wcslwr_l", "_mbslwr_l", "_wcslwr", "_mbslwr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strlwr", "wcslwr_l", "_ftcslwr", "mbslwr_l", "_mbslwr", "_wcslwr", "strlwr_l", "_tcslwr", "mbslwr"]
helpviewer_keywords: ["tcslwr function", "_strlwr function", "converting case", "string conversion [C++], case", "mbslwr function", "_strlwr_l function", "strlwr_l function", "_wcslwr function", "ftcslwr function", "strings [C++], case", "_tcslwr_l function", "_wcslwr_l function", "wcslwr_l function", "mbslwr_l function", "tcslwr_l function", "_tcslwr function", "converting case, CRT functions", "_ftcslwr function", "_mbslwr function", "case, converting", "strings [C++], converting case", "_mbslwr_l function"]
ms.assetid: d279181d-2e7d-401f-ab44-6e7c2786a046
diff --git a/docs/c-runtime-library/reference/strlwr-wcslwr.md b/docs/c-runtime-library/reference/strlwr-wcslwr.md
index 28b5d16566..248f6b1385 100644
--- a/docs/c-runtime-library/reference/strlwr-wcslwr.md
+++ b/docs/c-runtime-library/reference/strlwr-wcslwr.md
@@ -1,13 +1,16 @@
---
title: "strlwr, wcslwr"
-ms.date: "11/04/2016"
-apiname: ["strlwr", "wcslwr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["strlwr", "wcslwr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcslwr", "strlwr"]
helpviewer_keywords: ["strlwr function", "wcslwr function"]
ms.assetid: b9274824-4365-4674-b656-823c89653656
---
# strlwr, wcslwr
-These POSIX functions are deprecated. Use the ISO C++ conformant [_strlwr, _wcslwr, _mbslwr, _strlwr_l, _wcslwr_l, _mbslwr_l](strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md) or security-enhanced [_strlwr_s, _strlwr_s_l, _mbslwr_s, _mbslwr_s_l, _wcslwr_s, _wcslwr_s_l](strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function names `strlwr` and `wcslwr` are deprecated aliases for the [_strlwr and _wcslwr](strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_strlwr or _wcslwr](strlwr-wcslwr-mbslwr-strlwr-l-wcslwr-l-mbslwr-l.md) or the security-enhanced [_strlwr_s and _wcslwr_s](strlwr-s-strlwr-s-l-mbslwr-s-mbslwr-s-l-wcslwr-s-wcslwr-s-l.md) functions instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/strncat-s-strncat-s-l-wcsncat-s-wcsncat-s-l-mbsncat-s-mbsncat-s-l.md b/docs/c-runtime-library/reference/strncat-s-strncat-s-l-wcsncat-s-wcsncat-s-l-mbsncat-s-mbsncat-s-l.md
index 0be7261fd6..4ef3de1124 100644
--- a/docs/c-runtime-library/reference/strncat-s-strncat-s-l-wcsncat-s-wcsncat-s-l-mbsncat-s-mbsncat-s-l.md
+++ b/docs/c-runtime-library/reference/strncat-s-strncat-s-l-wcsncat-s-wcsncat-s-l-mbsncat-s-mbsncat-s-l.md
@@ -1,9 +1,10 @@
---
title: "strncat_s, _strncat_s_l, wcsncat_s, _wcsncat_s_l, _mbsncat_s, _mbsncat_s_l"
ms.date: "11/04/2016"
-apiname: ["_wcsncat_s_l", "wcsncat_s", "_mbsncat_s_l", "_mbsncat_s", "strncat_s", "_strncat_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wcsncat_s_l", "wcsncat_s", "_mbsncat_s_l", "_mbsncat_s", "strncat_s", "_strncat_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strncat_s_l", "_mbsncat_s_l", "_tcsncat_s", "wcsncat_s", "wcsncat_s_l", "strncat_s", "_mbsncat_s", "_tcsncat_s_l"]
helpviewer_keywords: ["concatenating strings", "_mbsncat_s function", "mbsncat_s_l function", "_tcsncat_s function", "_mbsncat_s_l function", "strncat_s function", "strings [C++], appending", "strncat_s_l function", "string concatenation [C++]", "_tcsncat_s_l function", "wcsncat_s function", "appending strings", "wcsncat_s_l function", "mbsncat_s function"]
ms.assetid: de77eca2-4d9c-4e66-abf2-a95fefc21e5a
@@ -165,7 +166,7 @@ The output value is affected by the setting of the **LC_CTYPE** category setting
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strncat-strncat-l-wcsncat-wcsncat-l-mbsncat-mbsncat-l.md b/docs/c-runtime-library/reference/strncat-strncat-l-wcsncat-wcsncat-l-mbsncat-mbsncat-l.md
index d98a50bad4..b40ddcfde8 100644
--- a/docs/c-runtime-library/reference/strncat-strncat-l-wcsncat-wcsncat-l-mbsncat-mbsncat-l.md
+++ b/docs/c-runtime-library/reference/strncat-strncat-l-wcsncat-wcsncat-l-mbsncat-mbsncat-l.md
@@ -1,9 +1,10 @@
---
title: "strncat, _strncat_l, wcsncat, _wcsncat_l, _mbsncat, _mbsncat_l"
ms.date: "11/04/2016"
-apiname: ["strncat", "_strncat_l", "_mbsncat", "_mbsncat_l", "wcsncat", "wcsncat_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["strncat", "_strncat_l", "_mbsncat", "_mbsncat_l", "wcsncat", "wcsncat_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcsncat_l", "_wcsncat_l", "_tcsnccat_l", "_mbsncat", "_strncat_l", "strncat", "_tcsnccat", "_mbsncat_l", "_ftcsncat", "wcsncat", "_tcsncat"]
helpviewer_keywords: ["concatenating strings", "ftcsncat function", "tcsncat_l function", "_tcsnccat_l function", "_tcsncat function", "strncat function", "_ftcsncat function", "mbsncat function", "mbsncat_l function", "strings [C++], appending", "wcsncat function", "tcsnccat function", "tcsnccat_l function", "_tcsnccat function", "string concatenation [C++]", "appending strings", "characters [C++], appending to strings", "_mbsncat function", "_tcsncat_l function", "_mbsncat_l function", "tcsncat function"]
ms.assetid: de67363b-68c6-4ca5-91e3-478610ad8159
diff --git a/docs/c-runtime-library/reference/strncmp-wcsncmp-mbsncmp-mbsncmp-l.md b/docs/c-runtime-library/reference/strncmp-wcsncmp-mbsncmp-mbsncmp-l.md
index d7b8ebbf70..4ce181f0cc 100644
--- a/docs/c-runtime-library/reference/strncmp-wcsncmp-mbsncmp-mbsncmp-l.md
+++ b/docs/c-runtime-library/reference/strncmp-wcsncmp-mbsncmp-mbsncmp-l.md
@@ -1,9 +1,10 @@
---
title: "strncmp, wcsncmp, _mbsncmp, _mbsncmp_l"
ms.date: "11/04/2016"
-apiname: ["strncmp", "_mbsncmp", "wcsncmp", "_mbsncmp_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["strncmp", "_mbsncmp", "wcsncmp", "_mbsncmp_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftcsnccmp", "_ftcsncmp", "_tcsncmp", "_tcsnccmp", "strncmp", "_mbsncmp", "wcsncmp"]
helpviewer_keywords: ["_tcsnccmp function", "ftcsncmp function", "wcsncmp function", "_ftcsncmp function", "_mbsncmp function", "tcsncmp function", "mbsncmp function", "_mbsncmp_l function", "mbsncmp_l function", "strncmp function", "strings [C++], comparing characters of", "string comparison [C++], strncmp function", "_tcsncmp function", "tcsnccmp function", "ftcsnccmp function", "characters [C++], comparing", "_ftcsnccmp function"]
ms.assetid: 2fdbf4e6-77da-4b59-9086-488f6066b8af
diff --git a/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md b/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md
index 7bb04b9efa..ab4140196c 100644
--- a/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md
+++ b/docs/c-runtime-library/reference/strncnt-wcsncnt-mbsnbcnt-mbsnbcnt-l-mbsnccnt-mbsnccnt-l.md
@@ -1,9 +1,10 @@
---
title: "_strncnt, _wcsncnt, _mbsnbcnt, _mbsnbcnt_l, _mbsnccnt, _mbsnccnt_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnbcnt_l", "_mbsnccnt", "_wcsncnt", "_strncnt", "_mbsnccnt_l", "_mbsnbcnt"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnbcnt_l", "_mbsnccnt", "_wcsncnt", "_strncnt", "_mbsnccnt_l", "_mbsnbcnt"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbsnbcnt", "wcsncnt", "_tcsnbcnt", "_mbsnccnt", "_ftcsnbcnt", "mbsnbcnt", "strncnt", "mbsnbcnt_l", "mbsnccnt_l", "mbsnccnt", "_strncnt", "_wcsncnt"]
helpviewer_keywords: ["_strncnt function", "_mbsnbcnt function", "_mbsnbcnt_l function", "_mbsnccnt_l function", "mbsnbcnt_l function", "mbsnbcnt function", "tcsnbcnt function", "mbsnccnt_l function", "strncnt function", "_tcsnbcnt function", "mbsnccnt function", "wcsncnt function", "_mbsnccnt function", "_wcsncnt function"]
ms.assetid: 2a022e9e-a307-4acb-a66b-e56e5357f848
diff --git a/docs/c-runtime-library/reference/strncoll-wcsncoll-mbsncoll-strncoll-l-wcsncoll-l-mbsncoll-l.md b/docs/c-runtime-library/reference/strncoll-wcsncoll-mbsncoll-strncoll-l-wcsncoll-l-mbsncoll-l.md
index 4644775072..e7f6da6bf2 100644
--- a/docs/c-runtime-library/reference/strncoll-wcsncoll-mbsncoll-strncoll-l-wcsncoll-l-mbsncoll-l.md
+++ b/docs/c-runtime-library/reference/strncoll-wcsncoll-mbsncoll-strncoll-l-wcsncoll-l-mbsncoll-l.md
@@ -1,9 +1,10 @@
---
title: "_strncoll, _wcsncoll, _mbsncoll, _strncoll_l, _wcsncoll_l, _mbsncoll_l"
ms.date: "11/04/2016"
-apiname: ["_strncoll", "_mbsncoll_l", "_wcsncoll", "_wcsncoll_l", "_mbsncoll", "_strncoll_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strncoll", "_mbsncoll_l", "_wcsncoll", "_wcsncoll_l", "_mbsncoll", "_strncoll_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsncoll_l", "strncoll", "_wcsncoll", "_tcsnccoll", "_ftcsnccoll", "wcsncoll", "_mbsncoll", "wcsncoll_l", "strncoll_l", "_ftcsncoll", "_strncoll", "_tcsncoll", "mbsncoll"]
helpviewer_keywords: ["_strncoll_l function", "code pages, using for string comparisons", "_strncoll function", "_mbsncoll function", "ftcsncoll function", "strncoll function", "_ftcsncoll function", "strncoll_l function", "wcsncoll function", "mbsncoll function", "_tcsncoll function", "_tcsnccoll function", "wcsncoll_l function", "tcsnccoll function", "mbsncoll_l function", "_mbsncoll_l function", "tcsncoll function", "_wcsncoll function", "strings [C++], comparing by code page", "_ftcsnccoll function", "ftcsnccoll function", "_wcsncoll_l function"]
ms.assetid: e659a5a4-8afe-4033-8e72-17ffd4bdd8e9
diff --git a/docs/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l.md b/docs/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l.md
index bfd5063cde..518dbf1be2 100644
--- a/docs/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l.md
+++ b/docs/c-runtime-library/reference/strncpy-s-strncpy-s-l-wcsncpy-s-wcsncpy-s-l-mbsncpy-s-mbsncpy-s-l.md
@@ -1,9 +1,10 @@
---
title: "strncpy_s, _strncpy_s_l, wcsncpy_s, _wcsncpy_s_l, _mbsncpy_s, _mbsncpy_s_l"
ms.date: "11/04/2016"
-apiname: ["_mbsncpy_s_l", "wcsncpy_s", "_strncpy_s_l", "strncpy_s", "_mbsncpy_s", "_wcsncpy_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_mbsncpy_s_l", "wcsncpy_s", "_strncpy_s_l", "strncpy_s", "_mbsncpy_s", "_wcsncpy_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcsncpy_s", "_wcsncpy_s_l", "strncpy_s", "_strncpy_s_l", "wcsncpy_s", "_tcsncpy_s_l"]
helpviewer_keywords: ["_wcsncpy_s_l function", "_mbsnbcpy_s function", "_tcsncpy_s_l function", "mbsncpy_s function", "strncpy_s_l function", "_strncpy_s_l function", "strncpy_s function", "mbsncpy_s_l function", "wcsncpy_s function", "copying strings", "strings [C++], copying", "_mbsnbcpy_s_l function", "_tcsncpy_s function", "wcsncpy_s_l function"]
ms.assetid: a971c800-94d1-4d88-92f3-a2fe236a4546
@@ -162,7 +163,7 @@ The output value is affected by the setting of the **LC_CTYPE** category setting
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strncpy-strncpy-l-wcsncpy-wcsncpy-l-mbsncpy-mbsncpy-l.md b/docs/c-runtime-library/reference/strncpy-strncpy-l-wcsncpy-wcsncpy-l-mbsncpy-mbsncpy-l.md
index f9b335615b..06a5873e27 100644
--- a/docs/c-runtime-library/reference/strncpy-strncpy-l-wcsncpy-wcsncpy-l-mbsncpy-mbsncpy-l.md
+++ b/docs/c-runtime-library/reference/strncpy-strncpy-l-wcsncpy-wcsncpy-l-mbsncpy-mbsncpy-l.md
@@ -1,9 +1,10 @@
---
title: "strncpy, _strncpy_l, wcsncpy, _wcsncpy_l, _mbsncpy, _mbsncpy_l"
ms.date: "11/04/2016"
-apiname: ["strncpy", "_strncpy_l", "_mbsncpy", "wcsncpy", "_mbsncpy_l", "_wcsncpy_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["strncpy", "_strncpy_l", "_mbsncpy", "wcsncpy", "_mbsncpy_l", "_wcsncpy_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fstrncpy", "strncpy", "_ftcsncpy", "_tcsnccpy_l", "_tcsnccpy", "_mbsncpy", "wcsncpy", "_tcsncpy", "_strncpy_l", "_mbsncpy_l", "_wcsncpy_l"]
helpviewer_keywords: ["wcsncpy_l function", "characters [C++], copying", "mbsncpy_l function", "strncpy_l function", "wcsncpy function", "tcsnccpy function", "ftcsncpy function", "copying characters of strings", "_wcsncpy_l function", "_tcsnccpy function", "_tcsnccpy_l function", "strncpy function", "_tcsncpy function", "mbsncpy function", "_fstrncpy function", "_mbsncpy_l function", "tcsncpy_l function", "tcsnccpy_l function", "fstrncpy function", "strings [C++], copying", "_ftcsncpy function", "_tcsncpy_l function", "_mbsncpy function", "tcsncpy function", "_strncpy_l function"]
ms.assetid: ac4345a1-a129-4f2f-bb8a-373ec58ab8b0
diff --git a/docs/c-runtime-library/reference/strnextc-wcsnextc-mbsnextc-mbsnextc-l.md b/docs/c-runtime-library/reference/strnextc-wcsnextc-mbsnextc-mbsnextc-l.md
index caa1fcbdb6..c57f9ecfb9 100644
--- a/docs/c-runtime-library/reference/strnextc-wcsnextc-mbsnextc-mbsnextc-l.md
+++ b/docs/c-runtime-library/reference/strnextc-wcsnextc-mbsnextc-mbsnextc-l.md
@@ -1,9 +1,10 @@
---
title: "_strnextc, _wcsnextc, _mbsnextc, _mbsnextc_l"
ms.date: "11/04/2016"
-apiname: ["_strnextc", "_mbsnextc_l", "_mbsnextc", "_wcsnextc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strnextc", "_mbsnextc_l", "_mbsnextc", "_wcsnextc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strnextc", "tcsnextc", "_mbsnextc_l", "_mbsnextc", "mbsnextc_l", "ftcsnextc", "mbsnextc", "_tcsnextc", "_wcsnextc", "_ftcsnextc", "_strnextc", "wcsnextc"]
helpviewer_keywords: ["_mbsnextc function", "_tcsnextc function", "_wcsnextc function", "tcsnextc function", "strnextc function", "mbsnextc function", "_strnextc function", "_mbsnextc_l function", "mbsnextc_l function", "wcsnextc function"]
ms.assetid: e3086173-9eb5-4540-a23a-5d866bd05340
diff --git a/docs/c-runtime-library/reference/strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md b/docs/c-runtime-library/reference/strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md
index bb16166aca..96c00c4d52 100644
--- a/docs/c-runtime-library/reference/strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md
+++ b/docs/c-runtime-library/reference/strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md
@@ -1,9 +1,10 @@
---
title: "_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l"
ms.date: "11/04/2016"
-apiname: ["_wcsnicmp", "_strnicmp_l", "_wcsnicmp_l", "_strnicmp", "_mbsnicmp", "_mbsnicmp_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wcsnicmp", "_strnicmp_l", "_wcsnicmp_l", "_strnicmp", "_mbsnicmp", "_mbsnicmp_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsnicmp_l", "_strnicmp", "_ftcsnicmp", "mbsnicmp_l", "_ftcsncicmp", "mbsnicmp", "_tcsncicmp", "_mbsnicmp", "_tcsnicmp", "strnicmp_l", "_wcsnicmp", "_wcsnicmp_l", "CORECRT_WSTRING/_wcsnicmp", "CORECRT_WSTRING/_wcsnicmp_l", "string/_strnicmp", "string/_strnicmp_l"]
helpviewer_keywords: ["tcsnicmp function", "_tcsncicmp function", "_mbsnicmp_l function", "mbsnicmp_l function", "wcsnicmp_l function", "wcsnicmp function", "string comparison [C++], lowercase", "ftcsnicmp function", "strnicmp_l function", "strncmp function", "_strnicmp function", "strings [C++], comparing characters of", "_wcsnicmp_l function", "tcsncicmp function", "string comparison [C++], strncmp function", "_mbsnicmp function", "ftcsncicmp function", "_tcsnicmp function", "_ftcsncicmp function", "_strnicmp_l function", "_ftcsnicmp function", "characters [C++], comparing", "mbsnicmp function", "_wcsnicmp function"]
ms.assetid: df6e5037-4039-4c85-a0a6-21d4ef513966
diff --git a/docs/c-runtime-library/reference/strnicmp-wcsnicmp.md b/docs/c-runtime-library/reference/strnicmp-wcsnicmp.md
index 35b475ee84..95dc5843a5 100644
--- a/docs/c-runtime-library/reference/strnicmp-wcsnicmp.md
+++ b/docs/c-runtime-library/reference/strnicmp-wcsnicmp.md
@@ -1,13 +1,16 @@
---
title: "strnicmp, wcsnicmp"
-ms.date: "11/04/2016"
-apiname: ["wcsnicmp", "strnicmp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["wcsnicmp", "strnicmp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsnicmp", "strnicmp"]
helpviewer_keywords: ["strnicmp function", "wcsnicmp function"]
ms.assetid: 01324ee4-0bd9-43e9-b2a3-53d180270a64
---
# strnicmp, wcsnicmp
-These POSIX functions are deprecated. Use the ISO C++ conformant [_strnicmp, _wcsnicmp, _mbsnicmp, _strnicmp_l, _wcsnicmp_l, _mbsnicmp_l](strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function names `strnicmp` and `wcsnicmp` are deprecated aliases for the [_strnicmp and _wcsnicmp](strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_strnicmp and _wcsnicmp](strnicmp-wcsnicmp-mbsnicmp-strnicmp-l-wcsnicmp-l-mbsnicmp-l.md) instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/strnicoll-wcsnicoll-mbsnicoll-strnicoll-l-wcsnicoll-l-mbsnicoll-l.md b/docs/c-runtime-library/reference/strnicoll-wcsnicoll-mbsnicoll-strnicoll-l-wcsnicoll-l-mbsnicoll-l.md
index 911d0290ff..60437854b2 100644
--- a/docs/c-runtime-library/reference/strnicoll-wcsnicoll-mbsnicoll-strnicoll-l-wcsnicoll-l-mbsnicoll-l.md
+++ b/docs/c-runtime-library/reference/strnicoll-wcsnicoll-mbsnicoll-strnicoll-l-wcsnicoll-l-mbsnicoll-l.md
@@ -1,9 +1,10 @@
---
title: "_strnicoll, _wcsnicoll, _mbsnicoll, _strnicoll_l, _wcsnicoll_l, _mbsnicoll_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnicoll_l", "_mbsnicoll", "_wcsnicoll_l", "_strnicoll", "_strnicoll_l", "_wcsnicoll"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsnicoll_l", "_mbsnicoll", "_wcsnicoll_l", "_strnicoll", "_strnicoll_l", "_wcsnicoll"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcshicoll_l", "_ftcsncicoll", "strnicoll_l", "_wcsnicoll", "mbsnicoll_l", "_strnicoll", "mbsnicoll", "_ftcsnicoll", "wcsnicoll", "_tcsnicoll", "_mbsnicoll", "strinicoll", "_tcsncicoll"]
helpviewer_keywords: ["code pages, using for string comparisons", "ftcsncicoll function", "mbsnicoll_l function", "_ftcsnicoll function", "mbsnicoll function", "_tcsnicoll function", "_wcsnicoll_l function", "_mbsnicoll function", "tcsncicoll function", "strnicoll function", "_ftcsncicoll function", "wcsnicoll_l function", "_mbsnicoll_l function", "_tcsncicoll function", "strnicoll_l function", "wcsnicoll function", "_strnicoll_l function", "_wcsnicoll function", "ftcsnicoll function", "strings [C++], comparing by code page", "tcsnicoll function", "_strnicoll function"]
ms.assetid: abf0c569-725b-428d-9ff2-924f430104b4
diff --git a/docs/c-runtime-library/reference/strninc-wcsninc-mbsninc-mbsninc-l.md b/docs/c-runtime-library/reference/strninc-wcsninc-mbsninc-mbsninc-l.md
index 35ba1d5b01..3f1b58dc64 100644
--- a/docs/c-runtime-library/reference/strninc-wcsninc-mbsninc-mbsninc-l.md
+++ b/docs/c-runtime-library/reference/strninc-wcsninc-mbsninc-mbsninc-l.md
@@ -1,9 +1,10 @@
---
title: "_strninc, _wcsninc, _mbsninc, _mbsninc_l"
ms.date: "11/04/2016"
-apiname: ["_mbsninc", "_mbsninc_l", "_wcsninc", "_strninc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsninc", "_mbsninc_l", "_wcsninc", "_strninc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strninc", "wcsninc", "mbsninc_l", "_strninc", "_tcsninc", "mbsninc", "_mbsninc_l", "_ftcsninc", "_wcsninc", "_mbsninc"]
helpviewer_keywords: ["_mbsninc_l function", "mbsninc function", "_strninc function", "tcsninc function", "wcsninc function", "_mbsninc function", "strninc function", "_wcsninc function", "mbsninc_l function", "_tcsninc function"]
ms.assetid: 6caace64-f9e4-48c0-afa8-ea51824ad723
diff --git a/docs/c-runtime-library/reference/strnlen-strnlen-s.md b/docs/c-runtime-library/reference/strnlen-strnlen-s.md
index e76d793539..83cede8cbc 100644
--- a/docs/c-runtime-library/reference/strnlen-strnlen-s.md
+++ b/docs/c-runtime-library/reference/strnlen-strnlen-s.md
@@ -1,9 +1,10 @@
---
title: "strnlen, strnlen_s, wcsnlen, wcsnlen_s, _mbsnlen, _mbsnlen_l, _mbstrnlen, _mbstrnlen_l"
ms.date: "11/04/2016"
-apiname: ["wcsnlen", "strnlen_s", "_mbstrnlen", "_mbsnlen_l", "_mbstrnlen_l", "strnlen", "wcsnlen_s", "_mbsnlen"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["wcsnlen", "strnlen_s", "_mbstrnlen", "_mbsnlen_l", "_mbstrnlen_l", "strnlen", "wcsnlen_s", "_mbsnlen"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsnlen", "strnlen_s", "_mbsnlen", "_mbsnlen_l", "_tcsnlen", "_tcscnlen", "_mbstrnlen_l", "wcsnlen_s", "_mbstrnlen", "strnlen", "_tcscnlen_l"]
helpviewer_keywords: ["_tcscnlen function", "_mbstrnlen function", "_mbsnlen_l function", "lengths, strings", "mbstrnlen function", "mbsnlen_l function", "_mbstrnlen_l function", "_tcscnlen_l function", "wcsnlen_l function", "_tcsnlen function", "_mbsnlen function", "strnlen function", "mbsnlen function", "wcsnlen_s function", "strnlen_s function", "mbstrnlen_l function", "wcsnlen function", "string length", "strnlen_l function"]
ms.assetid: cc05ce1c-72ea-4ae4-a7e7-4464e56e5f80
diff --git a/docs/c-runtime-library/reference/strnset-s-strnset-s-l-wcsnset-s-wcsnset-s-l-mbsnset-s-mbsnset-s-l.md b/docs/c-runtime-library/reference/strnset-s-strnset-s-l-wcsnset-s-wcsnset-s-l-mbsnset-s-mbsnset-s-l.md
index 6a01b4a477..c6d884a8f3 100644
--- a/docs/c-runtime-library/reference/strnset-s-strnset-s-l-wcsnset-s-wcsnset-s-l-mbsnset-s-mbsnset-s-l.md
+++ b/docs/c-runtime-library/reference/strnset-s-strnset-s-l-wcsnset-s-wcsnset-s-l-mbsnset-s-mbsnset-s-l.md
@@ -1,9 +1,10 @@
---
title: "_strnset_s, _strnset_s_l, _wcsnset_s, _wcsnset_s_l, _mbsnset_s, _mbsnset_s_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnset_s_l", "_strnset_s", "_mbsnset_s", "_strnset_s_l", "_wcsnset_s_l", "_wcsnset_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_mbsnset_s_l", "_strnset_s", "_mbsnset_s", "_strnset_s_l", "_wcsnset_s_l", "_wcsnset_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbsnset_s_l", "wcsnset_s", "_tcsnset_s_l", "_wcsnset_s", "_mbsnset_s", "_wcsnset_s_l", "_strnset_s_l", "strnset_s_l", "_tcsnset_s", "_strnset_s", "strnset_s", "mbsnset_s_l", "mbsnset_s", "wcsnset_s_l"]
helpviewer_keywords: ["tcsnset_s function", "mbsnset_s_l function", "initializing characters", "wcsnset_s function", "mbsnset_s function", "_tcsnset_s_l function", "_strnset_s_l function", "_mbsnset_s function", "strnset_s_l function", "_tcsnset_s function", "_strnset_s function", "tcsnset_s_l function", "_mbsnset_s_l function", "strnset_s function", "_wcsnset_s function"]
ms.assetid: 9cf1b321-b5cb-4469-b285-4c07cfbd8813
@@ -90,7 +91,7 @@ These functions set, at most, the first *count* characters of *str* to *c*. If *
The output value is affected by the setting of the **LC_CTYPE** category setting of the locale; see [setlocale](setlocale-wsetlocale.md) for more information. The versions of these functions without the **_l** suffix use the current locale for this locale-dependent behavior; the versions with the **_l** suffix are identical except that they use the locale parameter passed in instead. For more information, see [Locale](../../c-runtime-library/locale.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strnset-strnset-l-wcsnset-wcsnset-l-mbsnset-mbsnset-l.md b/docs/c-runtime-library/reference/strnset-strnset-l-wcsnset-wcsnset-l-mbsnset-mbsnset-l.md
index 6d03c5d14a..f8c4b0d470 100644
--- a/docs/c-runtime-library/reference/strnset-strnset-l-wcsnset-wcsnset-l-mbsnset-mbsnset-l.md
+++ b/docs/c-runtime-library/reference/strnset-strnset-l-wcsnset-wcsnset-l-mbsnset-mbsnset-l.md
@@ -1,9 +1,10 @@
---
title: "_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l"
ms.date: "11/04/2016"
-apiname: ["_mbsnset", "_strnset", "_mbsnset_l", "_wcsnset_l", "_wcsnset", "_strnset_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_mbsnset", "_strnset", "_mbsnset_l", "_wcsnset_l", "_wcsnset", "_strnset_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcsncset_l", "mbsnset_l", "_tcsnset_l", "_fstrnset", "_wcsnset_l", "_ftcsnset", "wcsnset_l", "_mbsnset_l", "_strnset", "_tcsnset", "_strnset_l", "mbsnset", "strnset_l", "_mbsnset", "_wcsnset", "_tcsncset"]
helpviewer_keywords: ["_wcsnset function", "strnset_l function", "tcsnset function", "tcsncset function", "characters [C++], initializing to formats", "mbsnset function", "_tcsnset_l function", "_mbsnset function", "_strnset function", "_tcsncset_l function", "mbsnset_l function", "_tcsnset function", "initializing characters", "_tcsncset function", "ftcsnset function", "wcsnset_l function", "_ftcsnset function", "_wcsnset_l function", "_fstrnset function", "_mbsnset_l function", "_strnset_l function", "fstrnset function", "strings [C++], initializing", "tcsnset_l function"]
ms.assetid: 3f306489-5763-48e5-b939-aefee7c94ef5
diff --git a/docs/c-runtime-library/reference/strnset-wcsnset.md b/docs/c-runtime-library/reference/strnset-wcsnset.md
index d376cc74f8..89c661c9c5 100644
--- a/docs/c-runtime-library/reference/strnset-wcsnset.md
+++ b/docs/c-runtime-library/reference/strnset-wcsnset.md
@@ -1,13 +1,16 @@
---
title: "strnset, wcsnset"
-ms.date: "11/04/2016"
-apiname: ["strnset", "wcsnset"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["strnset", "wcsnset"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsnset", "strnset"]
helpviewer_keywords: ["strnset function", "wcsnset function"]
ms.assetid: e7868ac9-dc34-4606-bd3c-0fb2e7c51631
---
# strnset, wcsnset
-These POSIX functions are deprecated. Use the ISO C++ conformant [_strnset, _strnset_l, _wcsnset, _wcsnset_l, _mbsnset, _mbsnset_l](strnset-strnset-l-wcsnset-wcsnset-l-mbsnset-mbsnset-l.md) or security-enhanced [_strnset_s, _strnset_s_l, _wcsnset_s, _wcsnset_s_l, _mbsnset_s, _mbsnset_s_l](strnset-s-strnset-s-l-wcsnset-s-wcsnset-s-l-mbsnset-s-mbsnset-s-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function names `strnset` and `wcsnset` are deprecated aliases for the [_strnset and _wcsnset](strnset-strnset-l-wcsnset-wcsnset-l-mbsnset-mbsnset-l.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_strnset and _wcsnset](strnset-strnset-l-wcsnset-wcsnset-l-mbsnset-mbsnset-l.md) or the security-enhanced [_strnset_s and _wcsnset_s](strnset-s-strnset-s-l-wcsnset-s-wcsnset-s-l-mbsnset-s-mbsnset-s-l.md) functions instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/strpbrk-wcspbrk-mbspbrk-mbspbrk-l.md b/docs/c-runtime-library/reference/strpbrk-wcspbrk-mbspbrk-mbspbrk-l.md
index 0f00cbeab4..5b7d7e31be 100644
--- a/docs/c-runtime-library/reference/strpbrk-wcspbrk-mbspbrk-mbspbrk-l.md
+++ b/docs/c-runtime-library/reference/strpbrk-wcspbrk-mbspbrk-mbspbrk-l.md
@@ -1,9 +1,10 @@
---
title: "strpbrk, wcspbrk, _mbspbrk, _mbspbrk_l"
ms.date: "11/04/2016"
-apiname: ["_mbspbrk", "wcspbrk", "_mbspbrk_l", "strpbrk"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbspbrk", "wcspbrk", "_mbspbrk_l", "strpbrk"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fstrpbrk", "_mbspbrk", "strpbrk", "_tcspbrk", "_ftcspbrk", "wcspbrk"]
helpviewer_keywords: ["fstrpbrk function", "_ftcspbrk function", "_mbspbrk_l function", "strpbrk function", "_fstrpbrk function", "mbspbrk function", "characters [C++], scanning strings", "_tcspbrk function", "wcspbrk function", "ftcspbrk function", "character sets [C++], scanning strings for characters", "strings [C++], scanning", "tcspbrk function", "_mbspbrk function", "mbspbrk_l function"]
ms.assetid: 80b504f7-a167-4dde-97ad-4ae3000dc810
diff --git a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md
index a4fa47ac06..5db8dffbb0 100644
--- a/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md
+++ b/docs/c-runtime-library/reference/strrchr-wcsrchr-mbsrchr-mbsrchr-l.md
@@ -1,9 +1,10 @@
---
title: "strrchr, wcsrchr, _mbsrchr, _mbsrchr_l"
ms.date: "11/04/2016"
-apiname: ["strrchr", "wcsrchr", "_mbsrchr", "_mbsrchr_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["strrchr", "wcsrchr", "_mbsrchr", "_mbsrchr_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcsrchr", "_ftcsrchr", "strrchr", "wcsrchr", "_mbsrchr"]
helpviewer_keywords: ["_mbsrchr function", "tcsrchr function", "mbsrchr_l function", "characters [C++], scanning for", "ftcsrchr function", "_tcsrchr function", "strings [C++], scanning", "mbsrchr function", "strrchr function", "scanning strings", "wcsrchr function", "_ftcsrchr function", "_mbsrchr_l function"]
ms.assetid: 75cf2664-758e-49bb-bf6b-8a139cd474d2
diff --git a/docs/c-runtime-library/reference/strrev-wcsrev-mbsrev-mbsrev-l.md b/docs/c-runtime-library/reference/strrev-wcsrev-mbsrev-mbsrev-l.md
index 875b58f8f2..02d82a7c1b 100644
--- a/docs/c-runtime-library/reference/strrev-wcsrev-mbsrev-mbsrev-l.md
+++ b/docs/c-runtime-library/reference/strrev-wcsrev-mbsrev-mbsrev-l.md
@@ -1,9 +1,10 @@
---
title: "_strrev, _wcsrev, _mbsrev, _mbsrev_l"
ms.date: "11/04/2016"
-apiname: ["_wcsrev", "_mbsrev", "_strrev", "_mbsrev_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wcsrev", "_mbsrev", "_strrev", "_mbsrev_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strrev", "_ftcsrev", "_tcsrev", "mbsrev", "mbsrev_l", "_wcsrev_fstrrev", "_mbsrev"]
helpviewer_keywords: ["_mbsrev_l function", "characters [C++], switching", "_mbsrev function", "strrev function", "_ftcsrev function", "strings [C++], reversing", "wcsrev function", "_strrev function", "mbsrev_l function", "reversing characters in strings", "ftcsrev function", "characters [C++], reversing order", "_wcsrev function", "mbsrev function", "tcsrev function", "_tcsrev function"]
ms.assetid: 87863e89-4fa0-421c-af48-25d8516fe72f
diff --git a/docs/c-runtime-library/reference/strrev-wcsrev.md b/docs/c-runtime-library/reference/strrev-wcsrev.md
index 084bb5bc41..274bd9570c 100644
--- a/docs/c-runtime-library/reference/strrev-wcsrev.md
+++ b/docs/c-runtime-library/reference/strrev-wcsrev.md
@@ -1,13 +1,16 @@
---
title: "strrev, wcsrev"
-ms.date: "11/04/2016"
-apiname: ["strrev", "wcsrev"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["strrev", "wcsrev"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strrev", "wcsrev"]
helpviewer_keywords: ["strrev function", "wcsrev function"]
ms.assetid: 89e05854-a9ce-4fb7-993d-a9831cd7edf2
---
# strrev, wcsrev
-These POSIX functions are deprecated. Use the ISO C++ conformant [_strrev, _wcsrev, _mbsrev, _mbsrev_l](strrev-wcsrev-mbsrev-mbsrev-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function names `strrev` and `wcsrev` are deprecated aliases for the [_strrev and _wcsrev](strrev-wcsrev-mbsrev-mbsrev-l.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_strrev and _wcsrev](strrev-wcsrev-mbsrev-mbsrev-l.md) instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/strset-s-strset-s-l-wcsset-s-wcsset-s-l-mbsset-s-mbsset-s-l.md b/docs/c-runtime-library/reference/strset-s-strset-s-l-wcsset-s-wcsset-s-l-mbsset-s-mbsset-s-l.md
index 64ea6407b3..6b8b27682c 100644
--- a/docs/c-runtime-library/reference/strset-s-strset-s-l-wcsset-s-wcsset-s-l-mbsset-s-mbsset-s-l.md
+++ b/docs/c-runtime-library/reference/strset-s-strset-s-l-wcsset-s-wcsset-s-l-mbsset-s-mbsset-s-l.md
@@ -1,9 +1,10 @@
---
title: "_strset_s, _strset_s_l, _wcsset_s, _wcsset_s_l, _mbsset_s, _mbsset_s_l"
ms.date: "11/04/2016"
-apiname: ["_wcsset_s", "_wcsset_s_l", "_strset_s", "_mbsset_s_l", "_strset_s_l", "_mbsset_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wcsset_s", "_wcsset_s_l", "_strset_s", "_mbsset_s_l", "_strset_s_l", "_mbsset_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wcsset_s_l", "strset_s", "_mbsset_s", "mbsset_s", "_strset_s", "_mbsset_s_l", "strset_s_l", "_wcsset_s", "mbsset_s_l", "wcsset_s_l", "wcsset_s", "_strset_s_l", "_tcsset_s_l", "_tcsset_s"]
helpviewer_keywords: ["mbsset_s_l function", "wcsset_s function", "_mbsset_s function", "tcsset_s function", "strset_s_l function", "characters [C++], setting", "_wcsset_s_l function", "_strset_s function", "strset_s function", "wcsset_s_l function", "strings [C++], setting characters", "_strset_s_l function", "_mbsset_s_l function", "_wcsset_s function", "tcsset_s_l function", "_tcsset_s_l function", "_tcsset_s function", "mbsset_s function"]
ms.assetid: dceb2909-6b41-4792-acb7-888e45bb8b35
@@ -79,7 +80,7 @@ The **_strset_s** function sets all the characters of *str* to *c* (converted to
The output value is affected by the setting of the **LC_CTYPE** category setting of the locale; see [setlocale](setlocale-wsetlocale.md) for more information. The versions of these functions without the **_l** suffix use the current locale for this locale-dependent behavior; the versions with the **_l** suffix are identical except that they use the locale parameter passed in instead. For more information, see [Locale](../../c-runtime-library/locale.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strset-strset-l-wcsset-wcsset-l-mbsset-mbsset-l.md b/docs/c-runtime-library/reference/strset-strset-l-wcsset-wcsset-l-mbsset-mbsset-l.md
index 1bda546652..0c4904664b 100644
--- a/docs/c-runtime-library/reference/strset-strset-l-wcsset-wcsset-l-mbsset-mbsset-l.md
+++ b/docs/c-runtime-library/reference/strset-strset-l-wcsset-wcsset-l-mbsset-mbsset-l.md
@@ -1,9 +1,10 @@
---
title: "_strset, _strset_l, _wcsset, _wcsset_l, _mbsset, _mbsset_l"
ms.date: "11/04/2016"
-apiname: ["_wcsset", "_mbsset", "_strset_l", "_strset", "_wcsset_l", "_mbsset_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wcsset", "_mbsset", "_strset_l", "_strset", "_wcsset_l", "_mbsset_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["mbsset", "_strset_l", "_mbsset", "_strset", "mbsset_l", "strset_l", "_wcsset", "_ftcsset", "wcsset_l", "_tcsset_l", "_mbsset_l", "_wcsset_l", "_fstrset", "_tcsset"]
helpviewer_keywords: ["_wcsset_l function", "_tcsset function", "wcsset_l function", "_ftcsset function", "characters [C++], setting", "_strset function", "ftcsset function", "strings [C++], setting characters", "mbsset function", "tcsset_l function", "_fstrset function", "mbsset_l function", "strset_l function", "_wcsset function", "_mbsset function", "_mbsset_l function", "tcsset function", "_strset_l function", "fstrset function", "_tcsset_l function"]
ms.assetid: c42ded42-2ed9-4f06-a0a9-247ba305473a
diff --git a/docs/c-runtime-library/reference/strset-wcsset.md b/docs/c-runtime-library/reference/strset-wcsset.md
index 778a17e244..64d7d2c44b 100644
--- a/docs/c-runtime-library/reference/strset-wcsset.md
+++ b/docs/c-runtime-library/reference/strset-wcsset.md
@@ -1,9 +1,10 @@
---
title: "strset, wcsset"
ms.date: "11/04/2016"
-apiname: ["wcsset", "strset"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["wcsset", "strset"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strset", "wcsset"]
helpviewer_keywords: ["wcsset function", "strset function"]
ms.assetid: 20e132d8-4b6c-4341-b1eb-8e19b46047e2
diff --git a/docs/c-runtime-library/reference/strspn-wcsspn-mbsspn-mbsspn-l.md b/docs/c-runtime-library/reference/strspn-wcsspn-mbsspn-mbsspn-l.md
index 3475f8ba4b..0750d1567b 100644
--- a/docs/c-runtime-library/reference/strspn-wcsspn-mbsspn-mbsspn-l.md
+++ b/docs/c-runtime-library/reference/strspn-wcsspn-mbsspn-mbsspn-l.md
@@ -1,9 +1,10 @@
---
title: "strspn, wcsspn, _mbsspn, _mbsspn_l"
ms.date: "11/04/2016"
-apiname: ["_mbsspn_l", "wcsspn", "strspn", "_mbsspn"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_mbsspn_l", "wcsspn", "strspn", "_mbsspn"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ftcsspn", "wcsspn", "_mbsspn", "_tcsspn", "strspn"]
helpviewer_keywords: ["wcsspn function", "strings [C++], searching", "mbsspn function", "tcsspn function", "strspn function", "substrings, finding", "_mbsspn_l function", "ftcsspn function", "_mbsspn function", "_ftcsspn function", "mbsspn_l function", "_tcsspn function"]
ms.assetid: d077284a-809f-4068-959e-c6d6262677eb
diff --git a/docs/c-runtime-library/reference/strspnp-wcsspnp-mbsspnp-mbsspnp-l.md b/docs/c-runtime-library/reference/strspnp-wcsspnp-mbsspnp-mbsspnp-l.md
index 8c3e8c8063..40e10bfd93 100644
--- a/docs/c-runtime-library/reference/strspnp-wcsspnp-mbsspnp-mbsspnp-l.md
+++ b/docs/c-runtime-library/reference/strspnp-wcsspnp-mbsspnp-mbsspnp-l.md
@@ -1,9 +1,10 @@
---
title: "_strspnp, _wcsspnp, _mbsspnp, _mbsspnp_l"
ms.date: "11/04/2016"
-apiname: ["_mbsspnp", "_wcsspnp", "_mbsspnp_l", "_strspnp"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsspnp", "_wcsspnp", "_mbsspnp_l", "_strspnp"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcsspnp", "_mbsspnp", "strspnp", "_ftcsspnp", "_mbsspnp_l", "wcsspnp", "mbsspnp_l", "_wcsspnp", "_strspnp", "mbsspnp"]
helpviewer_keywords: ["_strspnp function", "_wcsspnp function", "_mbsspnp_l function", "strspnp function", "mbsspnp function", "wcsspnp function", "_mbsspnp function", "mbsspnp_l function", "_tcsspnp function", "tcsspnp function"]
ms.assetid: 1ce18100-2edd-4c3b-af8b-53f204d80233
diff --git a/docs/c-runtime-library/reference/strstr-wcsstr-mbsstr-mbsstr-l.md b/docs/c-runtime-library/reference/strstr-wcsstr-mbsstr-mbsstr-l.md
index f27799907a..51a8086482 100644
--- a/docs/c-runtime-library/reference/strstr-wcsstr-mbsstr-mbsstr-l.md
+++ b/docs/c-runtime-library/reference/strstr-wcsstr-mbsstr-mbsstr-l.md
@@ -1,9 +1,10 @@
---
title: "strstr, wcsstr, _mbsstr, _mbsstr_l"
ms.date: "11/04/2016"
-apiname: ["_mbsstr", "wcsstr", "_mbsstr_l", "strstr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_mbsstr", "wcsstr", "_mbsstr_l", "strstr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_fstrstr", "_ftcsstr", "strstr", "wcsstr", "_mbsstr", "_tcsstr"]
helpviewer_keywords: ["strings [C++], searching", "mbsstr function", "_ftcsstr function", "ftcsstr function", "fstrstr function", "_tcsstr function", "substrings, finding", "mbsstr_l function", "tcsstr function", "_mbsstr function", "wcsstr function", "_fstrstr function", "_mbsstr_l function", "strstr function"]
ms.assetid: 03d70c3f-2473-45cb-a5f8-b35beeb2748a
diff --git a/docs/c-runtime-library/reference/strtime-s-wstrtime-s.md b/docs/c-runtime-library/reference/strtime-s-wstrtime-s.md
index cf938e1801..fee1cb1bde 100644
--- a/docs/c-runtime-library/reference/strtime-s-wstrtime-s.md
+++ b/docs/c-runtime-library/reference/strtime-s-wstrtime-s.md
@@ -1,9 +1,10 @@
---
title: "_strtime_s, _wstrtime_s"
ms.date: "11/04/2016"
-apiname: ["_wstrtime_s", "_strtime_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wstrtime_s", "_strtime_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wstrtime_s", "strtime_s", "wstrtime_s", "_strtime_s"]
helpviewer_keywords: ["wstrtime_s function", "copying time to buffers", "strtime_s function", "_wstrtime_s function", "time, copying", "_strtime_s function"]
ms.assetid: 42acf013-c334-485d-b610-84c0af8a46ec
@@ -70,6 +71,8 @@ These functions provide more secure versions of [_strtime](strtime-wstrtime.md)
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+
### Generic-Text Routine Mapping:
|TCHAR.H routine|_UNICODE & _MBCS not defined|_MBCS defined|_UNICODE defined|
diff --git a/docs/c-runtime-library/reference/strtime-wstrtime.md b/docs/c-runtime-library/reference/strtime-wstrtime.md
index 365c03f239..b2b8a8c3ae 100644
--- a/docs/c-runtime-library/reference/strtime-wstrtime.md
+++ b/docs/c-runtime-library/reference/strtime-wstrtime.md
@@ -1,9 +1,10 @@
---
title: "_strtime, _wstrtime"
ms.date: "11/04/2016"
-apiname: ["_wstrtime", "_strtime"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wstrtime", "_strtime"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wstrtime", "_strtime", "wstrtime", "strtime", "_tstrtime"]
helpviewer_keywords: ["strtime function", "_strtime function", "_wstrtime function", "copying time to buffers", "wstrtime function", "tstrtime function", "_tstrtime function", "time, copying"]
ms.assetid: 9e538161-cf49-44ec-bca5-c0ab0b9e4ca3
diff --git a/docs/c-runtime-library/reference/strtod-strtod-l-wcstod-wcstod-l.md b/docs/c-runtime-library/reference/strtod-strtod-l-wcstod-wcstod-l.md
index 648f8d1557..9c409057c4 100644
--- a/docs/c-runtime-library/reference/strtod-strtod-l-wcstod-wcstod-l.md
+++ b/docs/c-runtime-library/reference/strtod-strtod-l-wcstod-wcstod-l.md
@@ -1,9 +1,10 @@
---
title: "strtod, _strtod_l, wcstod, _wcstod_l"
ms.date: "10/20/2017"
-apiname: ["wcstod", "_wcstod_l", "_strtod_l", "strtod"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcstod", "_wcstod_l", "_strtod_l", "strtod"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcstod", "strtod", "wcstod", "_strtod_l", "_wcstod_l", "stdlib/strtod", "corecrt_wstdlib/wcstod", "stdlib/_strtod_l", "corecrt_wstdlib/_wcstod_l"]
helpviewer_keywords: ["wcstod_l function", "tcstod_l function", "_tcstod_l function", "strtod function", "_wcstod_l function", "wcstod function", "strtod_l function", "tcstod function", "_tcstod function", "_strtod_l function", "string conversion, to floating point values"]
ms.assetid: 0444f74a-ba2a-4973-b7f0-1d77ba88c6ed
diff --git a/docs/c-runtime-library/reference/strtof-strtof-l-wcstof-wcstof-l.md b/docs/c-runtime-library/reference/strtof-strtof-l-wcstof-wcstof-l.md
index d7147d01dc..77ae9fcbbf 100644
--- a/docs/c-runtime-library/reference/strtof-strtof-l-wcstof-wcstof-l.md
+++ b/docs/c-runtime-library/reference/strtof-strtof-l-wcstof-wcstof-l.md
@@ -1,9 +1,10 @@
---
title: "strtof, _strtof_l, wcstof, _wcstof_l"
ms.date: "04/05/2018"
-apiname: ["_strtof_l", "wcstof", "strtof", "_wcstof_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strtof_l", "wcstof", "strtof", "_wcstof_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcstof", "_tcstof_l", "stdlib/strtof", "strtof", "stdlib/_strtof_l", "_strtof_l", "corecrt_wstdlib/wcstof", "wcstof", "corecrt_wstdlib/_wcstof_l", "_wcstof_l"]
helpviewer_keywords: ["_strtof_l function", "_tcstof function", "_wcstof_l function", "wcstof function", "_tcstof_l function", "strtof function"]
ms.assetid: 52221b46-876d-4fcc-afb1-97512c17a43b
diff --git a/docs/c-runtime-library/reference/strtoi64-wcstoi64-strtoi64-l-wcstoi64-l.md b/docs/c-runtime-library/reference/strtoi64-wcstoi64-strtoi64-l-wcstoi64-l.md
index 964d7b5661..128550ec64 100644
--- a/docs/c-runtime-library/reference/strtoi64-wcstoi64-strtoi64-l-wcstoi64-l.md
+++ b/docs/c-runtime-library/reference/strtoi64-wcstoi64-strtoi64-l-wcstoi64-l.md
@@ -1,9 +1,10 @@
---
title: "_strtoi64, _wcstoi64, _strtoi64_l, _wcstoi64_l"
ms.date: "11/04/2016"
-apiname: ["_strtoi64", "_strtoi64_l", "_wcstoi64_l", "_wcstoi64"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strtoi64", "_strtoi64_l", "_wcstoi64_l", "_wcstoi64"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strtoi64", "strtoi64", "_stroi64_l", "_wcstoi64_l", "wcstoi64_l", "_wcstoi64", "wcstoi64", "strtoi64_l"]
helpviewer_keywords: ["_strtoi64 function", "_wcstoi64 function", "_strtoi64_l function", "string conversion, to integers", "_wcstoi64_l function", "strtoi64_l function", "wcstoi64 function", "strtoi64 function", "wcstoi64_l function"]
ms.assetid: ea2abc50-7bfe-420e-a46b-703c3153593a
diff --git a/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md b/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md
index f51245478f..fe3ca0cc5b 100644
--- a/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md
+++ b/docs/c-runtime-library/reference/strtoimax-strtoimax-l-wcstoimax-wcstoimax-l.md
@@ -1,9 +1,10 @@
---
title: "strtoimax, _strtoimax_l, wcstoimax, _wcstoimax_l"
ms.date: "11/04/2016"
-apiname: ["wcstoimax", "_wcstoimax_l", "_strtoimax_l", "strtoimax"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcstoimax", "_wcstoimax_l", "_strtoimax_l", "strtoimax"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcstoimax", "_tcstoimax", "strtoimax", "_wcstoimax_l", "_strtoimax_l", "_tcstoimax_l"]
helpviewer_keywords: ["strtoimax funciton", "conversion functions", "_strtoimax_l function", "_wcstoimax_l function", "wcstoimax function"]
ms.assetid: 4530d3dc-aaac-4a76-b7cf-29ae3c98d0ae
diff --git a/docs/c-runtime-library/reference/strtok-s-strtok-s-l-wcstok-s-wcstok-s-l-mbstok-s-mbstok-s-l.md b/docs/c-runtime-library/reference/strtok-s-strtok-s-l-wcstok-s-wcstok-s-l-mbstok-s-mbstok-s-l.md
index fbc5d52a8b..68d9fcd009 100644
--- a/docs/c-runtime-library/reference/strtok-s-strtok-s-l-wcstok-s-wcstok-s-l-mbstok-s-mbstok-s-l.md
+++ b/docs/c-runtime-library/reference/strtok-s-strtok-s-l-wcstok-s-wcstok-s-l-mbstok-s-mbstok-s-l.md
@@ -1,9 +1,10 @@
---
title: "strtok_s, _strtok_s_l, wcstok_s, _wcstok_s_l, _mbstok_s, _mbstok_s_l"
ms.date: "03/25/2019"
-apiname: ["_wcstok_s_l", "_mbstok_s_l", "_mbstok_s", "strtok_s", "wcstok_s", "_strtok_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wcstok_s_l", "_mbstok_s_l", "_mbstok_s", "strtok_s", "wcstok_s", "_strtok_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcstok_s_l", "_wcstok_s_l", "_tcstok_s", "_mbstok_s_l", "strtok_s", "wcstok_s", "_mbstok_s", "_strtok_s_l"]
helpviewer_keywords: ["_strtok_s_l function", "_mbstok_s_l function", "strings [C++], searching", "mbstok_s_l function", "wcstok_s_l function", "_wcstok_s_l function", "_tcstok_s function", "_tcstok_s_l function", "strtok_s_l function", "wcstok_s function", "tokens, finding in strings", "mbstok_s function", "_mbstok_s function", "strtok_s function"]
ms.assetid: 7696c972-f83b-4617-8c82-95973e9fdb46
diff --git a/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md b/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md
index abf2559842..ed0976b56b 100644
--- a/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md
+++ b/docs/c-runtime-library/reference/strtok-strtok-l-wcstok-wcstok-l-mbstok-mbstok-l.md
@@ -1,9 +1,10 @@
---
title: "strtok, _strtok_l, wcstok, _wcstok_l, _mbstok, _mbstok_l"
ms.date: "03/25/2019"
-apiname: ["_mbstok_l", "_mbstok", "wcstok", "_mbstok", "strtok", "_wcstok_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbstok_l", "_mbstok", "wcstok", "_mbstok", "strtok", "_wcstok_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbstok", "strtok", "_tcstok", "wcstok"]
helpviewer_keywords: ["mbstok_l function", "strings [C++], searching", "tcstok function", "_tcstok function", "_strtok_l function", "strtok function", "mbstok function", "wcstok_l function", "_mbstok function", "tcstok_l function", "tokens, finding in strings", "_mbstok_l function", "wcstok function", "_wcstok_l function", "_tcstok_l function", "strtok_l function"]
ms.assetid: 904cb734-f0d7-4d77-ba81-4791ddf461ae
diff --git a/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md b/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md
index 2bcb87bbd8..dd6291beb0 100644
--- a/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md
+++ b/docs/c-runtime-library/reference/strtol-wcstol-strtol-l-wcstol-l.md
@@ -1,39 +1,41 @@
---
title: "strtol, wcstol, _strtol_l, _wcstol_l"
-ms.date: "11/04/2016"
-apiname: ["strtol", "wcstol", "_strtol_l", "_wcstol_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+ms.date: "01/14/2020"
+api_name: ["strtol", "wcstol", "_strtol_l", "_wcstol_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wcstol_l", "strtol", "_tcstol", "wcstol", "_strtol_l", "_tcstol_l"]
helpviewer_keywords: ["wcstol function", "wcstol_l function", "_tcstol function", "string conversion, to integers", "tcstol function", "strtol_l function", "_wcstol_l function", "_strtol_l function", "strtol function"]
ms.assetid: 1787c96a-f283-4a83-9325-33cfc1c7e240
+no-loc: [strtol, wcstol, _strtol_l, _wcstol_l, LONG_MAX, LONG_MIN, errno, ERANGE, EINVAL, LC_NUMERIC, _tcstol, _tcstol_l, localeconv, setlocale, _wsetlocale, strtod, _strtod_l, wcstod, _wcstod_l, strtoll, _strtoll_l, wcstoll, _wcstoll_l, strtoul, _strtoul_l, wcstoul, _wcstoul_l, atof, _atof_l, _wtof, _wtof_l]
---
# strtol, wcstol, _strtol_l, _wcstol_l
-Convert strings to a long-integer value.
+Convert strings to a **long** integer value.
## Syntax
```C
long strtol(
- const char *strSource,
- char **endptr,
+ const char *string,
+ char **end_ptr,
int base
);
long wcstol(
- const wchar_t *strSource,
- wchar_t **endptr,
+ const wchar_t *string,
+ wchar_t **end_ptr,
int base
);
long _strtol_l(
- const char *strSource,
- char **endptr,
+ const char *string,
+ char **end_ptr,
int base,
_locale_t locale
);
long _wcstol_l(
- const wchar_t *strSource,
- wchar_t **endptr,
+ const wchar_t *string,
+ wchar_t **end_ptr,
int base,
_locale_t locale
);
@@ -41,29 +43,37 @@ long _wcstol_l(
### Parameters
-*strSource*
+*string*\
Null-terminated string to convert.
-*endptr*
-Pointer to character that stops scan.
+*end_ptr*\
+An output parameter, set to point to the character after the last interpreted character. Ignored, if **NULL**.
-*base*
+*base*\
Number base to use.
-*locale*
+*locale*\
Locale to use.
## Return Value
-**strtol** returns the value represented in the string *strSource*, except when the representation would cause an overflow, in which case it returns **LONG_MAX** or **LONG_MIN**. **strtol** returns 0 if no conversion can be performed. **wcstol** returns values analogously to **strtol**. For both functions, **errno** is set to **ERANGE** if overflow or underflow occurs.
+**strtol**, **wcstol**, **_strtol_l**, and **_wcstol_l** return the value represented in *string*. They return 0 if no conversion is possible. When the representation would cause an overflow, they return **LONG_MAX** or **LONG_MIN**.
-See [_doserrno, errno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md) for more information on these and other return codes.
+**errno** is set to **ERANGE** if overflow or underflow occurs. It's set to **EINVAL** if *string* is **NULL**. Or, if *base* is nonzero and less than 2, or greater than 36. For more information on **ERANGE**, **EINVAL**, and other return codes, see [_doserrno, errno, _sys_errlist, and _sys_nerr](../../c-runtime-library/errno-doserrno-sys-errlist-and-sys-nerr.md).
## Remarks
-The **strtol** function converts *strSource* to a **long**. **strtol** stops reading the string *strSource* at the first character it cannot recognize as part of a number. This may be the terminating null character, or it may be the first numeric character greater than or equal to *base*.
+The **strtol**, **wcstol**, **_strtol_l**, and **_wcstol_l** functions convert *string* to a **long**. They stop reading *string* at the first character not recognized as part of a number. It may be the terminating-null character, or the first alphanumeric character greater than or equal to *base*.
-**wcstol** is a wide-character version of **strtol**; its *strSource* argument is a wide-character string. These functions behave identically otherwise.
+**wcstol** and **_wcstol_l** are wide-character versions of **strtol** and **_strtol_l**. Their *string* argument is a wide-character string. These functions behave identically to **strtol** and **_strtol_l** otherwise. The locale's **LC_NUMERIC** category setting determines recognition of the radix character (the fractional marker or decimal point) in *string*. The functions **strtol** and **wcstol** use the current locale. **_strtol_l** and **_wcstol_l** use the locale passed in instead. For more information, see [setlocale] and [Locale](../../c-runtime-library/locale.md).
+
+When *end_ptr* is **NULL**, it's ignored. Otherwise, a pointer to the character that stopped the scan is stored at the location pointed to by *end_ptr*. No conversion is possible if no valid digits are found, or an invalid base is specified. The value of *string* is then stored at the location pointed to by *end_ptr*.
+
+**strtol** expects *string* to point to a string of the following form:
+
+> [*whitespace*] [{**+** | **-**}] [**0** [{ **x** | **X** }]] [*alphanumerics*]
+
+Square brackets (`[ ]`) surround optional elements. Curly braces and a vertical bar (`{ | }`) surround alternatives for a single element. *whitespace* may consist of space and tab characters, which are ignored. *alphanumerics* are decimal digits or the letters 'a' through 'z' (or 'A' through 'Z'). The first character that doesn't fit this form stops the scan. If *base* is between 2 and 36, then it's used as the base of the number. If *base* is 0, the initial characters of the string pointed to by *string* are used to determine the base. If the first character is 0, and the second character isn't 'x' or 'X', the string is interpreted as an octal integer. If the first character is '0' and the second character is 'x' or 'X', the string is interpreted as a hexadecimal integer. If the first character is '1' through '9', the string is interpreted as a decimal integer. The letters 'a' through 'z' (or 'A' through 'Z') are assigned the values 10 through 35. The scan only allows letters whose values are less than *base*. The first character outside the range of the base stops the scan. For example, suppose *string* starts with "01". If *base* is 0, the scanner assumes it's an octal integer. An '8' or '9' character stops the scan.
### Generic-Text Routine Mappings
@@ -72,16 +82,6 @@ The **strtol** function converts *strSource* to a **long**. **strtol** stops rea
|**_tcstol**|**strtol**|**strtol**|**wcstol**|
|**_tcstol_l**|**_strtol_l**|**_strtol_l**|**_wcstol_l**|
-The current locale's **LC_NUMERIC** category setting determines recognition of the radix character in *strSource*; for more information, see [setlocale](setlocale-wsetlocale.md). The functions without the **_l** suffix use the current locale; **_strtol_l** and **_wcstol_l** are identical to the corresponding functions without the **_l** suffix except that they use the locale passed in instead. For more information, see [Locale](../../c-runtime-library/locale.md).
-
-If *endptr* is not **NULL**, a pointer to the character that stopped the scan is stored at the location pointed to by *endptr*. If no conversion can be performed (no valid digits were found or an invalid base was specified), the value of *strSource* is stored at the location pointed to by *endptr*.
-
-**strtol** expects *strSource* to point to a string of the following form:
-
-> [*whitespace*] [{**+** | **-**}] [**0** [{ **x** | **X** }]] [*digits* | *letters*]
-
-A *whitespace* may consist of space and tab characters, which are ignored; *digits* are one or more decimal digits; *letters* are one or more of the letters 'a' through 'z' (or 'A' through 'Z'). The first character that does not fit this form stops the scan. If *base* is between 2 and 36, then it is used as the base of the number. If *base* is 0, the initial characters of the string pointed to by *strSource* are used to determine the base. If the first character is 0 and the second character is not 'x' or 'X', the string is interpreted as an octal integer. If the first character is '0' and the second character is 'x' or 'X', the string is interpreted as a hexadecimal integer. If the first character is '1' through '9', the string is interpreted as a decimal integer. The letters 'a' through 'z' (or 'A' through 'Z') are assigned the values 10 through 35; only letters whose assigned values are less than *base* are permitted. The first character outside the range of the base stops the scan. For example, if *base* is 0 and the first character scanned is '0', an octal integer is assumed and an '8' or '9' character will stop the scan.
-
## Requirements
|Routine|Required header|
@@ -89,8 +89,9 @@ A *whitespace* may consist of space and tab characters, which are ignored; *digi
|**strtol**|\|
|**wcstol**|\ or \|
|**_strtol_l**|\|
+|**_wcstol_l**|\ or \|
-For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+The **_strtol_l** and **_wcstol_l** functions are Microsoft-specific, not part of the Standard C library. For additional compatibility information, see [Compatibility](../compatibility.md).
## Example
@@ -98,11 +99,12 @@ See the example for [strtod](strtod-strtod-l-wcstod-wcstod-l.md).
## See also
-[Data Conversion](../../c-runtime-library/data-conversion.md)
-[Locale](../../c-runtime-library/locale.md)
-[localeconv](localeconv.md)
-[setlocale, _wsetlocale](setlocale-wsetlocale.md)
-[String to Numeric Value Functions](../../c-runtime-library/string-to-numeric-value-functions.md)
-[strtod, _strtod_l, wcstod, _wcstod_l](strtod-strtod-l-wcstod-wcstod-l.md)
-[strtoul, _strtoul_l, wcstoul, _wcstoul_l](strtoul-strtoul-l-wcstoul-wcstoul-l.md)
-[atof, _atof_l, _wtof, _wtof_l](atof-atof-l-wtof-wtof-l.md)
+[Data conversion](../data-conversion.md)\
+[Locale](../locale.md)\
+[localeconv](localeconv.md)\
+[setlocale, _wsetlocale](setlocale-wsetlocale.md)\
+[String to numeric value functions](../string-to-numeric-value-functions.md)\
+[strtod, _strtod_l, wcstod, _wcstod_l](strtod-strtod-l-wcstod-wcstod-l.md)\
+[strtoll, _strtoll_l, wcstoll, _wcstoll_l](strtoll-strtoll-l-wcstoll-wcstoll-l.md)\
+[strtoul, _strtoul_l, wcstoul, _wcstoul_l](strtoul-strtoul-l-wcstoul-wcstoul-l.md)\
+[atof, _atof_l, _wtof, _wtof_l](atof-atof-l-wtof-wtof-l.md)
diff --git a/docs/c-runtime-library/reference/strtold-strtold-l-wcstold-wcstold-l.md b/docs/c-runtime-library/reference/strtold-strtold-l-wcstold-wcstold-l.md
index b9e1a7be25..6c0f4d857e 100644
--- a/docs/c-runtime-library/reference/strtold-strtold-l-wcstold-wcstold-l.md
+++ b/docs/c-runtime-library/reference/strtold-strtold-l-wcstold-wcstold-l.md
@@ -1,9 +1,10 @@
---
title: "strtold, _strtold_l, wcstold, _wcstold_l"
ms.date: "04/05/2018"
-apiname: ["wcstold", "strtold", "_strtold_l", "_wcstold_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcstold", "strtold", "_strtold_l", "_wcstold_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcstold_l", "_wcstold_l", "_tcstold", "strtold", "_strtold_l", "wcstold"]
ms.assetid: 928c0c9a-bc49-445b-8822-100eb5954115
---
diff --git a/docs/c-runtime-library/reference/strtoll-strtoll-l-wcstoll-wcstoll-l.md b/docs/c-runtime-library/reference/strtoll-strtoll-l-wcstoll-wcstoll-l.md
index da38509d45..69cb604748 100644
--- a/docs/c-runtime-library/reference/strtoll-strtoll-l-wcstoll-wcstoll-l.md
+++ b/docs/c-runtime-library/reference/strtoll-strtoll-l-wcstoll-wcstoll-l.md
@@ -1,9 +1,10 @@
---
title: "strtoll, _strtoll_l, wcstoll, _wcstoll_l"
ms.date: "11/04/2016"
-apiname: ["strtoll", "wcstoll", "_strtoll_l", "_wcstoll_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["strtoll", "wcstoll", "_strtoll_l", "_wcstoll_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_strtoll_l", "_tcstoll_l", "_tcstoll", "_wcstoll_l", "strtoll", "wcstoll"]
helpviewer_keywords: ["_tcstoll_l function", "_wcstoll_l function", "strtoll function", "wcstoll function", "_tcstoll function", "_strtoll_l function"]
ms.assetid: e2d05dcf-d3b2-4291-9e60-dee77e540fd7
diff --git a/docs/c-runtime-library/reference/strtoui64-wcstoui64-strtoui64-l-wcstoui64-l.md b/docs/c-runtime-library/reference/strtoui64-wcstoui64-strtoui64-l-wcstoui64-l.md
index 4fc2444ade..3567b3b3f9 100644
--- a/docs/c-runtime-library/reference/strtoui64-wcstoui64-strtoui64-l-wcstoui64-l.md
+++ b/docs/c-runtime-library/reference/strtoui64-wcstoui64-strtoui64-l-wcstoui64-l.md
@@ -1,9 +1,10 @@
---
title: "_strtoui64, _wcstoui64, _strtoui64_l, _wcstoui64_l"
ms.date: "11/04/2016"
-apiname: ["_strtoui64", "_strtoui64_l", "_wcstoui64", "_wcstoui64_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_strtoui64", "_strtoui64_l", "_wcstoui64", "_wcstoui64_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wcstoui64_l", "strtoui64_l", "wcstoui64", "_wcstoui64", "_strtoui64_l", "strtoui64", "_strtoui64", "wcstoui64_l"]
helpviewer_keywords: ["_strtoui64_l function", "_wcstoui64_l function", "string conversion, to integers", "wcstoui64_l function", "_strtoui64 function", "_wcstoui64 function", "wcstoui64 function", "strtoui64_l function", "strtoui64 function"]
ms.assetid: 7fcb537e-4554-4ceb-a5b6-bc09244e72ef
diff --git a/docs/c-runtime-library/reference/strtoul-strtoul-l-wcstoul-wcstoul-l.md b/docs/c-runtime-library/reference/strtoul-strtoul-l-wcstoul-wcstoul-l.md
index 3266cb59ee..342344e86f 100644
--- a/docs/c-runtime-library/reference/strtoul-strtoul-l-wcstoul-wcstoul-l.md
+++ b/docs/c-runtime-library/reference/strtoul-strtoul-l-wcstoul-wcstoul-l.md
@@ -1,9 +1,10 @@
---
title: "strtoul, _strtoul_l, wcstoul, _wcstoul_l"
ms.date: "11/04/2016"
-apiname: ["_wcstoul_l", "_strtoul_l", "strtoul", "wcstoul"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wcstoul_l", "_strtoul_l", "strtoul", "wcstoul"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strtoul", "_tcstoul", "wcstoul"]
helpviewer_keywords: ["_wcstoul_l function", "_tcstoul function", "_strtoul_l function", "string conversion, to integers", "wcstoul function", "strtoul function", "wcstoul_l function", "strtoul_l function", "tcstoul function"]
ms.assetid: 38f2afe8-8178-4e0b-8bbe-d5c6ad66e3ab
diff --git a/docs/c-runtime-library/reference/strtoull-strtoull-l-wcstoull-wcstoull-l.md b/docs/c-runtime-library/reference/strtoull-strtoull-l-wcstoull-wcstoull-l.md
index db7b4a7590..413a885419 100644
--- a/docs/c-runtime-library/reference/strtoull-strtoull-l-wcstoull-wcstoull-l.md
+++ b/docs/c-runtime-library/reference/strtoull-strtoull-l-wcstoull-wcstoull-l.md
@@ -1,9 +1,10 @@
---
title: "strtoull, _strtoull_l, wcstoull, _wcstoull_l"
ms.date: "11/04/2016"
-apiname: ["_strtoull_l", "_wcstoull_l", "strtoull", "wcstoull"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strtoull_l", "_wcstoull_l", "strtoull", "wcstoull"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_wcstoull_l", "_tcstoull", "_tcstoull_l", "wcstoull", "_strtoull_l", "strtoull"]
helpviewer_keywords: ["strtoull function", "_tcstoull_l function", "_tcstoull function", "_wcstoull_l function", "_strtoull_l function", "wcstoull function"]
ms.assetid: 36dac1cc-e901-40a0-8802-63562d6d01df
diff --git a/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md b/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md
index 842aff12b4..0defa049bf 100644
--- a/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md
+++ b/docs/c-runtime-library/reference/strtoumax-strtoumax-l-wcstoumax-wcstoumax-l.md
@@ -1,9 +1,10 @@
---
title: "strtoumax, _strtoumax_l, wcstoumax, _wcstoumax_l"
ms.date: "11/04/2016"
-apiname: ["_wcstoumax_l", "_strtoumax_l", "wcstoumax", "strtoumax"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wcstoumax_l", "_strtoumax_l", "wcstoumax", "strtoumax"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcstoumax", "_tcstoumax", "_strtoumax_l", "_wcstoumax_l", "_tcstoumax_l", "strtoumax"]
helpviewer_keywords: ["_strtoumax_l function", "conversion functions", "wcstoumax function", "_wcstoumax_l function", "strtoumax function"]
ms.assetid: 566769f9-495b-4508-b9c6-02217a578897
diff --git a/docs/c-runtime-library/reference/strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md b/docs/c-runtime-library/reference/strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md
index 37fd07e6b3..f6e927b679 100644
--- a/docs/c-runtime-library/reference/strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md
+++ b/docs/c-runtime-library/reference/strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md
@@ -1,9 +1,10 @@
---
title: "_strupr_s, _strupr_s_l, _mbsupr_s, _mbsupr_s_l, _wcsupr_s, _wcsupr_s_l"
ms.date: "11/04/2016"
-apiname: ["_strupr_s", "_strupr_s_l", "_mbsupr_s", "_wcsupr_s_l", "_mbsupr_s_l", "_wcsupr_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_strupr_s", "_strupr_s_l", "_mbsupr_s", "_wcsupr_s_l", "_mbsupr_s_l", "_wcsupr_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strupr_s", "mbsupr_s", "wcsupr_s", "_mbsupr_s_l", "mbsupr_s_l", "wcsupr_s_l", "_wcsupr_s", "_tcsupr_s_l", "_mbsupr_s", "_tcsupr_s", "strupr_s_l", "_wcsupr_s_l", "_strupr_s", "_strupr_s_l"]
helpviewer_keywords: ["mbsupr_s_l function", "strupr_s_l function", "_wcsupr_s_l function", "_tcsupr_s_l function", "mbsupr_s function", "_wcsupr_s function", "uppercase, converting strings to", "tcsupr_s function", "string conversion [C++], case", "strupr_s function", "wcsupr_s_l function", "_mbsupr_s function", "_mbsupr_s_l function", "_strupr_s_l function", "tcsupr_s_l function", "strings [C++], case", "converting case, CRT functions", "_tcsupr_s function", "strings [C++], converting case", "_strupr_s function", "wcsupr_s function"]
ms.assetid: 82d3a273-9f6f-4a26-9560-919d891e4581
@@ -99,7 +100,7 @@ The conversion is determined by the **LC_CTYPE** category setting of the locale.
In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
-The debug versions of these functions first fill the buffer with 0xFD. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
+The debug library versions of these functions first fill the buffer with 0xFE. To disable this behavior, use [_CrtSetDebugFillThreshold](crtsetdebugfillthreshold.md).
### Generic-Text Routine Mappings
diff --git a/docs/c-runtime-library/reference/strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md b/docs/c-runtime-library/reference/strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md
index ecee721b0a..7cd34a179d 100644
--- a/docs/c-runtime-library/reference/strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md
+++ b/docs/c-runtime-library/reference/strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md
@@ -1,9 +1,10 @@
---
title: "_strupr, _strupr_l, _mbsupr, _mbsupr_l, _wcsupr_l, _wcsupr"
ms.date: "11/04/2016"
-apiname: ["_mbsupr_l", "_mbsupr", "_strupr_l", "_wcsupr", "_wcsupr_l", "_strupr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_mbsupr_l", "_mbsupr", "_strupr_l", "_wcsupr", "_wcsupr_l", "_strupr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll", "api-ms-win-crt-multibyte-l1-1-0.dll", "api-ms-win-crt-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_mbsupr", "_ftcsupr", "mbsupr", "_tcsupr", "strupr_l", "_fstrupr", "_strupr", "mbsupr_l", "_wcsupr"]
helpviewer_keywords: ["tcsupr_l function", "mbsupr function", "strupr function", "uppercase, converting strings to", "wcsupr function", "_wcsupr function", "string conversion [C++], case", "ftcsupr function", "_ftcsupr function", "_wcsupr_l function", "wcsupr_l function", "strings [C++], case", "tcsupr function", "_tcsupr_l function", "_fstrupr function", "_strupr_l function", "_mbsupr_l function", "converting case, CRT functions", "fstrupr function", "mbsupr_l function", "strupr_l function", "_strupr function", "_mbsupr function", "_tcsupr function", "strings [C++], converting case"]
ms.assetid: caac8f16-c233-41b6-91ce-575ec7061b77
diff --git a/docs/c-runtime-library/reference/strupr-wcsupr.md b/docs/c-runtime-library/reference/strupr-wcsupr.md
index 52db808f18..ae5229b084 100644
--- a/docs/c-runtime-library/reference/strupr-wcsupr.md
+++ b/docs/c-runtime-library/reference/strupr-wcsupr.md
@@ -1,13 +1,16 @@
---
title: "strupr, wcsupr"
-ms.date: "11/04/2016"
-apiname: ["strupr", "wcsupr"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["strupr", "wcsupr"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strupr", "wcsupr"]
helpviewer_keywords: ["strupr function", "wcsupr function"]
ms.assetid: 17dfe1cd-3b09-4702-9f89-2207f44953e6
---
# strupr, wcsupr
-These POSIX functions are deprecated. Use the ISO C++ conformant [_strupr, _strupr_l, _mbsupr, _mbsupr_l, _wcsupr_l, _wcsupr](strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md) or security-enhanced [_strupr_s, _strupr_s_l, _mbsupr_s, _mbsupr_s_l, _wcsupr_s, _wcsupr_s_l](strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function names `strupr` and `wcsupr` are deprecated aliases for the [_strupr and _wcsupr](strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_strupr and _wcsupr](strupr-strupr-l-mbsupr-mbsupr-l-wcsupr-l-wcsupr.md) or the security-enhanced [_strupr_s and _wcsupr_s](strupr-s-strupr-s-l-mbsupr-s-mbsupr-s-l-wcsupr-s-wcsupr-s-l.md) functions instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md b/docs/c-runtime-library/reference/strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md
index 9c4baf3bbc..0ee57e4e9a 100644
--- a/docs/c-runtime-library/reference/strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md
+++ b/docs/c-runtime-library/reference/strxfrm-wcsxfrm-strxfrm-l-wcsxfrm-l.md
@@ -1,9 +1,10 @@
---
title: "strxfrm, wcsxfrm, _strxfrm_l, _wcsxfrm_l"
ms.date: "11/04/2016"
-apiname: ["strxfrm", "_wcsxfrm_l", "_strxfrm_l", "wcsxfrm"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["strxfrm", "_wcsxfrm_l", "_strxfrm_l", "wcsxfrm"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strxfrm", "_tcsxfrm", "wcsxfrm"]
helpviewer_keywords: ["strxfrm_l function", "_tcsxfrm function", "_strxfrm_l function", "strxfrm function", "wcsxfrm_l function", "wcsxfrm function", "string comparison [C++], transforming strings", "tcsxfrm function", "strings [C++], comparing locale", "_wcsxfrm_l function"]
ms.assetid: 6ba8e1f6-4484-49aa-83b8-bc2373187d9e
diff --git a/docs/c-runtime-library/reference/swab.md b/docs/c-runtime-library/reference/swab.md
index b3bafc6e6d..5390c74932 100644
--- a/docs/c-runtime-library/reference/swab.md
+++ b/docs/c-runtime-library/reference/swab.md
@@ -1,9 +1,10 @@
---
title: "_swab"
ms.date: "11/04/2016"
-apiname: ["_swab", "stdlib/_swab"]
-apilocation: ["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-utility-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_swab", "stdlib/_swab"]
+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-utility-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_swab", "stdlib/_swab"]
helpviewer_keywords: ["_swab function", "swapping bytes", "swab function", "bytes, swapping"]
ms.assetid: 017142f2-050c-4f6a-8b49-6b094f58ec94
diff --git a/docs/c-runtime-library/reference/system-wsystem.md b/docs/c-runtime-library/reference/system-wsystem.md
index 298bcdd7c7..9bf68db673 100644
--- a/docs/c-runtime-library/reference/system-wsystem.md
+++ b/docs/c-runtime-library/reference/system-wsystem.md
@@ -1,9 +1,10 @@
---
title: "system, _wsystem"
ms.date: "11/04/2016"
-apiname: ["system", "_wsystem"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["system", "_wsystem"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tsystem", "_wsystem"]
helpviewer_keywords: ["_wsystem function", "wsystem function", "tsystem function", "_tsystem function", "system function", "commands, executing", "command interpreter"]
ms.assetid: 7d3df2b6-f742-49ce-bf52-012b0aee3df5
diff --git a/docs/c-runtime-library/reference/tan-tanf-tanl.md b/docs/c-runtime-library/reference/tan-tanf-tanl.md
index 74f8b6131e..7b743ad10b 100644
--- a/docs/c-runtime-library/reference/tan-tanf-tanl.md
+++ b/docs/c-runtime-library/reference/tan-tanf-tanl.md
@@ -1,9 +1,10 @@
---
title: "tan, tanf, tanl"
ms.date: "04/10/2018"
-apiname: ["tan", "tanf", "tanl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["tan", "tanf", "tanl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tan", "tanf", "_tanl", "tanl"]
helpviewer_keywords: ["tanl function", "_tanl function", "tan function", "calculating tangents", "tangent", "tanf function", "trigonometric functions"]
ms.assetid: 36cc0ce8-9c80-4653-b354-ddb3b378b6bd
diff --git a/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md b/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md
index afcf6d8987..4653a7937a 100644
--- a/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md
+++ b/docs/c-runtime-library/reference/tanh-tanhf-tanhl.md
@@ -1,9 +1,10 @@
---
title: "tanh, tanhf, tanhl"
ms.date: "04/10/2018"
-apiname: ["tanh", "tanhf", "tanhl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["tanh", "tanhf", "tanhl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tanh", "tanhf", "tanhl", "_tanhl"]
helpviewer_keywords: ["tanhl function", "_tanhl function", "tanh function", "tanhf function", "trigonometric functions", "hyperbolic functions"]
---
diff --git a/docs/c-runtime-library/reference/tell-telli64.md b/docs/c-runtime-library/reference/tell-telli64.md
index eb95ae8c13..4f149aa9cd 100644
--- a/docs/c-runtime-library/reference/tell-telli64.md
+++ b/docs/c-runtime-library/reference/tell-telli64.md
@@ -1,9 +1,10 @@
---
title: "_tell, _telli64"
ms.date: "11/04/2016"
-apiname: ["_telli64", "_tell"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_telli64", "_tell"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tell", "telli64", "_telli64", "_tell"]
helpviewer_keywords: ["tell function", "file pointers [C++], getting", "_tell function", "file pointers [C++]", "telli64 function", "_telli64 function"]
ms.assetid: 1500e8f9-8fec-4253-9eec-ec66125dfc9b
diff --git a/docs/c-runtime-library/reference/tell.md b/docs/c-runtime-library/reference/tell.md
index 5375faac64..132311f40e 100644
--- a/docs/c-runtime-library/reference/tell.md
+++ b/docs/c-runtime-library/reference/tell.md
@@ -1,13 +1,16 @@
---
title: "tell"
-ms.date: "11/04/2016"
-apiname: ["tell"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["tell"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tell"]
helpviewer_keywords: ["tell function"]
ms.assetid: 3a92a40d-f472-4545-a493-f57c340ee798
---
# tell
-This POSIX function is deprecated. Use the ISO C++ conformant [_tell](tell-telli64.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `tell` is a deprecated alias for the [_tell](tell-telli64.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_tell](tell-telli64.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/tempnam-dbg-wtempnam-dbg.md b/docs/c-runtime-library/reference/tempnam-dbg-wtempnam-dbg.md
index 21e6708473..515db0344a 100644
--- a/docs/c-runtime-library/reference/tempnam-dbg-wtempnam-dbg.md
+++ b/docs/c-runtime-library/reference/tempnam-dbg-wtempnam-dbg.md
@@ -1,9 +1,10 @@
---
title: "_tempnam_dbg, _wtempnam_dbg"
ms.date: "11/04/2016"
-apiname: ["_wtempnam_dbg", "_tempnam_dbg"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_wtempnam_dbg", "_tempnam_dbg"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wtempnam_dbg", "tempnam_dbg", "_tempnam_dbg", "_wtempnam_dbg"]
helpviewer_keywords: ["file names [C++], creating temporary", "tempnam_dbg function", "temporary files, creating", "file names [C++], temporary", "wtempnam_dbg function", "_tempnam_dbg function", "_wtempnam_dbg function"]
ms.assetid: e3760bb4-bb01-4808-b689-2c45af56a170
diff --git a/docs/c-runtime-library/reference/tempnam-wtempnam-tmpnam-wtmpnam.md b/docs/c-runtime-library/reference/tempnam-wtempnam-tmpnam-wtmpnam.md
index ca9c082fda..3458d3df23 100644
--- a/docs/c-runtime-library/reference/tempnam-wtempnam-tmpnam-wtmpnam.md
+++ b/docs/c-runtime-library/reference/tempnam-wtempnam-tmpnam-wtmpnam.md
@@ -1,9 +1,10 @@
---
title: "_tempnam, _wtempnam, tmpnam, _wtmpnam"
ms.date: "11/04/2016"
-apiname: ["_wtempnam", "_wtmpnam", "tmpnam", "_tempnam"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wtempnam", "_wtmpnam", "tmpnam", "_tempnam"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wtempnam", "_wtmpnam", "wtmpnam", "tmpnam", "_wtempnam", "_tempnam"]
helpviewer_keywords: ["wtempnam function", "file names [C++], creating temporary", "_tempnam function", "ttmpnam function", "tmpnam function", "tempnam function", "wtmpnam function", "temporary files, creating", "file names [C++], temporary", "_ttmpnam function", "_wtmpnam function", "_wtempnam function"]
ms.assetid: 3ce75f0f-5e30-42a6-9791-8d7cbfe70fca
diff --git a/docs/c-runtime-library/reference/tempnam.md b/docs/c-runtime-library/reference/tempnam.md
index 0802faf8df..5f14c71657 100644
--- a/docs/c-runtime-library/reference/tempnam.md
+++ b/docs/c-runtime-library/reference/tempnam.md
@@ -1,13 +1,16 @@
---
title: "tempnam"
-ms.date: "11/04/2016"
-apiname: ["tempnam"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["tempnam"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tempnam"]
helpviewer_keywords: ["tempnam function"]
ms.assetid: 42446733-f131-470f-b4d0-96918becab11
---
# tempnam
-This POSIX function is deprecated. Use the ISO C++ conformant [_tempnam](tempnam-wtempnam-tmpnam-wtmpnam.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `tempnam` is a deprecated alias for the [_tempnam](tempnam-wtempnam-tmpnam-wtmpnam.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_tempnam](tempnam-wtempnam-tmpnam-wtmpnam.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/terminate-crt.md b/docs/c-runtime-library/reference/terminate-crt.md
index f283c0760c..511af14694 100644
--- a/docs/c-runtime-library/reference/terminate-crt.md
+++ b/docs/c-runtime-library/reference/terminate-crt.md
@@ -1,9 +1,10 @@
---
title: "terminate (CRT)"
ms.date: "11/04/2016"
-apiname: ["terminate"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["terminate"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["terminate"]
helpviewer_keywords: ["terminate function", "exception handling, termination"]
ms.assetid: 90e67402-08e9-4b2a-962c-66a8afd3ccb4
diff --git a/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md b/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md
index 2aed639053..f086d09833 100644
--- a/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md
+++ b/docs/c-runtime-library/reference/tgamma-tgammaf-tgammal.md
@@ -1,9 +1,10 @@
---
title: "tgamma, tgammaf, tgammal"
ms.date: "04/05/2018"
-apiname: ["tgamma", "tgammaf", "tgammal"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["tgamma", "tgammaf", "tgammal"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tgamma", "tgammaf", "tgammal", "math/tgamma", "math/tgammaf", "math/tgammal"]
helpviewer_keywords: ["tgamma function", "tgammaf function", "tgammal function"]
ms.assetid: f1bd2681-8af2-48a9-919d-5358fd068acd
diff --git a/docs/c-runtime-library/reference/time-time32-time64.md b/docs/c-runtime-library/reference/time-time32-time64.md
index 87792d855f..2cf89e71ea 100644
--- a/docs/c-runtime-library/reference/time-time32-time64.md
+++ b/docs/c-runtime-library/reference/time-time32-time64.md
@@ -1,9 +1,10 @@
---
title: "time, _time32, _time64"
ms.date: "11/06/2018"
-apiname: ["time", "_time64", "_time32"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["time", "_time64", "_time32"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["time", "_time64", "time/time", "time/_time32", "time/_time64", "_time32"]
helpviewer_keywords: ["time32 function", "_time32 function", "_time64 function", "time functions", "system time", "time64 function"]
ms.assetid: 280e00f2-2b93-4ece-94cd-e048484c6cc7
diff --git a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md
index 733afa509e..dee3aad5a4 100644
--- a/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md
+++ b/docs/c-runtime-library/reference/timespec-get-timespec32-get-timespec64-get1.md
@@ -1,9 +1,10 @@
---
title: "timespec_get, _timespec32_get, _timespec64_get1"
ms.date: "11/04/2016"
-apiname: ["timespec_get", "_timespec32_get", "_timespec64_get"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["timespec_get", "_timespec32_get", "_timespec64_get"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["timespec_get", "_timespec32_get", "_timespec64_get", "time/timespec_get", "time/_timespec32_get", "time/_timespec64_get", "timespec", "_timespec32", "_timespec64"]
helpviewer_keywords: ["timespec_get function", "_timespec32_get function", "_timespec64_get function"]
ms.assetid: ed757258-b4f2-4c1d-a91b-22ea6ffce4ab
diff --git a/docs/c-runtime-library/reference/tmpfile-s.md b/docs/c-runtime-library/reference/tmpfile-s.md
index 532fca079e..7021b2be0d 100644
--- a/docs/c-runtime-library/reference/tmpfile-s.md
+++ b/docs/c-runtime-library/reference/tmpfile-s.md
@@ -1,9 +1,10 @@
---
title: "tmpfile_s"
ms.date: "11/04/2016"
-apiname: ["tmpfile_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["tmpfile_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tmpfile_s"]
helpviewer_keywords: ["temporary files", "tmpfile_s function", "temporary files, creating"]
ms.assetid: 50879c69-215e-425a-a2a3-8b5467121eae
diff --git a/docs/c-runtime-library/reference/tmpfile.md b/docs/c-runtime-library/reference/tmpfile.md
index c33b753060..b01dd1b05b 100644
--- a/docs/c-runtime-library/reference/tmpfile.md
+++ b/docs/c-runtime-library/reference/tmpfile.md
@@ -1,9 +1,10 @@
---
title: "tmpfile"
ms.date: "11/04/2016"
-apiname: ["tmpfile"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["tmpfile"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tmpfile"]
helpviewer_keywords: ["temporary files", "tmpfile function", "temporary files, creating"]
ms.assetid: c4a4dc24-70da-438d-ae4e-98352d88e375
diff --git a/docs/c-runtime-library/reference/tmpnam-s-wtmpnam-s.md b/docs/c-runtime-library/reference/tmpnam-s-wtmpnam-s.md
index 0036328544..87a1dcfae1 100644
--- a/docs/c-runtime-library/reference/tmpnam-s-wtmpnam-s.md
+++ b/docs/c-runtime-library/reference/tmpnam-s-wtmpnam-s.md
@@ -1,9 +1,10 @@
---
title: "tmpnam_s, _wtmpnam_s"
ms.date: "11/04/2016"
-apiname: ["tmpnam_s", "_wtmpnam_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["tmpnam_s", "_wtmpnam_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["tmpnam_s", "_wtmpnam_s", "L_tmpnam_s"]
helpviewer_keywords: ["tmpnam_s function", "file names [C++], creating temporary", "_wtmpnam_s function", "L_tmpnam_s constant", "temporary files, creating", "file names [C++], temporary", "wtmpnam_s function"]
ms.assetid: e70d76dc-49f5-4aee-bfa2-f1baa2bcd29f
diff --git a/docs/c-runtime-library/reference/toascii-toascii.md b/docs/c-runtime-library/reference/toascii-toascii.md
index 6d1373d2cd..336cf1a1d7 100644
--- a/docs/c-runtime-library/reference/toascii-toascii.md
+++ b/docs/c-runtime-library/reference/toascii-toascii.md
@@ -1,9 +1,10 @@
---
title: "toascii, __toascii"
ms.date: "11/04/2016"
-apiname: ["__toascii"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["__toascii"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__toascii", "toascii", "ctype/toascii", "ctype/__toascii"]
helpviewer_keywords: ["toascii function", "string conversion, to ASCII characters", "__toascii function", "ASCII characters, converting to"]
ms.assetid: a07c0608-b0e2-4da2-a20c-7b64d6a9b77c
diff --git a/docs/c-runtime-library/reference/tolower-tolower-towlower-tolower-l-towlower-l.md b/docs/c-runtime-library/reference/tolower-tolower-towlower-tolower-l-towlower-l.md
index 35b6462247..36d2b29207 100644
--- a/docs/c-runtime-library/reference/tolower-tolower-towlower-tolower-l-towlower-l.md
+++ b/docs/c-runtime-library/reference/tolower-tolower-towlower-tolower-l-towlower-l.md
@@ -1,9 +1,10 @@
---
title: "tolower, _tolower, towlower, _tolower_l, _towlower_l"
ms.date: "11/04/2016"
-apiname: ["_tolower_l", "towlower", "tolower", "_tolower", "_towlower_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_tolower_l", "towlower", "tolower", "_tolower", "_towlower_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "api-ms-win-crt-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_totlower", "tolower", "_tolower", "towlower"]
helpviewer_keywords: ["tolower_l function", "_tolower_l function", "totlower function", "string conversion, to different characters", "lowercase, converting to", "tolower function", "string conversion, case", "towlower function", "_tolower function", "_totlower function", "towlower_l function", "case, converting", "characters, converting", "_towlower_l function"]
ms.assetid: 86e0fc02-94ae-4472-9631-bf8e96f67b92
diff --git a/docs/c-runtime-library/reference/toupper-toupper-towupper-toupper-l-towupper-l.md b/docs/c-runtime-library/reference/toupper-toupper-towupper-toupper-l-towupper-l.md
index ba8e32cab7..882aee2434 100644
--- a/docs/c-runtime-library/reference/toupper-toupper-towupper-toupper-l-towupper-l.md
+++ b/docs/c-runtime-library/reference/toupper-toupper-towupper-toupper-l-towupper-l.md
@@ -1,9 +1,10 @@
---
title: "toupper, _toupper, towupper, _toupper_l, _towupper_l"
ms.date: "11/04/2016"
-apiname: ["_toupper_l", "towupper", "toupper", "_towupper_l", "_toupper"]
-apilocation: ["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-string-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_toupper_l", "towupper", "toupper", "_towupper_l", "_toupper"]
+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-string-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["towupper", "_toupper", "_totupper", "toupper"]
helpviewer_keywords: ["_toupper function", "towupper function", "uppercase, converting strings to", "totupper function", "string conversion, to different characters", "towupper_l function", "toupper_l function", "string conversion, case", "_toupper_l function", "_towupper_l function", "_totupper function", "case, converting", "characters, converting", "toupper function"]
ms.assetid: cdef1b0f-b19c-4d11-b7d2-cf6334c9b6cc
diff --git a/docs/c-runtime-library/reference/towctrans.md b/docs/c-runtime-library/reference/towctrans.md
index a1586cf549..4a056157e7 100644
--- a/docs/c-runtime-library/reference/towctrans.md
+++ b/docs/c-runtime-library/reference/towctrans.md
@@ -1,9 +1,10 @@
---
title: "towctrans"
ms.date: "11/04/2016"
-apiname: ["towctrans"]
-apilocation: ["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-string-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["towctrans"]
+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-string-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["towctrans"]
helpviewer_keywords: ["towctrans function"]
ms.assetid: 1ed1e70d-7b31-490f-a7d9-42564b5924ca
diff --git a/docs/c-runtime-library/reference/trunc-truncf-truncl.md b/docs/c-runtime-library/reference/trunc-truncf-truncl.md
index 2774156c53..5b652f0253 100644
--- a/docs/c-runtime-library/reference/trunc-truncf-truncl.md
+++ b/docs/c-runtime-library/reference/trunc-truncf-truncl.md
@@ -1,9 +1,10 @@
---
title: "trunc, truncf, truncl"
ms.date: "04/05/2018"
-apiname: ["trunc", "truncf", "truncl"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["trunc", "truncf", "truncl"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["trunc", "truncf", "truncl", "math/trunc", "math/truncf", "math/truncl"]
helpviewer_keywords: ["trunc function", "truncf function", "truncl function"]
ms.assetid: de2038ac-ac0b-483e-870c-e8992dcd4fd0
diff --git a/docs/c-runtime-library/reference/tzset.md b/docs/c-runtime-library/reference/tzset.md
index 654f19bc86..29a508925f 100644
--- a/docs/c-runtime-library/reference/tzset.md
+++ b/docs/c-runtime-library/reference/tzset.md
@@ -1,9 +1,10 @@
---
title: "_tzset"
ms.date: "11/04/2016"
-apiname: ["_tzset"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_tzset"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tzset"]
helpviewer_keywords: ["_tzset function", "time environment variables", "environment variables, setting time"]
ms.assetid: 3f6ed537-b414-444d-b272-5dd377481930
diff --git a/docs/c-runtime-library/reference/umask-s.md b/docs/c-runtime-library/reference/umask-s.md
index 62f65712d2..dbb8c42884 100644
--- a/docs/c-runtime-library/reference/umask-s.md
+++ b/docs/c-runtime-library/reference/umask-s.md
@@ -1,9 +1,10 @@
---
title: "_umask_s"
ms.date: "11/04/2016"
-apiname: ["_umask_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_umask_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["unmask_s", "_umask_s"]
helpviewer_keywords: ["masks, file-permission-setting", "_umask_s function", "masks", "file permissions [C++]", "umask_s function", "files [C++], permission settings for"]
ms.assetid: 70898f61-bf2b-4d8d-8291-0ccaa6d33145
diff --git a/docs/c-runtime-library/reference/umask.md b/docs/c-runtime-library/reference/umask.md
index f2b83f6f00..d01437617c 100644
--- a/docs/c-runtime-library/reference/umask.md
+++ b/docs/c-runtime-library/reference/umask.md
@@ -1,9 +1,10 @@
---
title: "_umask"
ms.date: "11/04/2016"
-apiname: ["_umask"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_umask"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_umask"]
helpviewer_keywords: ["masks, file-permission-setting", "_umask function", "masks", "umask function", "file permissions [C++]", "files [C++], permission settings for"]
ms.assetid: 5e9a13ba-5321-4536-8721-6afb6f4c8483
diff --git a/docs/c-runtime-library/reference/uncaught-exception.md b/docs/c-runtime-library/reference/uncaught-exception.md
index 1a4362855a..90876dd0aa 100644
--- a/docs/c-runtime-library/reference/uncaught-exception.md
+++ b/docs/c-runtime-library/reference/uncaught-exception.md
@@ -1,9 +1,10 @@
---
title: "__uncaught_exception"
ms.date: "11/04/2016"
-apiname: ["__uncaught_exception"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["__uncaught_exception"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__uncaught_exception"]
helpviewer_keywords: ["__uncaught_exception"]
ms.assetid: 4d9b75c6-c9c7-4876-b761-ea9ab1925e96
diff --git a/docs/c-runtime-library/reference/unexpected-crt.md b/docs/c-runtime-library/reference/unexpected-crt.md
index 425cf805b2..f3f2f257bc 100644
--- a/docs/c-runtime-library/reference/unexpected-crt.md
+++ b/docs/c-runtime-library/reference/unexpected-crt.md
@@ -1,9 +1,10 @@
---
title: "unexpected (CRT)"
ms.date: "11/04/2016"
-apiname: ["unexpected"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["unexpected"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["unexpected"]
helpviewer_keywords: ["unexpected function"]
ms.assetid: 2f873763-15ad-4556-a924-dcf28f2b52b4
diff --git a/docs/c-runtime-library/reference/ungetc-nolock-ungetwc-nolock.md b/docs/c-runtime-library/reference/ungetc-nolock-ungetwc-nolock.md
index 2399e1a458..36e853d26c 100644
--- a/docs/c-runtime-library/reference/ungetc-nolock-ungetwc-nolock.md
+++ b/docs/c-runtime-library/reference/ungetc-nolock-ungetwc-nolock.md
@@ -1,9 +1,10 @@
---
title: "_ungetc_nolock, _ungetwc_nolock"
ms.date: "11/04/2016"
-apiname: ["_ungetwc_nolock", "_ungetc_nolock"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ungetwc_nolock", "_ungetc_nolock"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ungettc_nolock", "ungetwc_nolock", "ungetc_nolock", "_ungetc_nolock", "_ungetwc_nolock"]
helpviewer_keywords: ["_ungettc_nolock function", "_ungetwc_nolock function", "characters, pushing back onto stream", "_ungetc_nolock function", "ungetwc_nolock function", "ungettc_nolock function", "ungetc_nolock function"]
ms.assetid: aa02d5c2-1be1-46d2-a8c4-b61269e9d465
diff --git a/docs/c-runtime-library/reference/ungetc-ungetwc.md b/docs/c-runtime-library/reference/ungetc-ungetwc.md
index 1823ad918a..97b5949526 100644
--- a/docs/c-runtime-library/reference/ungetc-ungetwc.md
+++ b/docs/c-runtime-library/reference/ungetc-ungetwc.md
@@ -1,9 +1,10 @@
---
title: "ungetc, ungetwc"
ms.date: "11/04/2016"
-apiname: ["ungetwc", "ungetc"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["ungetwc", "ungetc"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ungettc", "ungetwc", "ungetc"]
helpviewer_keywords: ["ungetwc function", "ungettc function", "characters, pushing back onto stream", "_ungettc function", "ungetc function"]
ms.assetid: e0754f3a-b4c6-408f-90c7-e6387b830d84
diff --git a/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md b/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md
index 877f45c7eb..046d928340 100644
--- a/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md
+++ b/docs/c-runtime-library/reference/ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md
@@ -1,9 +1,10 @@
---
title: "_ungetch, _ungetwch, _ungetch_nolock, _ungetwch_nolock"
ms.date: "11/04/2016"
-apiname: ["_ungetch_nolock", "_ungetwch_nolock", "_ungetwch", "_ungetch"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_ungetch_nolock", "_ungetwch_nolock", "_ungetwch", "_ungetch"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-conio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_ungetch_nolock", "ungetwch", "ungetch_nolock", "_ungetwch", "ungetch", "ungetwch_nolock", "_ungetch", "_ungettch_nolock", "_ungettch", "_ungetwch_nolock"]
helpviewer_keywords: ["_ungetch function", "ungetwch function", "characters, pushing back to console", "_ungettch_nolock function", "ungettch function", "_ungettch function", "ungetch_nolock function", "ungettch_nolock function", "_ungetwch_nolock function", "_ungetch_nolock function", "ungetwch_nolock function", "_ungetwch function"]
ms.assetid: 70ae71c6-228c-4883-a57d-de6d5f873825
diff --git a/docs/c-runtime-library/reference/ungetch.md b/docs/c-runtime-library/reference/ungetch.md
index f551f9e25f..1ca976d576 100644
--- a/docs/c-runtime-library/reference/ungetch.md
+++ b/docs/c-runtime-library/reference/ungetch.md
@@ -1,16 +1,19 @@
---
title: "ungetch"
-ms.date: "11/04/2016"
-apiname: ["ungetch"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["ungetch"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["ungetch"]
helpviewer_keywords: ["ungetch function"]
ms.assetid: 6921232f-6317-41cd-948b-91d56a11bc0e
---
# ungetch
-This POSIX function is deprecated. Use the ISO C++ conformant [_ungetch](ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md) instead.
+The Microsoft-specific function name `ungetch` is a deprecated alias for the [_ungetch](ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_ungetch](ungetch-ungetwch-ungetch-nolock-ungetwch-nolock.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
> [!IMPORTANT]
-> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
\ No newline at end of file
+> This API cannot be used in applications that execute in the Windows Runtime. For more information, see [CRT functions not supported in Universal Windows Platform apps](../../cppcx/crt-functions-not-supported-in-universal-windows-platform-apps.md).
diff --git a/docs/c-runtime-library/reference/unlink-wunlink.md b/docs/c-runtime-library/reference/unlink-wunlink.md
index 3fe2cec4a5..85db1ab4e8 100644
--- a/docs/c-runtime-library/reference/unlink-wunlink.md
+++ b/docs/c-runtime-library/reference/unlink-wunlink.md
@@ -1,9 +1,10 @@
---
title: "_unlink, _wunlink"
ms.date: "11/04/2016"
-apiname: ["_unlink", "_wunlink"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_unlink", "_wunlink"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tunlink", "_unlink", "wunlink", "_wunlink"]
helpviewer_keywords: ["files [C++], deleting", "_wunlink function", "wunlink function", "unlink function", "_unlink function", "tunlink function", "files [C++], removing", "_tunlink function"]
ms.assetid: 5e4f5f1b-1e99-4391-9b18-9ac63c32fae8
diff --git a/docs/c-runtime-library/reference/unlink.md b/docs/c-runtime-library/reference/unlink.md
index 07b68b4e6d..f5f48b2c17 100644
--- a/docs/c-runtime-library/reference/unlink.md
+++ b/docs/c-runtime-library/reference/unlink.md
@@ -1,13 +1,16 @@
---
title: "unlink"
-ms.date: "11/04/2016"
-apiname: ["unlink"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["unlink"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["unlink"]
helpviewer_keywords: ["unlink function"]
ms.assetid: 2cd82055-5770-48be-88ee-4b2c70541c46
---
# unlink
-This POSIX function is deprecated. Use the ISO C++ conformant [_unlink](unlink-wunlink.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function name `unlink` is a deprecated alias for the [_unlink](unlink-wunlink.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_unlink](unlink-wunlink.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/unlock-file.md b/docs/c-runtime-library/reference/unlock-file.md
index d0af77dea3..4e241118b3 100644
--- a/docs/c-runtime-library/reference/unlock-file.md
+++ b/docs/c-runtime-library/reference/unlock-file.md
@@ -1,9 +1,10 @@
---
title: "_unlock_file"
ms.date: "11/04/2016"
-apiname: ["_unlock_file"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_unlock_file"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-filesystem-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_unlock_file", "unlock_file"]
helpviewer_keywords: ["files [C++], unlocking", "unlock_file function", "_unlock_file function", "unlocking files"]
ms.assetid: cf380a51-6d3a-4f38-bd64-2d4fb57b4369
diff --git a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md
index d2c6807687..72d65d84e5 100644
--- a/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md
+++ b/docs/c-runtime-library/reference/utime-utime32-utime64-wutime-wutime32-wutime64.md
@@ -1,9 +1,10 @@
---
title: "_utime, _utime32, _utime64, _wutime, _wutime32, _wutime64"
ms.date: "11/04/2016"
-apiname: ["_utime64", "_utime", "_wutime", "_wutime64", "_wutime32", "_utime32"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_utime64", "_utime", "_wutime", "_wutime64", "_wutime32", "_utime32"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-time-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tutime", "_utime64", "wutime", "utime32", "wutime64", "_utime", "wutime32", "_wutime", "utime", "utime64", "_wutime64", "_utime32", "_tutime64", "_wutime32"]
helpviewer_keywords: ["tutime function", "utime32 function", "utime64 function", "_utime function", "_tutime32 function", "time [C++], file modification", "wutime function", "_wutime function", "_wutime32 function", "_tutime64 function", "_tutime function", "files [C++], modification time", "_wutime64 function", "_utime32 function", "utime function", "_utime64 function", "wutime64 function", "wutime32 function", "tutime64 function", "tutime32 function"]
ms.assetid: 8d482d40-19b9-4591-bfee-5d7f601d1a9e
diff --git a/docs/c-runtime-library/reference/va-arg-va-copy-va-end-va-start.md b/docs/c-runtime-library/reference/va-arg-va-copy-va-end-va-start.md
index 8ea4a56086..071b76409b 100644
--- a/docs/c-runtime-library/reference/va-arg-va-copy-va-end-va-start.md
+++ b/docs/c-runtime-library/reference/va-arg-va-copy-va-end-va-start.md
@@ -1,9 +1,10 @@
---
title: "va_arg, va_copy, va_end, va_start"
ms.date: "11/04/2016"
-apiname: ["va_arg", "va_end", "va_copy", "va_start"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["va_arg", "va_end", "va_copy", "va_start"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["va_arg", "va_start", "va_list", "va_alist", "va_dcl", "va_copy", "va_end"]
helpviewer_keywords: ["variable argument lists, accessing", "va_start macro", "va_arg macro", "va_end macro", "arguments [C++], argument lists", "va_list macro", "va_dcl macro", "va_alist macro", "va_copy macro"]
ms.assetid: a700dbbd-bfe5-4077-87b6-3a07af74a907
diff --git a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md
index eda3d124de..eb5912bdd1 100644
--- a/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vcprintf-p-vcprintf-p-l-vcwprintf-p-vcwprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_vcprintf_p, _vcprintf_p_l, _vcwprintf_p, _vcwprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_vcprintf_p", "_vcwprintf_p_l", "_vcprintf_p_l", "_vcwprintf_p"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vcprintf_p", "_vcwprintf_p_l", "_vcprintf_p_l", "_vcwprintf_p"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vcwprintf_p", "vcprintf_p_l", "_vcprintf_p", "_vcprintf_p_l", "vcwprintf_p_l", "vcprintf_p", "_vcwprintf_p", "_vcwprintf_p_l"]
helpviewer_keywords: ["_vtcprintf_p_l function", "vcprintf_p_l function", "_vcprintf_p_l function", "vtcprintf_p_l function", "vcprintf_p function", "_vcwprintf_p function", "_vcprintf_p function", "vcwprintf_p function", "vcwprintf_p_l function", "vtcprintf_p function", "_vcwprintf_p_l function", "_vtcprintf_p function"]
ms.assetid: 611024cc-90e7-41db-8e85-145ca95012b1
diff --git a/docs/c-runtime-library/reference/vcprintf-s-vcprintf-s-l-vcwprintf-s-vcwprintf-s-l.md b/docs/c-runtime-library/reference/vcprintf-s-vcprintf-s-l-vcwprintf-s-vcwprintf-s-l.md
index 9ba05f0083..0c8ff7423c 100644
--- a/docs/c-runtime-library/reference/vcprintf-s-vcprintf-s-l-vcwprintf-s-vcwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vcprintf-s-vcprintf-s-l-vcwprintf-s-vcwprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "_vcprintf_s, _vcprintf_s_l, _vcwprintf_s, _vcwprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_vcprintf_s", "_vcprintf_s_l", "_vcwprintf_s", "_vcwprintf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vcprintf_s", "_vcprintf_s_l", "_vcwprintf_s", "_vcwprintf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vcprintf_s", "vcwprintf_s_l", "_vcwprintf_s", "_vcwprintf_s_l", "_vcprintf_s_l", "_vtcprintf_s", "vcwprintf_s", "vcprintf_s_l", "_vcprintf_s"]
helpviewer_keywords: ["_vtcprintf_s_l function", "_vcwprintf_s_l function", "_vtcprintf_s function", "vtcprintf_s_l function", "vcprintf_s_l function", "_vcprintf_s function", "_vcwprintf_s function", "vcwprintf_s_l function", "vcwprintf_s function", "vcprintf_s function", "_vcprintf_s_l function", "vtcprintf_s function", "formatted text [C++]"]
ms.assetid: 5a46d45a-30db-45df-9850-455cbdac5636
diff --git a/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md b/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md
index ec527ef658..a4fc173348 100644
--- a/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md
+++ b/docs/c-runtime-library/reference/vcprintf-vcprintf-l-vcwprintf-vcwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "_vcprintf, _vcprintf_l, _vcwprintf, _vcwprintf_l"
ms.date: "11/04/2016"
-apiname: ["_vcwprintf", "_vcprintf_l", "_vcwprintf_l", "_vcprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vcwprintf", "_vcprintf_l", "_vcwprintf_l", "_vcprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vcwprintf_l", "_vtcprintf", "vcwprintf", "_vcwprintf", "vcprintf_l", "_vcprintf_l", "_vcprintf", "vcprintf", "vcwprintf_l"]
helpviewer_keywords: ["vcwprintf function", "_vcwprintf_l function", "_vcprintf function", "_vcprintf_l function", "vtcprintf_l function", "vcprintf function", "vcprintf_l function", "_vtcprintf function", "_vcwprintf function", "_vtcprintf_l function", "vcwprintf_l function", "vtcprintf function", "formatted text [C++]"]
ms.assetid: 4ef8d237-6200-4b66-8731-8c57e5624bb1
diff --git a/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md b/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md
index 16e9f9cd36..13c3222176 100644
--- a/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vfprintf-p-vfprintf-p-l-vfwprintf-p-vfwprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_vfprintf_p, _vfprintf_p_l, _vfwprintf_p, _vfwprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_vfprintf_p", "_vfwprintf_p", "_vfprintf_p_l", "_vfwprintf_p_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vfprintf_p", "_vfwprintf_p", "_vfprintf_p_l", "_vfwprintf_p_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vfwprintf_p_l", "_vfprintf_p", "vfwprintf_p_l", "vfwprintf_p", "vfprintf_p_l", "_vfwprintf_p", "_vftprintf_p", "_vfprintf_p_l", "vfprintf_p"]
helpviewer_keywords: ["vfprintf_p_l function", "_vftprintf_p_l function", "_vfprintf_p function", "vfprintf_p function", "vftprintf_p_l function", "_vfprintf_p_l function", "_vftprintf_p function", "_vfwprintf_p_l function", "vfwprintf_p_l function", "_vfwprintf_p function", "vftprintf_p function", "formatted text [C++]", "vfwprintf_p function"]
ms.assetid: 4d4a0914-4175-4b65-9ca1-037c4ef29147
diff --git a/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md b/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md
index fcb5b1a980..0b85c42a1c 100644
--- a/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vfprintf-s-vfprintf-s-l-vfwprintf-s-vfwprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "vfprintf_s, _vfprintf_s_l, vfwprintf_s, _vfwprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["vfwprintf_s", "_vfprintf_s_l", "vfprintf_s", "_vfwprintf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vfwprintf_s", "_vfprintf_s_l", "vfprintf_s", "_vfwprintf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vftprintf_s", "vfwprintf_s", "vfprintf_s"]
helpviewer_keywords: ["vfprintf_s_l function", "vfwprintf_s_l function", "vfwprintf_s function", "_vfprintf_s_l function", "_vfwprintf_s_l function", "vftprintf_s_l function", "vfprintf_s function", "_vftprintf_s_l function", "formatted text [C++]", "_vftprintf_s function"]
ms.assetid: eab6f563-46e2-4806-963f-2b23f339ecdc
diff --git a/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md b/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md
index 1b738edbee..ff4e73839f 100644
--- a/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md
+++ b/docs/c-runtime-library/reference/vfprintf-vfprintf-l-vfwprintf-vfwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "vfprintf, _vfprintf_l, vfwprintf, _vfwprintf_l"
ms.date: "11/04/2016"
-apiname: ["_vfprintf_l", "vfprintf", "vfwprintf", "_vfwprintf_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vfprintf_l", "vfprintf", "vfwprintf", "_vfwprintf_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vfwprintf", "_vftprintf", "vfprintf"]
helpviewer_keywords: ["_vfwprintf_l function", "_vftprintf function", "vfprintf function", "_vftprintf_l function", "vfprintf_l function", "vftprintf_l function", "vfwprintf_l function", "vftprintf function", "vfwprintf function", "_vfprintf_l function", "formatted text [C++]"]
ms.assetid: 4443be50-cedf-40b2-b3e2-ff2b3af3b666
diff --git a/docs/c-runtime-library/reference/vfscanf-s-vfwscanf-s.md b/docs/c-runtime-library/reference/vfscanf-s-vfwscanf-s.md
index 1dfefef9af..551da5c162 100644
--- a/docs/c-runtime-library/reference/vfscanf-s-vfwscanf-s.md
+++ b/docs/c-runtime-library/reference/vfscanf-s-vfwscanf-s.md
@@ -1,9 +1,10 @@
---
title: "vfscanf_s, vfwscanf_s"
ms.date: "11/04/2016"
-apiname: ["vfscanf_s", "vfwscanf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vfscanf_s", "vfwscanf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vfscanf_s", "vfwscanf_s", "_vftscanf_s"]
ms.assetid: 9b0133f0-9a18-4581-b24b-3b72683ad432
---
diff --git a/docs/c-runtime-library/reference/vfscanf-vfwscanf.md b/docs/c-runtime-library/reference/vfscanf-vfwscanf.md
index b49b9aabf3..67990e80eb 100644
--- a/docs/c-runtime-library/reference/vfscanf-vfwscanf.md
+++ b/docs/c-runtime-library/reference/vfscanf-vfwscanf.md
@@ -1,9 +1,10 @@
---
title: "vfscanf, vfwscanf"
ms.date: "11/04/2016"
-apiname: ["vfwscanf", "vfscanf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vfwscanf", "vfscanf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vfwscanf", "_vftscanf", "vfscanf"]
ms.assetid: c06450ef-03f1-4d24-a8ac-d2dd98847918
---
diff --git a/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md b/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md
index 5c53fde028..77b121d2a5 100644
--- a/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vprintf-p-vprintf-p-l-vwprintf-p-vwprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_vprintf_p, _vprintf_p_l, _vwprintf_p, _vwprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_vwprintf_p", "_vprintf_p", "_vprintf_p_l", "_vwprintf_p_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vwprintf_p", "_vprintf_p", "_vprintf_p_l", "_vwprintf_p_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vwprintf_p_l", "vprintf_p", "_vprintf_p_l", "_vwprintf_p", "vprintf_p_l", "vwprintf_p_l", "vwprintf_p", "vtprintf_p", "_vtprintf_p", "_vprintf_p"]
helpviewer_keywords: ["_vtprintf_p_l function", "_vtprintf_p function", "vtprintf_p function", "_vwprintf_p function", "_vwprintf_p_l function", "_vprintf_p function", "_vprintf_p_l function", "vprintf_p_l function", "vwprintf_p function", "vprintf_p function", "vtprintf_p_l function", "vwprintf_p_l function", "formatted text [C++]"]
ms.assetid: 3f99bde3-c891-493d-908f-30559c421058
diff --git a/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md b/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md
index b7c2de930b..57b3223de6 100644
--- a/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vprintf-s-vprintf-s-l-vwprintf-s-vwprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "vprintf_s, _vprintf_s_l, vwprintf_s, _vwprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_vwprintf_s_l", "vwprintf_s", "_vprintf_s_l", "vprintf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vwprintf_s_l", "vwprintf_s", "_vprintf_s_l", "vprintf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vprintf_s", "vwprintf_s", "_vtprintf_s"]
helpviewer_keywords: ["vwprintf_s_l function", "_vwprintf_s_l function", "vwprintf_s function", "_vtprintf_s_l function", "vprintf_s_l function", "vtprintf_s_l function", "_vtprintf_s function", "vtprintf_s function", "_vprintf_s_l function", "formatted text [C++]", "vprintf_s function"]
ms.assetid: cf864996-a530-4b40-9c30-54c4cef439c8
diff --git a/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md b/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md
index 4101207f11..4054c917e4 100644
--- a/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md
+++ b/docs/c-runtime-library/reference/vprintf-vprintf-l-vwprintf-vwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "vprintf, _vprintf_l, vwprintf, _vwprintf_l"
ms.date: "11/04/2016"
-apiname: ["vprintf", "_vwprintf_l", "_vprintf_l", "vwprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vprintf", "_vwprintf_l", "_vprintf_l", "vwprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vwprintf", "_vtprintf"]
helpviewer_keywords: ["vwprintf function", "_vwprintf_l function", "vwprintf_l function", "_vtprintf function", "vtprintf_l function", "vprintf function", "_vprintf_l function", "vprintf_l function", "vtprintf function", "_vtprintf_l function", "formatted text [C++]"]
ms.assetid: 44549505-00a0-4fa7-9a85-f2e666f55a38
diff --git a/docs/c-runtime-library/reference/vscanf-s-vwscanf-s.md b/docs/c-runtime-library/reference/vscanf-s-vwscanf-s.md
index 1c7c1eab3c..666281e170 100644
--- a/docs/c-runtime-library/reference/vscanf-s-vwscanf-s.md
+++ b/docs/c-runtime-library/reference/vscanf-s-vwscanf-s.md
@@ -1,9 +1,10 @@
---
title: "vscanf_s, vwscanf_s"
ms.date: "11/04/2016"
-apiname: ["vscanf_s", "vwscanf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vscanf_s", "vwscanf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vtscanf_s", "vscanf_s", "vwscanf_s"]
ms.assetid: 23a1c383-5b01-4887-93ce-534a1e38ed93
---
diff --git a/docs/c-runtime-library/reference/vscanf-vwscanf.md b/docs/c-runtime-library/reference/vscanf-vwscanf.md
index 8ccd17ef40..c358361ae4 100644
--- a/docs/c-runtime-library/reference/vscanf-vwscanf.md
+++ b/docs/c-runtime-library/reference/vscanf-vwscanf.md
@@ -1,9 +1,10 @@
---
title: "vscanf, vwscanf"
ms.date: "11/04/2016"
-apiname: ["vscanf", "vwscanf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vscanf", "vwscanf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vscanf", "vwscanf", "_vtscanf"]
ms.assetid: d1df595b-11bc-4682-9441-a92616301e3b
---
diff --git a/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md b/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md
index d7c1bf65b8..73f6aaecf2 100644
--- a/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vscprintf-p-vscprintf-p-l-vscwprintf-p-vscwprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_vscprintf_p, _vscprintf_p_l, _vscwprintf_p, _vscwprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_vscprintf_p_l", "_vscprintf_p", "_vscwprintf_p_l", "_vscwprintf_p"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vscprintf_p_l", "_vscprintf_p", "_vscwprintf_p_l", "_vscwprintf_p"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vscprintf_p", "_vscprintf_p_l", "vscwprintf_p", "vscprintf_p", "vscwprintf_p_l", "_vscwprintf_p_l", "vscprintf_p_l", "_vscwprintf_p"]
helpviewer_keywords: ["vscprintf_p function", "_vsctprintf_p_l function", "vscwprintf_p_l function", "_vscwprintf_p_l function", "_vscprintf_p function", "vsctprintf_p function", "_vscprintf_p_l function", "_vscwprintf_p function", "vscwprintf_p function", "vsctprintf_p_l function", "_vsctprintf_p function", "vscprintf_p_l function"]
ms.assetid: 5da920b3-8652-4ee9-b19e-5aac3ace9d03
diff --git a/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md b/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md
index ec43d0174e..af1e764c25 100644
--- a/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md
+++ b/docs/c-runtime-library/reference/vscprintf-vscprintf-l-vscwprintf-vscwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "_vscprintf, _vscprintf_l, _vscwprintf, _vscwprintf_l"
ms.date: "11/04/2016"
-apiname: ["_vscprintf", "_vscprintf_l", "_vscwprintf_l", "_vscwprintf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vscprintf", "_vscprintf_l", "_vscwprintf_l", "_vscwprintf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vscprintf_l", "vscwpeintf", "_vscwprintf", "_vsctprintf", "_vscprintf", "vscwprintf_l", "vscprintf", "_vscwprintf_l"]
helpviewer_keywords: ["vsctprintf function", "_vscprintf_l function", "_vsctprintf_l function", "_vsctprintf function", "_vscwprintf_l function", "vscwprintf_l function", "_vscprintf function", "_vscwprintf function", "vscwprintf function", "vsctprintf_l function", "formatted text [C++]", "vscprintf function", "vscprintf_l function"]
ms.assetid: 1bc67d3d-21d5-49c9-ac8d-69e26b16a3c3
diff --git a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md
index f4ccd1bf85..e6a172673e 100644
--- a/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vsnprintf-s-vsnprintf-s-vsnprintf-s-l-vsnwprintf-s-vsnwprintf-s-l.md
@@ -1,9 +1,10 @@
---
title: "vsnprintf_s, _vsnprintf_s, _vsnprintf_s_l, _vsnwprintf_s, _vsnwprintf_s_l"
ms.date: "11/04/2016"
-apiname: ["_vsnwprintf_s", "_vsnwprintf_s_l", "_vsnprintf_s", "vsnprintf_s", "_vsnprintf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_vsnwprintf_s", "_vsnwprintf_s_l", "_vsnprintf_s", "vsnprintf_s", "_vsnprintf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntdll.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vsnprintf_s", "_vsntprintf_s", "_vsnwprintf_s"]
helpviewer_keywords: ["vsnwprintf_s function", "_vsntprintf_s function", "_vsntprintf_s_l function", "vsntprintf_s function", "vsnwprintf_s_l function", "vsnprintf_s_l function", "vsntprintf_s_l function", "_vsnwprintf_s_l function", "_vsnprintf_s function", "vsnprintf_s function", "_vsnprintf_s_l function", "_vsnwprintf_s function", "formatted text [C++]"]
ms.assetid: 147ccfce-58c7-4681-a726-ef54ac1c604e
diff --git a/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md b/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md
index b633b535bb..2cb8e76b04 100644
--- a/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md
+++ b/docs/c-runtime-library/reference/vsnprintf-vsnprintf-vsnprintf-l-vsnwprintf-vsnwprintf-l.md
@@ -1,9 +1,10 @@
---
title: "vsnprintf, _vsnprintf, _vsnprintf_l, _vsnwprintf, _vsnwprintf_l"
ms.date: "11/04/2016"
-apiname: ["_vsnprintf", "_vsnprintf_l", "_vsnwprintf", "_vsnwprintf_l", "_vsnprintf", "_vsnprintf;", "vsnprintf; _vsnprintf", "_vsnwprintf;", "_vsnprintf_l;", "_vsnwprintf_l;"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vsnprintf", "_vsnprintf_l", "_vsnwprintf", "_vsnwprintf_l", "_vsnprintf", "_vsnprintf;", "vsnprintf; _vsnprintf", "_vsnwprintf;", "_vsnprintf_l;", "_vsnwprintf_l;"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ntoskrnl.exe", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vsnprintf", "_vsnwprintf", "_vsntprintf", "vsnprintf", "stdio/vsnprintf", "stdio/_vsnprintf", "stdio/_vsnprintf_l", "stdio/_vsnwprintf", "stdio/_vsnwprintf_l", "_vsnprintf_l", "_vsnwprintf_l"]
helpviewer_keywords: ["vsntprintf function", "_vsnwprintf_l function", "vsnwprintf_l function", "vsntprintf_l function", "_vsntprintf function", "_vsnprintf_l function", "vsnprintf function", "_vsntprintf_l function", "vsnprintf_l function", "_vsnwprintf function", "_vsnprintf function", "formatted text [C++]", "vsnwprintf function"]
ms.assetid: a97f92df-c2f8-4ea0-9269-76920d2d566a
@@ -147,7 +148,7 @@ In C++, these functions have template overloads that invoke the newer, secure co
|**vsnprintf**, **_vsnprintf**, **_vsnprintf_l**|\|\ or \|
|**_vsnwprintf**, **_vsnwprintf_l**|\ or \|\, \, \, or \|
-The **_vsnprintf**, **_vsnprintf_l**, **_vsnwprintf** and **_vsnwprintf_l** functions are Microsoft specific. For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
+The **_vsnprintf**, **_vsnprintf_l**, **_vsnwprintf** and **_vsnwprintf_l** functions are Microsoft-specific. For additional compatibility information, see [Compatibility](../../c-runtime-library/compatibility.md).
## Example
diff --git a/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md b/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md
index 0212d303dd..f9e06ab96e 100644
--- a/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md
+++ b/docs/c-runtime-library/reference/vsprintf-p-vsprintf-p-l-vswprintf-p-vswprintf-p-l.md
@@ -1,9 +1,10 @@
---
title: "_vsprintf_p, _vsprintf_p_l, _vswprintf_p, _vswprintf_p_l"
ms.date: "11/04/2016"
-apiname: ["_vsprintf_p", "_vswprintf_p", "_vsprintf_p_l", "_vswprintf_p_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["_vsprintf_p", "_vswprintf_p", "_vsprintf_p_l", "_vswprintf_p_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vsprintf_p", "_vswprintf_p", "_vstprintf_p", "vswprintf_p", "_vsprintf_p", "vstprintf_p"]
helpviewer_keywords: ["vstprintf_p_l function", "_vsprintf_p_l function", "_vstprintf_p function", "vsprintf_p_l function", "_vswprintf_p function", "vswprintf_p function", "vsprintf_p function", "vswprintf_p_l function", "_vswprintf_p_l function", "vstprintf_p function", "formatted text [C++]", "_vsprintf_p function", "_vstprintf_p_l function"]
ms.assetid: 00821c0d-9fee-4d8a-836c-0669cfb11317
diff --git a/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md b/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md
index 663822d440..5044ec30bb 100644
--- a/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md
+++ b/docs/c-runtime-library/reference/vsprintf-s-vsprintf-s-l-vswprintf-s-vswprintf-s-l.md
@@ -1,16 +1,17 @@
---
title: "vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l"
-ms.date: "03/26/2019"
-apiname: ["_vswprintf_s_l", "vsprintf_s", "vswprintf_s", "_vsprintf_s_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+ms.date: "09/12/2019"
+api_name: ["_vswprintf_s_l", "vsprintf_s", "vswprintf_s", "_vsprintf_s_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vswprintf_s", "vsprintf_s", "_vstprintf_s"]
helpviewer_keywords: ["_vstprintf_s_l function", "vsprintf_s_l function", "_vstprintf_s function", "vswprintf_s function", "vstprintf_s function", "vstprintf_s_l function", "vswprintf_s_l function", "vsprintf_s function", "_vsprintf_s_l function", "formatted text [C++]", "_vswprintf_s_l function"]
ms.assetid: 60e90518-57f0-4f1b-b732-f62a69702833
---
# vsprintf_s, _vsprintf_s_l, vswprintf_s, _vswprintf_s_l
-Write formatted output using a pointer to a list of arguments. These are versions of [vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, \__vswprintf_l](vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md) with security enhancements as described in [Security Features in the CRT](../../c-runtime-library/security-features-in-the-crt.md).
+Write formatted output using a pointer to a list of arguments. These functions are versions of [vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, \__vswprintf_l](vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md) with security enhancements as described in [Security Features in the CRT](../../c-runtime-library/security-features-in-the-crt.md).
## Syntax
@@ -88,7 +89,7 @@ These functions differ from the non-secure versions only in that the secure vers
The versions of these functions with the **_l** suffix are identical except that they use the locale parameter passed in instead of the current thread locale.
-In C++, using these functions is simplified by template overloads; the overloads can infer buffer length automatically (eliminating the need to specify a size argument) and they can automatically replace older, non-secure functions with their newer, secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
+In C++, using these functions is simplified by template overloads. The overloads can infer buffer length automatically, eliminating the need to specify a size argument. And, they can automatically replace non-secure functions with their secure counterparts. For more information, see [Secure Template Overloads](../../c-runtime-library/secure-template-overloads.md).
### Generic-Text Routine Mappings
@@ -112,13 +113,15 @@ For additional compatibility information, see [Compatibility](../../c-runtime-li
```C
// crt_vsprintf_s.c
+// Compile with: cl /W4 crt_vsprintf_s.c
// This program uses vsprintf_s to write to a buffer.
// The size of the buffer is determined by _vscprintf.
#include
+#include
#include
-void test( char * format, ... )
+void test( char const * const format, ... )
{
va_list args;
int len;
@@ -127,10 +130,13 @@ void test( char * format, ... )
va_start( args, format );
len = _vscprintf( format, args ) // _vscprintf doesn't count
+ 1; // terminating '\0'
- buffer = malloc( len * sizeof(char) );
- vsprintf_s( buffer, len, format, args );
- puts( buffer );
- free( buffer );
+ buffer = (char *) malloc( len * sizeof(char) );
+ if ( NULL != buffer )
+ {
+ vsprintf_s( buffer, len, format, args );
+ puts( buffer );
+ free( buffer );
+ }
va_end( args );
}
@@ -154,4 +160,4 @@ This is a string
[fprintf, _fprintf_l, fwprintf, _fwprintf_l](fprintf-fprintf-l-fwprintf-fwprintf-l.md)
[printf, _printf_l, wprintf, _wprintf_l](printf-printf-l-wprintf-wprintf-l.md)
[sprintf, _sprintf_l, swprintf, _swprintf_l, \__swprintf_l](sprintf-sprintf-l-swprintf-swprintf-l-swprintf-l.md)
-[va_arg, va_copy, va_end, va_start](va-arg-va-copy-va-end-va-start.md)
+[va_arg, va_copy, va_end, va_start](va-arg-va-copy-va-end-va-start.md)
diff --git a/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md b/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md
index 282bd850bd..eacc1f0828 100644
--- a/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md
+++ b/docs/c-runtime-library/reference/vsprintf-vsprintf-l-vswprintf-vswprintf-l-vswprintf-l.md
@@ -1,9 +1,10 @@
---
title: "vsprintf, _vsprintf_l, vswprintf, _vswprintf_l, __vswprintf_l"
ms.date: "09/03/2019"
-apiname: ["_vswprintf_l", "_vsprintf_l", "vsprintf", "vswprintf", "__vswprintf_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_vswprintf_l", "_vsprintf_l", "vsprintf", "vswprintf", "__vswprintf_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vstprintf", "vswprintf", "_vstprintf", "vsprintf", "__vswprintf_l", "_vsprintf_l", "_vswprintf_l", "vswprintf_l"]
helpviewer_keywords: ["__vswprintf_l function", "_vstprintf_l function", "formatted text", "vstprintf_l function", "_vswprintf_l function", "vsprintf_l function", "buffers, avoiding overruns", "buffer overruns", "vswprintf_l function", "buffers, buffer overruns", "vstprintf function", "_vsprintf_l function", "vswprintf function", "vsprintf function", "_vstprintf function"]
ms.assetid: b8ef1c0d-58f9-4a18-841a-f1a989e1c29b
diff --git a/docs/c-runtime-library/reference/vsscanf-s-vswscanf-s.md b/docs/c-runtime-library/reference/vsscanf-s-vswscanf-s.md
index d567a30da2..1c7aa2b7d2 100644
--- a/docs/c-runtime-library/reference/vsscanf-s-vswscanf-s.md
+++ b/docs/c-runtime-library/reference/vsscanf-s-vswscanf-s.md
@@ -1,9 +1,10 @@
---
title: "vsscanf_s, vswscanf_s"
ms.date: "11/04/2016"
-apiname: ["vswscanf_s", "vsscanf_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vswscanf_s", "vsscanf_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vsscanf_s", "vswscanf_s", "_vstscanf_s"]
ms.assetid: 7b732e68-c6f4-4579-8917-122f5a7876e1
---
diff --git a/docs/c-runtime-library/reference/vsscanf-vswscanf.md b/docs/c-runtime-library/reference/vsscanf-vswscanf.md
index a18d3ab3bd..4fc004e045 100644
--- a/docs/c-runtime-library/reference/vsscanf-vswscanf.md
+++ b/docs/c-runtime-library/reference/vsscanf-vswscanf.md
@@ -1,9 +1,10 @@
---
title: "vsscanf, vswscanf"
ms.date: "11/04/2016"
-apiname: ["vsscanf", "vswscanf"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["vsscanf", "vswscanf"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_vstscanf", "vsscanf", "vswscanf"]
helpviewer_keywords: ["vswscanf function", "vsscanf function"]
ms.assetid: e96180f2-df46-423d-b4eb-0a49ab819bde
diff --git a/docs/c-runtime-library/reference/wcrtomb-s.md b/docs/c-runtime-library/reference/wcrtomb-s.md
index 4c854ae147..15fb7cf1bd 100644
--- a/docs/c-runtime-library/reference/wcrtomb-s.md
+++ b/docs/c-runtime-library/reference/wcrtomb-s.md
@@ -1,9 +1,10 @@
---
title: "wcrtomb_s"
ms.date: "11/04/2016"
-apiname: ["wcrtomb_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcrtomb_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcrtomb_s"]
helpviewer_keywords: ["wide characters, converting", "wcrtomb_s function", "multibyte characters", "characters, converting"]
ms.assetid: 9a8a1bd0-1d60-463d-a3a2-d83525eaf656
diff --git a/docs/c-runtime-library/reference/wcrtomb.md b/docs/c-runtime-library/reference/wcrtomb.md
index 8257ffc6f5..d5c7746660 100644
--- a/docs/c-runtime-library/reference/wcrtomb.md
+++ b/docs/c-runtime-library/reference/wcrtomb.md
@@ -1,9 +1,10 @@
---
title: "wcrtomb"
ms.date: "11/04/2016"
-apiname: ["wcrtomb"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcrtomb"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcrtomb"]
helpviewer_keywords: ["wide characters, converting", "wcrtomb function", "multibyte characters", "characters, converting"]
ms.assetid: 717f1b21-2705-4b7f-b6d0-82adc5224340
diff --git a/docs/c-runtime-library/reference/wcsicoll.md b/docs/c-runtime-library/reference/wcsicoll.md
index 7d874cbc6c..63ffdcbefb 100644
--- a/docs/c-runtime-library/reference/wcsicoll.md
+++ b/docs/c-runtime-library/reference/wcsicoll.md
@@ -1,13 +1,16 @@
---
title: "wcsicoll"
-ms.date: "11/04/2016"
-apiname: ["wcsicoll"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["wcsicoll"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsicoll"]
helpviewer_keywords: ["wcsicoll function"]
ms.assetid: d049022d-cf60-467f-842b-9a508d9aeaff
---
# wcsicoll
-This POSIX function is deprecated. Use the ISO C++ conformant [_wcsicoll](stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md) instead.
\ No newline at end of file
+The Microsoft-specific function name `wcsicoll` is a deprecated alias for the [_wcsicoll](stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md) function. By default, it generates [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The name is deprecated because it doesn't follow the Standard C rules for implementation-specific names. However, the function is still supported.
+
+We recommend you use [_wcsicoll](stricoll-wcsicoll-mbsicoll-stricoll-l-wcsicoll-l-mbsicoll-l.md) instead. Or, you can continue to use this function name, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/reference/wcsrtombs-s.md b/docs/c-runtime-library/reference/wcsrtombs-s.md
index 48d1971b3a..ac5fc62888 100644
--- a/docs/c-runtime-library/reference/wcsrtombs-s.md
+++ b/docs/c-runtime-library/reference/wcsrtombs-s.md
@@ -1,9 +1,10 @@
---
title: "wcsrtombs_s"
ms.date: "11/04/2016"
-apiname: ["wcsrtombs_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcsrtombs_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsrtombs_s"]
helpviewer_keywords: ["string conversion, wide characters", "wcsrtombs_s function", "wide characters, strings"]
ms.assetid: 9dccb766-113c-44bb-9b04-07a634dddec8
@@ -113,7 +114,7 @@ The **wcsrtombs_s** function is multithread safe as long as no function in the c
#define MB_BUFFER_SIZE 100
-void main()
+int main()
{
const wchar_t wcString[] =
{L"Every good boy does fine."};
diff --git a/docs/c-runtime-library/reference/wcsrtombs.md b/docs/c-runtime-library/reference/wcsrtombs.md
index 1a58b5576d..9f43b226de 100644
--- a/docs/c-runtime-library/reference/wcsrtombs.md
+++ b/docs/c-runtime-library/reference/wcsrtombs.md
@@ -1,9 +1,10 @@
---
title: "wcsrtombs"
ms.date: "11/04/2016"
-apiname: ["wcsrtombs"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wcsrtombs"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcsrtombs"]
helpviewer_keywords: ["wcsrtombs function", "string conversion, wide characters", "wide characters, strings"]
ms.assetid: a8d21fec-0d36-4085-9d81-9b1c61c7259d
diff --git a/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md b/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md
index 9d035efbe7..34db7b3cea 100644
--- a/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md
+++ b/docs/c-runtime-library/reference/wcstombs-s-wcstombs-s-l.md
@@ -1,9 +1,10 @@
---
title: "wcstombs_s, _wcstombs_s_l"
ms.date: "11/04/2016"
-apiname: ["_wcstombs_s_l", "wcstombs_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wcstombs_s_l", "wcstombs_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcstombs_s", "_wcstombs_s_l"]
helpviewer_keywords: ["wcstombs_s function", "string conversion, wide characters", "wide characters, converting", "_wcstombs_s_l function", "wcstombs_s_l function", "characters, converting", "string conversion, multibyte character strings"]
ms.assetid: 105f2d33-221a-4f6d-864c-23c1865c42af
diff --git a/docs/c-runtime-library/reference/wcstombs-wcstombs-l.md b/docs/c-runtime-library/reference/wcstombs-wcstombs-l.md
index 24128c4381..004390d384 100644
--- a/docs/c-runtime-library/reference/wcstombs-wcstombs-l.md
+++ b/docs/c-runtime-library/reference/wcstombs-wcstombs-l.md
@@ -1,9 +1,10 @@
---
title: "wcstombs, _wcstombs_l"
ms.date: "11/04/2016"
-apiname: ["wcstombs", "_wcstombs_l"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["wcstombs", "_wcstombs_l"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wcstombs", "_wcstombs_l"]
helpviewer_keywords: ["_wcstombs_l function", "wcstombs function", "string conversion, wide characters", "wide characters, converting", "wcstombs_l function", "characters, converting", "string conversion, multibyte character strings"]
ms.assetid: 91234252-9ea1-423a-af99-e9d0ce4a40e3
diff --git a/docs/c-runtime-library/reference/wctob.md b/docs/c-runtime-library/reference/wctob.md
index 8587365e3c..eeb25672b0 100644
--- a/docs/c-runtime-library/reference/wctob.md
+++ b/docs/c-runtime-library/reference/wctob.md
@@ -1,9 +1,10 @@
---
title: "wctob"
ms.date: "11/04/2016"
-apiname: ["wctob"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wctob"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wctob"]
helpviewer_keywords: ["wide characters, converting", "wctob function", "characters, converting"]
ms.assetid: 46aec98b-c2f2-4e9d-9d89-7db99ba8a9a6
diff --git a/docs/c-runtime-library/reference/wctomb-s-wctomb-s-l.md b/docs/c-runtime-library/reference/wctomb-s-wctomb-s-l.md
index bf6ea5affa..70aa68a8ad 100644
--- a/docs/c-runtime-library/reference/wctomb-s-wctomb-s-l.md
+++ b/docs/c-runtime-library/reference/wctomb-s-wctomb-s-l.md
@@ -1,9 +1,10 @@
---
title: "wctomb_s, _wctomb_s_l"
ms.date: "11/04/2016"
-apiname: ["_wctomb_s_l", "wctomb_s"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_wctomb_s_l", "wctomb_s"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wctomb_s", "_wctomb_s_l"]
helpviewer_keywords: ["wctomb_s function", "wctomb_s_l function", "string conversion, wide characters", "wide characters, converting", "_wctomb_s_l function", "characters, converting", "string conversion, multibyte character strings"]
ms.assetid: 7e94a888-deed-4dbd-b5e9-d4a0455538b8
diff --git a/docs/c-runtime-library/reference/wctomb-wctomb-l.md b/docs/c-runtime-library/reference/wctomb-wctomb-l.md
index 331b36027a..df44de4fa1 100644
--- a/docs/c-runtime-library/reference/wctomb-wctomb-l.md
+++ b/docs/c-runtime-library/reference/wctomb-wctomb-l.md
@@ -1,9 +1,10 @@
---
title: "wctomb, _wctomb_l"
ms.date: "11/04/2016"
-apiname: ["_wctomb_l", "wctomb"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
-apitype: "DLLExport"
+api_name: ["_wctomb_l", "wctomb"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll", "ntoskrnl.exe"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wctomb"]
helpviewer_keywords: ["string conversion, wide characters", "wide characters, converting", "_wctomb_l function", "wctomb function", "wctomb_l function", "characters, converting", "string conversion, multibyte character strings"]
ms.assetid: 4a543f0e-5516-4d81-8ff2-3c5206f02ed5
diff --git a/docs/c-runtime-library/reference/wctrans.md b/docs/c-runtime-library/reference/wctrans.md
index 310f68ab6b..7eb32e82db 100644
--- a/docs/c-runtime-library/reference/wctrans.md
+++ b/docs/c-runtime-library/reference/wctrans.md
@@ -1,9 +1,10 @@
---
title: "wctrans"
ms.date: "11/04/2016"
-apiname: ["wctrans"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["wctrans"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-convert-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wctrans"]
helpviewer_keywords: ["character codes, wctrans", "characters, codes", "characters, converting", "wctrans function"]
ms.assetid: 215404bf-6d60-489c-9ae9-880e6b586162
diff --git a/docs/c-runtime-library/reference/wctype.md b/docs/c-runtime-library/reference/wctype.md
index 96db423022..2cc29f611b 100644
--- a/docs/c-runtime-library/reference/wctype.md
+++ b/docs/c-runtime-library/reference/wctype.md
@@ -1,9 +1,10 @@
---
title: "wctype"
ms.date: "11/04/2016"
-apiname: ["wctype"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_name: ["wctype"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["wctype"]
helpviewer_keywords: ["wctype function", "wide characters"]
ms.assetid: 14aded12-4087-4123-bc48-db4e10999223
diff --git a/docs/c-runtime-library/reference/write.md b/docs/c-runtime-library/reference/write.md
index 725707a9e6..28d37f2b9b 100644
--- a/docs/c-runtime-library/reference/write.md
+++ b/docs/c-runtime-library/reference/write.md
@@ -1,9 +1,10 @@
---
title: "_write"
ms.date: "11/04/2016"
-apiname: ["_write"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_write"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll", "api-ms-win-crt-stdio-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_write"]
helpviewer_keywords: ["_write function", "write function", "files [C++], writing to"]
ms.assetid: 7b868c33-766f-4e1a-95a7-e8d25f0604c4
@@ -99,7 +100,7 @@ int main( void )
perror("Invalid parameter: buffer was NULL!");
break;
default:
- // An unrelated error occured
+ // An unrelated error occurred
perror("Unexpected error!");
}
}
diff --git a/docs/c-runtime-library/reference/xor-eq.md b/docs/c-runtime-library/reference/xor-eq.md
index 422dd3a174..6db45ca864 100644
--- a/docs/c-runtime-library/reference/xor-eq.md
+++ b/docs/c-runtime-library/reference/xor-eq.md
@@ -1,8 +1,9 @@
---
title: "xor_eq"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["std.xor_eq", "xor_eq", "std::xor_eq"]
helpviewer_keywords: ["xor_eq function"]
ms.assetid: eca4b6b4-b77a-4d44-a09a-5a7e69fdb56c
diff --git a/docs/c-runtime-library/reference/xor.md b/docs/c-runtime-library/reference/xor.md
index 1795daa437..505376ff4c 100644
--- a/docs/c-runtime-library/reference/xor.md
+++ b/docs/c-runtime-library/reference/xor.md
@@ -1,8 +1,9 @@
---
title: "xor"
ms.date: "11/04/2016"
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["Xor", "std::xor", "std.xor"]
helpviewer_keywords: ["xor function"]
ms.assetid: 0fe9554b-d87b-4487-92ed-366c6dc21df2
diff --git a/docs/c-runtime-library/reference/y0-y1-yn.md b/docs/c-runtime-library/reference/y0-y1-yn.md
index 7e5845ba4c..0050a001a7 100644
--- a/docs/c-runtime-library/reference/y0-y1-yn.md
+++ b/docs/c-runtime-library/reference/y0-y1-yn.md
@@ -1,13 +1,16 @@
---
title: "y0, y1, yn"
-ms.date: "11/04/2016"
-apiname: ["y1", "yn", "y0"]
-apilocation: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
-apitype: "DLLExport"
+ms.date: "12/16/2019"
+api_name: ["y1", "yn", "y0"]
+api_location: ["msvcrt.dll", "msvcr80.dll", "msvcr90.dll", "msvcr100.dll", "msvcr100_clr0400.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr120_clr0400.dll", "ucrtbase.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["yn", "y1", "y0"]
helpviewer_keywords: ["y0 function", "y1 function", "yn function"]
ms.assetid: e14215f3-53d4-4ae8-816e-4c1ec2019316
---
# y0, y1, yn
-These POSIX functions are deprecated. Use the ISO C++ conformant [Bessel Functions: _j0, _j1, _jn, _y0, _y1, _yn](bessel-functions-j0-j1-jn-y0-y1-yn.md) instead.
\ No newline at end of file
+The Microsoft-implemented POSIX function names `y0`, `y1`, and `yn` are deprecated aliases for the [_y0, _y1, and _yn](bessel-functions-j0-j1-jn-y0-y1-yn.md) functions. By default, they generate [Compiler warning (level 3) C4996](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md). The names are deprecated because they don't follow the Standard C rules for implementation-specific names. However, the functions are still supported.
+
+We recommend you use [_y0, _y1, and _yn](bessel-functions-j0-j1-jn-y0-y1-yn.md) instead. Or, you can continue to use these function names, and disable the warning. For more information, see [Turn off the warning](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#turn-off-the-warning) and [POSIX function names](../../error-messages/compiler-warnings/compiler-warning-level-3-c4996.md#posix-function-names).
diff --git a/docs/c-runtime-library/rtdynamiccast.md b/docs/c-runtime-library/rtdynamiccast.md
index 1ae832da9c..2120498159 100644
--- a/docs/c-runtime-library/rtdynamiccast.md
+++ b/docs/c-runtime-library/rtdynamiccast.md
@@ -1,9 +1,10 @@
---
title: "__RTDynamicCast"
ms.date: "11/04/2016"
-apiname: ["__RTDynamicCast"]
-apilocation: ["msvcr90.dll", "msvcr110.dll", "msvcr120.dll", "msvcrt.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll"]
-apitype: "DLLExport"
+api_name: ["__RTDynamicCast"]
+api_location: ["msvcr90.dll", "msvcr110.dll", "msvcr120.dll", "msvcrt.dll", "msvcr100.dll", "msvcr80.dll", "msvcr110_clr0400.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__RTDynamicCast"]
helpviewer_keywords: ["__RTDynamicCast"]
ms.assetid: 56aa2d7a-aa47-46ef-830d-e37175611239
diff --git a/docs/c-runtime-library/scanf-type-field-characters.md b/docs/c-runtime-library/scanf-type-field-characters.md
index 52a9fc3c30..91220cc4b8 100644
--- a/docs/c-runtime-library/scanf-type-field-characters.md
+++ b/docs/c-runtime-library/scanf-type-field-characters.md
@@ -1,8 +1,9 @@
---
title: "scanf Type Field Characters"
ms.date: "11/04/2016"
-apilocation: ["msvcr90.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr90.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["scanf"]
helpviewer_keywords: ["scanf function, type field characters"]
ms.assetid: 5d546a84-715b-44ca-b1c5-bbe997f9ff62
diff --git a/docs/c-runtime-library/scanf-width-specification.md b/docs/c-runtime-library/scanf-width-specification.md
index c431583d42..e5ac032454 100644
--- a/docs/c-runtime-library/scanf-width-specification.md
+++ b/docs/c-runtime-library/scanf-width-specification.md
@@ -1,39 +1,40 @@
---
-title: "scanf Width Specification"
-ms.date: "11/04/2016"
-apilocation: ["msvcr100.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr90.dll"]
-apitype: "DLLExport"
+title: "scanf width specification"
+ms.date: "10/22/2019"
+api_location: ["msvcr100.dll", "msvcr120.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr90.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["scanf"]
helpviewer_keywords: ["scanf function, width specification"]
ms.assetid: 94b4e8fe-c4a2-4799-8b6c-a2cf28ffb09c
---
-# scanf Width Specification
+# scanf width specification
-This information applies to the interpretation of format strings in the `scanf` family of functions, including the secure versions such as `scanf_s`. These functions normally assume the input stream is divided into a sequence of tokens. Tokens are separated by whitespace (space, tab, or newline), or in the case of numerical types, by the natural end of a numerical data type as indicated by the first character that cannot be converted into numerical text. However, the width specification may be used to cause parsing of the input to stop before the natural end of a token.
+This information applies to the interpretation of format strings in the `scanf` family of functions, including the secure versions such as `scanf_s`. These functions normally assume the input stream is divided into a sequence of tokens. Tokens are separated by whitespace (space, tab, or newline), or for numerical types, by the natural end of a numerical data type as indicated by the first character that can't be converted into numerical text. However, the width specification may be used to cause parsing of the input to stop before the natural end of a token.
The *width* specification consists of characters between the `%` and the type field specifier, which may include a positive integer called the *width* field and one or more characters indicating the size of the field, which may also be considered as modifiers of the type of the field, such as an indication of whether the integer type is **short** or **long**. Such characters are referred to as the size prefix.
-## The Width Field
+## The width field
-The *width* field is a positive decimal integer controlling the maximum number of characters to be read for that field. No more than *width* characters are converted and stored at the corresponding `argument`. Fewer than *width* characters may be read if a whitespace character (space, tab, or newline) or a character that cannot be converted according to the given format occurs before *width* is reached.
+The *width* field is a positive decimal integer that controls the maximum number of characters to be read for that field. No more than *width* characters get converted and stored in the corresponding `argument`. Fewer than *width* characters may be read if a whitespace character or a character that can't be converted according to the given format occurs before *width* is reached.
-The width specification is separate and distinct from the buffer size argument required by the secure versions of these functions (i.e., `scanf_s`, `wscanf_s`, etc.). In the following example, the width specification is 20, indicating that up to 20 characters are to be read from the input stream. The buffer length is 21, which includes room for the possible 20 characters plus the null terminator:
+The width specification is separate and distinct from the buffer size argument required by the secure versions of these functions (for instance, `scanf_s`, `wscanf_s`, and so on). In the following example, the width specification is 20, indicating that up to 20 characters are to be read from the input stream. The buffer length is 21, which includes room for the possible 20 characters plus the null terminator:
```C
char str[21];
scanf_s("%20s", str, 21);
```
-If the *width* field is not used, `scanf_s` will attempt to read the entire token into the string. If the size specified is not large enough to hold the entire token, nothing will be written to the destination string. If the *width* field is specified, then the first *width* characters in the token will be written to the destination string along with the null terminator.
+If the *width* field isn't used, `scanf_s` attempts to read the entire token into the string. If the size specified isn't large enough to hold the entire token, nothing gets written to the destination string. If the *width* field is specified, then the first *width* characters in the token get written to the destination string, along with the null terminator.
-## The Size Prefix
+## The size prefix
-The optional prefixes **h**, **l**, **ll**, **I64**, and **L** indicate the size of the `argument` (long or short, single-byte character or wide character, depending upon the type character that they modify). These format-specification characters are used with type characters in `scanf` or `wscanf` functions to specify interpretation of arguments as shown in the following table. The type prefix **I64** is a Microsoft extension and is not ANSI compatible. The type characters and their meanings are described in the "Type Characters for scanf functions" table in [scanf Type Field Characters](../c-runtime-library/scanf-type-field-characters.md).
+The optional prefixes **h**, **hh**, **l**, **ll**, **I64**, and **L** indicate the size of the `argument` (long or short, single-byte character or wide character, depending upon the type character that they modify). These format-specification characters are used with type characters in `scanf` or `wscanf` functions to specify interpretation of arguments as shown in the following table. The type prefix **I64** is a Microsoft extension and isn't compatible with Standard C. The type characters and their meanings are described in the "Type Characters for scanf functions" table in [scanf Type Field Characters](../c-runtime-library/scanf-type-field-characters.md).
> [!NOTE]
-> The **h**, **l**, and **L** prefixes are Microsoft extensions when used with data of type `char`.
+> The **h**, **l**, and **L** prefixes are Microsoft extensions when used with data of type **char**.
-### Size Prefixes for scanf and wscanf Format-Type Specifiers
+### Size prefixes for scanf and wscanf format-type specifiers
|To specify|Use prefix|With type specifier|
|----------------|----------------|-------------------------|
@@ -42,17 +43,19 @@ The optional prefixes **h**, **l**, **ll**, **I64**, and **L** indicate the size
|**long int**|**l**|**d**, **i**, **o**, **x**, or **X**|
|**long unsigned int**|**l**|**u**|
|**long long**|**ll**|**d**, **i**, **o**, **x**, or **X**|
-|`short int`|**h**|**d**, **i**, **o**, **x**, or **X**|
+|**short int**|**h**|**d**, **i**, **o**, **x**, or **X**|
|**short unsigned int**|**h**|**u**|
-|__**int64**|**I64**|**d**, **i**, **o**, **u**, **x**, or **X**|
+|**char**|**hh**|**d**, **i**, **o**, **x**, or **X**|
+|**unsigned char**|**hh**|**u**|
+|**int64**|**I64**|**d**, **i**, **o**, **u**, **x**, or **X**|
|Single-byte character with `scanf`|**h**|**c** or **C**|
|Single-byte character with `wscanf`|**h**|**c** or **C**|
|Wide character with `scanf`|**l**|**c** or **C**|
|Wide character with `wscanf`|**l**|**c**, or **C**|
-|Single-byte - character string with `scanf`|**h**|**s** or **S**|
-|Single-byte - character string with `wscanf`|**h**|**s** or **S**|
-|Wide-character string with `scanf`|**l**|**s** or **S**|
-|Wide-character string with `wscanf`|**l**|**s** or **S**|
+|Single-byte character string with `scanf`|**h**|**s** or **S**|
+|Single-byte character string with `wscanf`|**h**|**s** or **S**|
+|Wide character string with `scanf`|**l**|**s** or **S**|
+|Wide character string with `wscanf`|**l**|**s** or **S**|
The following examples use **h** and **l** with `scanf_s` functions and `wscanf_s` functions:
@@ -63,29 +66,29 @@ wscanf_s(L"%hC", &x, 2); // Read a single-byte character
If using an unsecure function in the `scanf` family, omit the size parameter indicating the buffer length of the preceding argument.
-## Reading Undelimited strings
+## Reading undelimited strings
-To read strings not delimited by whitespace characters, a set of characters in brackets (**[ ]**) can be substituted for the **s** (string) type character. The set of characters in brackets is referred to as a control string. The corresponding input field is read up to the first character that does not appear in the control string. If the first character in the set is a caret (**^**), the effect is reversed: The input field is read up to the first character that does appear in the rest of the character set.
+To read strings not delimited by whitespace characters, a set of characters in brackets (**[ ]**) can be substituted for the **s** (string) type character. The set of characters in brackets is referred to as a *control string*. The corresponding input field is read up to the first character that doesn't appear in the control string. If the first character in the set is a caret (**^**), the effect is reversed: The input field is read up to the first character that does appear in the rest of the character set.
-Note that **%[a-z]** and **%[z-a]** are interpreted as equivalent to **%[abcde...z]**. This is a common `scanf` function extension, but note that the ANSI standard does not require it.
+Both **%[a-z]** and **%[z-a]** are interpreted as equivalent to **%[abcde...z]**. It's a common `scanf` function extension, but isn't required by Standard C.
-## Reading Unterminated strings
+## Reading unterminated strings
-To store a string without storing a terminating null character ('\0'), use the specification **%**n**c** where *n* is a decimal integer. In this case, the **c** type character indicates that the argument is a pointer to a character array. The next *n* characters are read from the input stream into the specified location, and no null character ('\0') is appended. If *n* is not specified, its default value is 1.
+To store a string without storing a terminating null character ('\0'), use the specification `%Nc`, where *N* is a decimal integer. In this case, the **c** type character indicates that the argument is a pointer to a character array. The next *N* characters are read from the input stream into the specified location, and no null character ('\0') is appended. If *N* isn't specified, its default value is 1.
## When scanf stops reading a field
-The `scanf` function scans each input field, character by character. It may stop reading a particular input field before it reaches a space character for a variety of reasons:
+The `scanf` function scans each input field, character by character. It may stop reading a particular input field before it reaches a space character for one of several reasons:
- The specified width has been reached.
-- The next character cannot be converted as specified.
+- The next character can't be converted as specified.
-- The next character conflicts with a character in the control string that it is supposed to match.
+- The next character conflicts with a character in the control string that it's supposed to match.
- The next character fails to appear in a given character set.
-For whatever reason, when the `scanf` function stops reading an input field, the next input field is considered to begin at the first unread character. The conflicting character, if there is one, is considered unread and is the first character of the next input field or the first character in subsequent read operations on the input stream.
+For whatever reason, when the `scanf` function stops reading an input field, the next input field is considered to begin at the first unread character. The conflicting character, if any, is considered unread. It's the first character of the next input field, or the first character in subsequent read operations on the input stream.
## See also
diff --git a/docs/c-runtime-library/set-app-type.md b/docs/c-runtime-library/set-app-type.md
index 68306ebcd5..2324b899f0 100644
--- a/docs/c-runtime-library/set-app-type.md
+++ b/docs/c-runtime-library/set-app-type.md
@@ -1,9 +1,10 @@
---
title: "_set_app_type"
ms.date: "11/04/2016"
-apiname: ["_set_app_type"]
-apilocation: ["api-ms-win-crt-runtime-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["_set_app_type"]
+api_location: ["api-ms-win-crt-runtime-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_set_app_type", "corecrt_startup/_set_app_type"]
ms.assetid: 1e7fe786-b587-4116-8c05-f7d762350100
---
diff --git a/docs/c-runtime-library/set-output-format.md b/docs/c-runtime-library/set-output-format.md
index 9dabc1ee3e..8bba091fd4 100644
--- a/docs/c-runtime-library/set-output-format.md
+++ b/docs/c-runtime-library/set-output-format.md
@@ -1,9 +1,10 @@
---
title: "_set_output_format"
ms.date: "11/04/2016"
-apiname: ["_set_output_format"]
-apilocation: ["msvcrt.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr110.dll", "msvcr80.dll"]
-apitype: "DLLExport"
+api_name: ["_set_output_format"]
+api_location: ["msvcrt.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr110.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["set_output_format", "_set_output_format"]
helpviewer_keywords: ["_TWO_DIGIT_EXPONENT constant", "output formatting", "TWO_DIGIT_EXPONENT constant", "_set_output_format function", "set_output_format function"]
ms.assetid: 1cb48df8-44b4-4400-bd27-287831d6b3ff
diff --git a/docs/c-runtime-library/setjmp3.md b/docs/c-runtime-library/setjmp3.md
index 332856c5fd..311e323efa 100644
--- a/docs/c-runtime-library/setjmp3.md
+++ b/docs/c-runtime-library/setjmp3.md
@@ -1,9 +1,10 @@
---
title: "_setjmp3"
ms.date: "11/04/2016"
-apiname: ["_setjmp3"]
-apilocation: ["msvcrt.dll", "msvcr90.dll", "msvcr110.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcr120.dll"]
-apitype: "DLLExport"
+api_name: ["_setjmp3"]
+api_location: ["msvcrt.dll", "msvcr90.dll", "msvcr110.dll", "msvcr80.dll", "msvcr110_clr0400.dll", "msvcr100.dll", "msvcr120.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["setjmp3", "_setjmp3"]
helpviewer_keywords: ["_setjmp3 function", "setjmp3 function"]
ms.assetid: 6129c2f3-8bac-4fdb-a827-44e1eebba500
diff --git a/docs/c-runtime-library/setlc-active-func-unguarded-readlc-active-add-func.md b/docs/c-runtime-library/setlc-active-func-unguarded-readlc-active-add-func.md
index 6cd5b4c3ff..59d3239669 100644
--- a/docs/c-runtime-library/setlc-active-func-unguarded-readlc-active-add-func.md
+++ b/docs/c-runtime-library/setlc-active-func-unguarded-readlc-active-add-func.md
@@ -1,9 +1,10 @@
---
title: "___setlc_active_func, ___unguarded_readlc_active_add_func"
ms.date: "11/04/2016"
-apiname: ["___setlc_active_func", "___unguarded_readlc_active_add_func"]
-apilocation: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr110.dll", "msvcr80.dll", "msvcr120.dll", "msvcr100.dll"]
-apitype: "DLLExport"
+api_name: ["___setlc_active_func", "___unguarded_readlc_active_add_func"]
+api_location: ["msvcr90.dll", "msvcr110_clr0400.dll", "msvcrt.dll", "msvcr110.dll", "msvcr80.dll", "msvcr120.dll", "msvcr100.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["___unguarded_readlc_active_add_func", "___setlc_active_func"]
helpviewer_keywords: ["___setlc_active_func", "___unguarded_readlc_active_add_func"]
ms.assetid: 605ec4e3-81e5-4ece-935a-f434768cc702
diff --git a/docs/c-runtime-library/setusermatherr.md b/docs/c-runtime-library/setusermatherr.md
index 21f677a659..9e9d6770b8 100644
--- a/docs/c-runtime-library/setusermatherr.md
+++ b/docs/c-runtime-library/setusermatherr.md
@@ -1,9 +1,10 @@
---
title: "__setusermatherr"
ms.date: "11/04/2016"
-apiname: ["__setusermatherr"]
-apilocation: ["msvcr80.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "api-ms-win-crt-math-l1-1-0.dll"]
-apitype: "DLLExport"
+api_name: ["__setusermatherr"]
+api_location: ["msvcr80.dll", "msvcr90.dll", "msvcrt.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr120.dll", "msvcr100.dll", "api-ms-win-crt-math-l1-1-0.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["__setusermatherr"]
helpviewer_keywords: ["__setusermatherr"]
ms.assetid: f306818d-381a-4d68-8739-71b92bacb5ea
diff --git a/docs/c-runtime-library/spawn-wspawn-functions.md b/docs/c-runtime-library/spawn-wspawn-functions.md
index 8ae8f80941..ac7ef6b605 100644
--- a/docs/c-runtime-library/spawn-wspawn-functions.md
+++ b/docs/c-runtime-library/spawn-wspawn-functions.md
@@ -1,8 +1,9 @@
---
title: "_spawn, _wspawn Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll", "msvcr90.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr80.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcrt.dll", "msvcr120.dll", "msvcr100.dll", "msvcr90.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_spawn", "_tspawnlp", "_tspawnlpe", "_tspawnve", "_tspawnvp", "_tspawnvpe", "_tspawnl", "spawn", "_tspawnv", "_tspawnle", "wspawn"]
helpviewer_keywords: ["_tspawnve function", "_spawn functions", "_tspawnlpe function", "tspawnvpe function", "processes, creating", "tspawnve function", "_tspawnvp function", "spawn functions", "tspawnl function", "tspawnlp function", "_tspawnvpe function", "_tspawnl function", "tspawnvp function", "tspawnv function", "processes, executing new", "_tspawnv function", "tspawnle function", "process creation", "_tspawnlp function", "tspawnlpe function", "_tspawnle function"]
ms.assetid: bb47c703-5216-4e09-8023-8cf25bbf2cf9
@@ -100,7 +101,7 @@ If you are calling `_spawn` from a DLL or a GUI application and want to redirect
## Example
-```
+```c
// crt_spawn.c
// This program accepts a number in the range
// 1-8 from the command line. Based on the number it receives,
diff --git a/docs/c-runtime-library/strcoll-functions.md b/docs/c-runtime-library/strcoll-functions.md
index 9a4650a4cd..3a6e989c6f 100644
--- a/docs/c-runtime-library/strcoll-functions.md
+++ b/docs/c-runtime-library/strcoll-functions.md
@@ -1,8 +1,9 @@
---
title: "strcoll Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr120.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr120.dll", "msvcr110_clr0400.dll", "msvcr90.dll", "msvcr80.dll", "msvcr100.dll", "msvcr110.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["strcoll"]
helpviewer_keywords: ["code pages, using for string comparisons", "string comparison [C++], culture-specific", "strcoll functions", "strings [C++], comparing by code page"]
ms.assetid: c09eeff3-8aba-4cfb-a524-752436d85573
diff --git a/docs/c-runtime-library/string-to-numeric-value-functions.md b/docs/c-runtime-library/string-to-numeric-value-functions.md
index fdb26e3ac7..97ea9beff3 100644
--- a/docs/c-runtime-library/string-to-numeric-value-functions.md
+++ b/docs/c-runtime-library/string-to-numeric-value-functions.md
@@ -1,8 +1,9 @@
---
title: "String to Numeric Value Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr80.dll", "msvcr110.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr90.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr80.dll", "msvcr110.dll", "msvcr120.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr90.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["_tcstoui64", "_tcstoi64"]
helpviewer_keywords: ["parsing, numeric strings", "string conversion, to numeric values"]
ms.assetid: 11cbd9ce-033b-4914-bf66-029070e7e385
diff --git a/docs/c-runtime-library/to-functions.md b/docs/c-runtime-library/to-functions.md
index d57917f150..672eb1b69a 100644
--- a/docs/c-runtime-library/to-functions.md
+++ b/docs/c-runtime-library/to-functions.md
@@ -1,8 +1,9 @@
---
title: "to Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr120.dll", "msvcr90.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr100.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr120.dll", "msvcr90.dll", "msvcr110.dll", "msvcr110_clr0400.dll", "msvcr80.dll", "msvcr100.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["To"]
helpviewer_keywords: ["to functions", "string conversion, to different characters", "string conversion, case", "lowercase, converting strings", "uppercase, converting strings", "case, converting", "characters, converting"]
ms.assetid: f636a4c6-8c9f-4be2-baac-064f9dbae300
@@ -56,7 +57,7 @@ The `towlower` and `towupper` functions return a converted copy of `c` if and on
## Example
-```
+```c
// crt_toupper.c
/* This program uses toupper and tolower to
* analyze all characters between 0x0 and 0x7F. It also
diff --git a/docs/c-runtime-library/truncate.md b/docs/c-runtime-library/truncate.md
index 52a77a949f..8e4aa1b5e0 100644
--- a/docs/c-runtime-library/truncate.md
+++ b/docs/c-runtime-library/truncate.md
@@ -55,7 +55,7 @@ The following functions return the number of characters copied if no truncation
## Example
-```
+```c
// crt_truncate.c
#include
#include
diff --git a/docs/c-runtime-library/unlock.md b/docs/c-runtime-library/unlock.md
index 95342ddc27..c73f0ed061 100644
--- a/docs/c-runtime-library/unlock.md
+++ b/docs/c-runtime-library/unlock.md
@@ -1,9 +1,10 @@
---
title: "_unlock"
ms.date: "11/04/2016"
-apiname: ["_unlock"]
-apilocation: ["msvcrt.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcr120_clr0400.dll"]
-apitype: "DLLExport"
+api_name: ["_unlock"]
+api_location: ["msvcrt.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr110.dll", "msvcr80.dll", "msvcr120.dll", "msvcr90.dll", "msvcr120_clr0400.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["unlock", "_unlock"]
helpviewer_keywords: ["unlock function", "_unlock function"]
ms.assetid: 2eda2507-a134-4997-aa12-f2f8cb319e14
diff --git a/docs/c-runtime-library/vprintf-functions.md b/docs/c-runtime-library/vprintf-functions.md
index 29a58e633a..654268af3f 100644
--- a/docs/c-runtime-library/vprintf-functions.md
+++ b/docs/c-runtime-library/vprintf-functions.md
@@ -1,8 +1,9 @@
---
title: "vprintf Functions"
ms.date: "11/04/2016"
-apilocation: ["msvcr110.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr80.dll"]
-apitype: "DLLExport"
+api_location: ["msvcr110.dll", "msvcr120.dll", "msvcr90.dll", "msvcr100.dll", "msvcr110_clr0400.dll", "msvcr80.dll"]
+api_type: ["DLLExport"]
+topic_type: ["apiref"]
f1_keywords: ["vprintf"]
helpviewer_keywords: ["vprintf function", "formatted text [C++]"]
ms.assetid: 02ac7c51-eab1-4bf0-bf4c-77065e3fa744
diff --git a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md
index 34a42a84db..6e5bb4e3fd 100644
--- a/docs/cloud/cloud-and-web-programming-in-visual-cpp.md
+++ b/docs/cloud/cloud-and-web-programming-in-visual-cpp.md
@@ -2,7 +2,7 @@
title: "Cloud and Web Programming in Visual C++"
ms.date: "05/14/2019"
ms.assetid: b63611f1-9723-44d0-ba7f-c3ebef341313
-ms.topic: "landing-page"
+ms.topic: "overview"
---
# Cloud and Web Programming in Visual C++
diff --git a/docs/cpp/abort-function.md b/docs/cpp/abort-function.md
deleted file mode 100644
index 1be703a14e..0000000000
--- a/docs/cpp/abort-function.md
+++ /dev/null
@@ -1,13 +0,0 @@
----
-title: "abort Function"
-ms.date: "12/01/2017"
-helpviewer_keywords: ["abort function"]
-ms.assetid: 3352bcc4-1a8a-4e1f-8dcc-fe30f6b50f2d
----
-# abort Function
-
-The **abort** function, also declared in the standard include file \, terminates a C++ program. The difference between `exit` and **abort** is that `exit` allows the C++ run-time termination processing to take place (global object destructors will be called), whereas **abort** terminates the program immediately. For more information, see [abort](../c-runtime-library/reference/abort.md) in the *Run-Time Library Reference*.
-
-## See also
-
-[Program Termination](../cpp/program-termination.md)
\ No newline at end of file
diff --git a/docs/cpp/additional-startup-considerations.md b/docs/cpp/additional-startup-considerations.md
deleted file mode 100644
index 059cab6f6d..0000000000
--- a/docs/cpp/additional-startup-considerations.md
+++ /dev/null
@@ -1,27 +0,0 @@
----
-title: "Additional Startup Considerations"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["program startup [C++]", "startup code", "initializing before main"]
-ms.assetid: 0e942aa6-8342-447c-b068-8980ed7622bd
----
-# Additional Startup Considerations
-
-In C++, object construction and destruction can involve executing user code. Therefore, it is important to understand which initializations happen before entry to `main` and which destructors are invoked after exit from `main`. (For detailed information about construction and destruction of objects, see [Constructors](../cpp/constructors-cpp.md) and [Destructors](../cpp/destructors-cpp.md).)
-
-The following initializations take place prior to entry to `main`:
-
-- Default initialization of static data to zero. All static data without explicit initializers are set to zero prior to executing any other code, including run-time initialization. Static data members must still be explicitly defined.
-
-- Initialization of global static objects in a translation unit. This may occur either before entry to `main` or before the first use of any function or object in the object's translation unit.
-
-**Microsoft Specific**
-
-In Microsoft C++, global static objects are initialized before entry to `main`.
-
-**END Microsoft Specific**
-
-Global static objects that are mutually interdependent but in different translation units may cause incorrect behavior.
-
-## See also
-
-[Startup and Termination](../cpp/startup-and-termination-cpp.md)
\ No newline at end of file
diff --git a/docs/cpp/algorithms-modern-cpp.md b/docs/cpp/algorithms-modern-cpp.md
deleted file mode 100644
index f35f4b48b3..0000000000
--- a/docs/cpp/algorithms-modern-cpp.md
+++ /dev/null
@@ -1,74 +0,0 @@
----
-title: "Algorithms (Modern C++)"
-ms.date: "11/04/2016"
-ms.topic: "conceptual"
-ms.assetid: 6f758d3c-a7c7-4a50-92bb-97b2f6d4ab27
----
-# Algorithms (Modern C++)
-
-For modern C++ programming, we recommend that you use the algorithms in the [C++ Standard Library](../standard-library/cpp-standard-library-reference.md). Here are some important examples:
-
-- **for_each**, which is the default traversal algorithm. (Also **transform** for not-in-place semantics.)
-
-- **find_if**, which is the default search algorithm.
-
-- **sort**, **lower_bound**, and the other default sorting and searching algorithms.
-
-To write a comparator, use strict **<** and use *named lambdas* when you can.
-
-```cpp
-auto comp = [](const widget& w1, const widget& w2)
- { return w1.weight() < w2.weight(); }
-
-sort( v.begin(), v.end(), comp );
-
-auto i = lower_bound( v.begin(), v.end(), comp );
-```
-
-## Loops
-
-When possible, use range-based **for** loops or algorithm calls, or both, instead of hand-written loops. **copy**, **transform**, **count_if**, **remove_if**, and others like them are much better than handwritten loops because their intent is obvious and they make it easier to write bug-free code. Also, many C++ Standard Library algorithms have implementation optimizations that make them more efficient.
-
-Instead of old C++ like this:
-
-```cpp
-for ( auto i = strings.begin(); i != strings.end(); ++i ) {
- /* ... */
-}
-
-auto i = v.begin();
-
-for ( ; i != v.end(); ++i ) {
- if (*i > x && *i < y) break;
-}
-```
-
-Use modern C++ like this:
-
-```cpp
-for_each( begin(strings), end(strings), [](string& s) {
- // ...
-} );
-
-auto i = find_if( begin(v), end(v), [=](int i) { return i > x && i < y; } );
-```
-
-### Range-based for loops
-
-The range-based **for** loop is a C++11 language feature, not a C++ Standard Library algorithm. But it deserves mention in this discussion about loops. Range-based **for** loops are an extension of the **for** keyword and provide a convenient and efficient way to write loops that iterate over a range of values. C++ Standard Library containers, strings, and arrays are ready-made for range-based **for** loops. To enable this new iteration syntax for your user-defined type, add the following support:
-
-- A `begin` method that returns an iterator to the beginning of the structure and an `end` method that returns an iterator to the end of the structure.
-
-- Support in the iterator for these methods: **operator**\*, **operator!=**, and **operator++** (prefix version).
-
-These methods can be either members or stand-alone functions.
-
-## Random Numbers
-
-It's no secret that the old CRT `rand()` function has many flaws, which have been discussed at length in the C++ community. In modern C++, you don't have to deal with those shortcomings—nor do you have to invent your own uniformly distributed random number generator—because the tools for quickly and easily creating them are available in the C++ Standard Library, as shown in [\](../standard-library/random.md).
-
-## See also
-
-[Welcome Back to C++ (Modern C++)](../cpp/welcome-back-to-cpp-modern-cpp.md)
-[C++ Language Reference](../cpp/cpp-language-reference.md)
-[C++ Standard Library](../standard-library/cpp-standard-library-reference.md)
diff --git a/docs/cpp/alignment-cpp-declarations.md b/docs/cpp/alignment-cpp-declarations.md
index 36f8b03f32..44625938c2 100644
--- a/docs/cpp/alignment-cpp-declarations.md
+++ b/docs/cpp/alignment-cpp-declarations.md
@@ -1,16 +1,19 @@
---
-title: "Alignment (C++ Declarations)"
+title: "Alignment"
description: "How data alignment is specified in modern C++."
-ms.date: "05/30/2019"
+ms.date: "12/11/2019"
+f1_keywords: ["alignas_cpp", "alignof_cpp"]
ms.assetid: a986d510-ccb8-41f8-b905-433df9183485
---
-# Alignment (C++ Declarations)
+# Alignment
-One of the low-level features of C++ is the ability to specify the precise alignment of objects in memory to take maximum advantage of a specific hardware architecture. By default, the compiler aligns class and struct members on their size value: `bool` and `char` on 1-byte boundaries, `short` on 2-byte boundaries, `int`, `long`, and `float` on 4-byte boundaries, and `long long`, `double`, and `long double` on 8-byte boundaries. In most scenarios, you never have to be concerned with alignment because the default alignment is already optimal. In some cases, however, you can achieve significant performance improvements, or memory savings, by specifying a custom alignment for your data structures. Before Visual Studio 2015 you could use the Microsoft-specific keywords `__alignof` and `declspec(alignas)` to specify an alignment greater than the default. Starting in Visual Studio 2015 you should use the C++11 standard keywords [alignof and alignas](../cpp/alignof-and-alignas-cpp.md) for maximum code portability. The new keywords behave in the same way under the hood as the Microsoft-specific extensions. The documentation for those extensions also applies to the new keywords. For more information, see [__alignof Operator](../cpp/alignof-operator.md) and [align](../cpp/align-cpp.md). The C++ standard doesn't specify packing behavior for alignment on boundaries smaller than the compiler default for the target platform, so you still need to use the Microsoft #pragma [pack](../preprocessor/pack.md) in that case.
+One of the low-level features of C++ is the ability to specify the precise alignment of objects in memory to take maximum advantage of a specific hardware architecture. By default, the compiler aligns class and struct members on their size value: `bool` and `char` on 1-byte boundaries, `short` on 2-byte boundaries, `int`, `long`, and `float` on 4-byte boundaries, and `long long`, `double`, and `long double` on 8-byte boundaries.
+
+In most scenarios, you never have to be concerned with alignment because the default alignment is already optimal. In some cases, however, you can achieve significant performance improvements, or memory savings, by specifying a custom alignment for your data structures. Before Visual Studio 2015 you could use the Microsoft-specific keywords `__alignof` and `declspec(alignas)` to specify an alignment greater than the default. Starting in Visual Studio 2015 you should use the C++11 standard keywords **alignof** and **alignas** for maximum code portability. The new keywords behave in the same way under the hood as the Microsoft-specific extensions. The documentation for those extensions also applies to the new keywords. For more information, see [__alignof Operator](../cpp/alignof-operator.md) and [align](../cpp/align-cpp.md). The C++ standard doesn't specify packing behavior for alignment on boundaries smaller than the compiler default for the target platform, so you still need to use the Microsoft #pragma [pack](../preprocessor/pack.md) in that case.
Use the [aligned_storage class](../standard-library/aligned-storage-class.md) for memory allocation of data structures with custom alignments. The [aligned_union class](../standard-library/aligned-union-class.md) is for specifying alignment for unions with non-trivial constructors or destructors.
-## About Alignment
+## Alignment and memory addresses
Alignment is a property of a memory address, expressed as the numeric address modulo a power of 2. For example, the address 0x0001103F modulo 4 is 3. That address is said to be aligned to 4n+3, where 4 indicates the chosen power of 2. The alignment of an address depends on the chosen power of 2. The same address modulo 8 is 7. An address is said to be aligned to X if its alignment is Xn+0.
@@ -31,7 +34,7 @@ struct x_
int b; // 4 bytes
short c; // 2 bytes
char d; // 1 byte
-} MyStruct;
+} bar[3];
```
The compiler pads this structure to enforce alignment naturally.
@@ -48,18 +51,18 @@ struct x_
short c; // 2 bytes
char d; // 1 byte
char _pad1[1]; // padding to make sizeof(x_) multiple of 4
-}
+} bar[3];
```
-1. Both declarations return `sizeof(struct x_)` as 12 bytes.
+Both declarations return `sizeof(struct x_)` as 12 bytes.
-1. The second declaration includes two padding elements:
+The second declaration includes two padding elements:
-1. `char _pad0[3]` to align the `int b` member on a 4-byte boundary
+1. `char _pad0[3]` to align the `int b` member on a 4-byte boundary.
-1. `char _pad1[1]` to align the array elements of the structure `struct _x bar[3];`
+1. `char _pad1[1]` to align the array elements of the structure `struct _x bar[3];` on a four-byte boundary.
-1. The padding aligns the elements of `bar[3]` in a way that allows natural access.
+The padding aligns the elements of `bar[3]` in a way that allows natural access.
The following code example shows the `bar[3]` array layout:
@@ -88,6 +91,33 @@ adr offset element
0x0023 char _pad1[1];
```
+## alignof and alignas
+
+The **alignas** type specifier is a portable, C++ standard way to specify custom alignment of variables and user defined types. The **alignof** operator is likewise a standard, portable way to obtain the alignment of a specified type or variable.
+
+## Example
+
+You can use **alignas** on a class, struct or union, or on individual members. When multiple **alignas** specifiers are encountered, the compiler will choose the strictest one, (the one with the largest value).
+
+```cpp
+// alignas_alignof.cpp
+// compile with: cl /EHsc alignas_alignof.cpp
+#include
+
+struct alignas(16) Bar
+{
+ int i; // 4 bytes
+ int n; // 4 bytes
+ alignas(4) char arr[3];
+ short s; // 2 bytes
+};
+
+int main()
+{
+ std::cout << alignof(Bar) << std::endl; // output: 16
+}
+```
+
## See also
[Data structure alignment](https://en.wikipedia.org/wiki/Data_structure_alignment)
diff --git a/docs/cpp/alignof-and-alignas-cpp.md b/docs/cpp/alignof-and-alignas-cpp.md
deleted file mode 100644
index 710325123b..0000000000
--- a/docs/cpp/alignof-and-alignas-cpp.md
+++ /dev/null
@@ -1,35 +0,0 @@
----
-title: "alignof and alignas (C++)"
-ms.date: "11/04/2016"
-ms.assetid: 1d18aa8a-9621-4fb5-86e5-4cc86d5187f4
----
-# alignof and alignas (C++)
-
-The **alignas** type specifier is a portable, C++ standard way to specify custom alignment of variables and user defined types. The **alignof** operator is likewise a standard, portable way to obtain the alignment of a specified type or variable.
-
-## Example
-
-You can use **alignas** on a class, struct or union, or on individual members. When multiple **alignas** specifiers are encountered, the compiler will choose the strictest one, (the one with the largest value).
-
-```cpp
-// alignas_alignof.cpp
-// compile with: cl /EHsc alignas_alignof.cpp
-#include
-
-struct alignas(16) Bar
-{
- int i; // 4 bytes
- int n; // 4 bytes
- alignas(4) char arr[3];
- short s; // 2 bytes
-};
-
-int main()
-{
- std::cout << alignof(Bar) << std::endl; // output: 16
-}
-```
-
-## See also
-
-[Alignment](../cpp/alignment-cpp-declarations.md)
diff --git a/docs/cpp/allocator.md b/docs/cpp/allocator.md
index 1e7f5e0983..56eab82a9c 100644
--- a/docs/cpp/allocator.md
+++ b/docs/cpp/allocator.md
@@ -24,4 +24,6 @@ The native memory profiler in Visual Studio works by collecting allocation ETW e
__declspec(allocator) void* myMalloc(size_t size)
```
-For more information, see [Measure memory usage in Visual Studio](/visualstudio/profiling/memory-usage) and [Custom native ETW heap events](/visualstudio/profiling/custom-native-etw-heap-events).
\ No newline at end of file
+For more information, see [Measure memory usage in Visual Studio](/visualstudio/profiling/memory-usage) and [Custom native ETW heap events](/visualstudio/profiling/custom-native-etw-heap-events).
+
+**END Microsoft Specific**
diff --git a/docs/cpp/anonymous-class-types.md b/docs/cpp/anonymous-class-types.md
index f0a514746a..8683fcbc02 100644
--- a/docs/cpp/anonymous-class-types.md
+++ b/docs/cpp/anonymous-class-types.md
@@ -51,7 +51,7 @@ Anonymous classes are subject to certain restrictions. (For more information abo
## Anonymous structs
-### Microsoft Specific
+**Microsoft Specific**
A Microsoft C extension allows you to declare a structure variable within another structure without giving it a name. These nested structures are called anonymous structures. C++ does not allow anonymous structures.
@@ -84,4 +84,4 @@ int main()
//Output: 1234567
```
-**END Microsoft Specific**
\ No newline at end of file
+**END Microsoft Specific**
diff --git a/docs/cpp/argument-definitions.md b/docs/cpp/argument-definitions.md
deleted file mode 100644
index 13e01776d1..0000000000
--- a/docs/cpp/argument-definitions.md
+++ /dev/null
@@ -1,66 +0,0 @@
----
-title: "Argument Definitions"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["envp argument", "main function, arguments", "arguments [C++], for main function", "argv argument", "argc argument"]
-ms.assetid: 6148cbf3-ebe8-44f2-b277-de4b723991c7
----
-# Argument Definitions
-
-The arguments in the prototype
-
-```cpp
-int main( int argc, char* argv[], char* envp[]);
-int wmain( int argc, wchar_t* argv[], wchar_t* envp[]);
-```
-
-allow convenient command-line parsing of arguments and, optionally, access to environment variables. The argument definitions are as follows:
-
-*argc*
-An integer that contains the count of arguments that follow in *argv*. The *argc* parameter is always greater than or equal to 1.
-
-*argv*
-An array of null-terminated strings representing command-line arguments entered by the user of the program. By convention, `argv[0]` is the command with which the program is invoked, `argv[1]` is the first command-line argument, and so on, until `argv[argc]`, which is always NULL. See [Customizing Command Line Processing](../cpp/customizing-cpp-command-line-processing.md) for information on suppressing command-line processing.
-
-The first command-line argument is always `argv[1]` and the last one is `argv[argc - 1]`.
-
-> [!NOTE]
-> By convention, `argv[0]` is the command with which the program is invoked. However, it is possible to spawn a process using [CreateProcess](/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulefilenamew) and if you use both the first and second arguments (*lpApplicationName* and *lpCommandLine*), `argv[0]` may not be the executable name; use [GetModuleFileName](/windows/win32/api/libloaderapi/nf-libloaderapi-getmodulefilenamew) to retrieve the executable name, and its fully-qualified path.
-
-## Microsoft Specific
-
-*envp*
-The *envp* array, which is a common extension in many UNIX systems, is used in Microsoft C++. It is an array of strings representing the variables set in the user's environment. This array is terminated by a NULL entry. It can be declared as an array of pointers to **char** (`char *envp[]`) or as a pointer to pointers to **char** (`char **envp`). If your program uses `wmain` instead of `main`, use the **wchar_t** data type instead of **char**. The environment block passed to `main` and `wmain` is a "frozen" copy of the current environment. If you subsequently change the environment via a call to `putenv` or `_wputenv`, the current environment (as returned by `getenv` or `_wgetenv` and the `_environ` or `_wenviron` variable) will change, but the block pointed to by envp will not change. See [Customizing Command Line Processing](../cpp/customizing-cpp-command-line-processing.md) for information on suppressing environment processing. This argument is ANSI compatible in C, but not in C++.
-
-**END Microsoft Specific**
-
-## Example
-
-The following example shows how to use the *argc*, *argv*, and *envp* arguments to `main`:
-
-```cpp
-// argument_definitions.cpp
-// compile with: /EHsc
-#include
-#include
-
-using namespace std;
-int main( int argc, char *argv[], char *envp[] ) {
- int iNumberLines = 0; // Default is no line numbers.
-
- // If /n is passed to the .exe, display numbered listing
- // of environment variables.
-
- if ( (argc == 2) && _stricmp( argv[1], "/n" ) == 0 )
- iNumberLines = 1;
-
- // Walk through list of strings until a NULL is encountered.
- for( int i = 0; envp[i] != NULL; ++i ) {
- if( iNumberLines )
- cout << i << ": " << envp[i] << "\n";
- }
-}
-```
-
-## See also
-
-[main: Program Startup](../cpp/main-program-startup.md)
\ No newline at end of file
diff --git a/docs/cpp/arrays-cpp.md b/docs/cpp/arrays-cpp.md
index ea5ee000d8..245554d36b 100644
--- a/docs/cpp/arrays-cpp.md
+++ b/docs/cpp/arrays-cpp.md
@@ -1,62 +1,159 @@
---
title: "Arrays (C++)"
-ms.date: "11/19/2018"
+ms.date: "11/14/2019"
helpviewer_keywords: ["declaring arrays [C++], about declaring arrays", "multidimensional arrays [C++]", "arrays [C++]"]
ms.assetid: 3f5986aa-485c-4ba4-9502-67e2ef924238
---
# Arrays (C++)
-An array is a collection of like objects. The simplest case of an array is a vector, which may be declared by the following sequence:
+An array is a sequence of objects of the same type that occupy a contiguous area of memory. Traditional C-style arrays are the source of many bugs, but are still common, especially in older code bases. In modern C++, we strongly recommend using [std::vector](../standard-library/vector-class.md) or [std::array](../standard-library/array-class-stl.md) instead of C-style arrays described in this section. Both of these standard library types store their elements as a contiguous block of memory but provide much greater type safety along with iterators that are guaranteed to point to a valid location within the sequence. For more information, see [Containers (Modern C++)](containers-modern-cpp.md).
-> *decl-specifier* *identifier* **\[** *constant-expression* **]**
-> *decl-specifier* *identifier* **\[]**
-> *decl-specifier* *identifer* **\[]\[** *constant-expression* **]** . . .
-> *decl-specifier* *identifier* **\[** *constant-expression* **]** **\[** *constant-expression* **]** . . .
+## Stack declarations
-1. The declaration specifier:
+In a C++ array declaration, the array size is specified after the variable name, not after the type name as in some other languages. The following example declares an array of 1000 doubles to be allocated on the stack. The number of elements must be supplied as an integer literal or else as a constant expression because the compiler has to know how much stack space to allocate; it cannot use a value computed at run-time. Each element in the array is assigned a default value of 0. If you do not assign a default value, each element will initially contain whatever random values happen to be at that location.
- - An optional storage class specifier.
+```cpp
+ constexpr size_t size = 1000;
+
+ // Declare an array of doubles to be allocated on the stack
+ double numbers[size] {0};
+
+ // Assign a new value to the first element
+ numbers[0] = 1;
+
+ // Assign a value to each subsequent element
+ // (numbers[1] is the second element in the array.)
+ for (size_t i = 1; i < size; i++)
+ {
+ numbers[i] = numbers[i-1] * 1.1;
+ }
+
+ // Access each element
+ for (size_t i = 0; i < size; i++)
+ {
+ std::cout << numbers[i] << " ";
+ }
+```
+
+The first element in the array is the 0th element, and the last element is the (*n*-1) element, where *n* is the number of elements the array can contain. The number of elements in the declaration must be of an integral type and must be greater than 0. It is your responsibility to ensure that your program never passes a value to the subscript operator that is greater than `(size - 1)`.
- - Optional **const** and/or **volatile** specifiers.
+A zero-sized array is legal only when the array is the last field in a **struct** or **union** and when the Microsoft extensions (/Ze) are enabled.
- - The type name of the elements of the array.
+Stack-based arrays are faster to allocate and access than heap-based arrays, but the number of elements can't be so large that it uses up too much stack memory. How much is too much depends on your program. You can use profiling tools to determine whether an array is too large.
-1. The declarator:
+## Heap declarations
- - The identifier.
+If you require an array that is too large to be allocated on the stack, or whose size cannot be known at compile time, you can allocate it on the heap with a [new\[\]](new-operator-cpp.md) expression. The operator returns a pointer to the first element. You can use the subscript operator with the pointer variable just as with a stack-based array. You can also use [pointer arithmetic](../c-language/pointer-arithmetic.md) to move the pointer to any arbitrary elements in the array. It is your responsibility to ensure that:
- - A constant expression of integral type enclosed in brackets, **\[]**. If multiple dimensions are declared using additional brackets, the constant expression may be omitted on the first set of brackets.
+- you always keep a copy of the original pointer address so that you can delete the memory when you no longer need the array.
+- you do not increment or decrement the pointer address past the array bounds.
- - Optional additional brackets enclosing constant expressions.
+The following example shows how to define an array on the heap at run time, and how to access the array elements using the subscript operator or by using pointer arithmetic:
-1. An optional initializer. For more information, see [Initializers](../cpp/initializers.md).
+```cpp
-The number of elements in the array is given by the *constant-expression*. The first element in the array is the 0th element, and the last element is the (*n*-1) element, where *n* is the number of elements the array can contain. The *constant-expression* must be of an integral type and must be greater than 0. A zero-sized array is legal only when the array is the last field in a **struct** or **union** and when the Microsoft extensions (/Ze) are enabled.
+void do_something(size_t size)
+{
+ // Declare an array of doubles to be allocated on the heap
+ double* numbers = new double[size]{ 0 };
+
+ // Assign a new value to the first element
+ numbers[0] = 1;
+
+ // Assign a value to each subsequent element
+ // (numbers[1] is the second element in the array.)
+ for (size_t i = 1; i < size; i++)
+ {
+ numbers[i] = numbers[i - 1] * 1.1;
+ }
+
+ // Access each element with subscript operator
+ for (size_t i = 0; i < size; i++)
+ {
+ std::cout << numbers[i] << " ";
+ }
+
+ // Access each element with pointer arithmetic
+ // Use a copy of the pointer for iterating
+ double* p = numbers;
+
+ for (size_t i = 0; i < size; i++)
+ {
+ // Dereference the pointer, then increment it
+ std::cout << *p++ << " ";
+ }
+
+ // Alternate method:
+ // Reset p to numbers[0]:
+ p = numbers;
+
+ // Use address of pointer to compute bounds.
+ // The compiler computes size as the number
+ // of elements * (bytes per element).
+ while (p < (numbers + size))
+ {
+ // Dereference the pointer, then increment it
+ std::cout << *p++ << " ";
+ }
+
+ delete[] numbers; // don't forget to do this!
-The following example shows how to define an array at run time:
+}
+int main()
+{
+ do_something(108);
+}
+
+```
+
+## Initializing arrays
+
+You can initialize an array in a loop, one element at a time, or in a single statement. The contents of the following two arrays are identical:
```cpp
-// arrays.cpp
-// compile with: /EHsc
-#include
+ int a[10];
+ for (int i = 0; i < 10; ++i)
+ {
+ a[i] = i + 1;
+ }
-int main() {
- using namespace std;
- int size = 3, i = 0;
+ int b[10]{ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
+```
- int* myarr = new int[size];
+## Passing arrays to functions
- for (i = 0 ; i < size ; i++)
- myarr[i] = 10;
+When an array is passed to a function, it is passed as a pointer to the first element. This is true for both stack-based and heap-based arrays. The pointer contains no additional size or type information. This behavior is called *pointer decay*. When you pass an array to a function, you must always specify the number of elements in a separate parameter. This behavior also implies that the array elements are not copied when the array is passed to a function. To prevent the function from modifying the elements, specify the parameter as a pointer to **const** elements.
- for (i = 0 ; i < size ; i++)
- printf_s("myarr[%d] = %d\n", i, myarr[i]);
+The following example shows a function that accepts an array and a length. The pointer points to the original array, not a copy. Because the parameter is not **const**, the function can modify the array elements.
- delete [] myarr;
+```cpp
+void process(double p*, const size_t len)
+{
+ std::cout << "process:\n";
+ for (size_t i = 0; i < len; ++i)
+ {
+ // do something with p[i]
+ }
}
```
-Arrays are derived types and can therefore be constructed from any other derived or fundamental type except functions, references, and **void**.
+Declare the array as const to make it read-only within the function block:
+
+```cpp
+void process(const double p*, const size_t len);
+```
+
+The same function can also be declared in these ways, with no change in behavior. The array is still passed as a pointer to the first element:
+
+```cpp
+// Unsized array
+void process(const double p[] const size_t len);
+
+// Fixed-size array. Length must still be specified explicitly.
+void process(const double p[1000], const size_t len);
+```
+
+## Multidimensional arrays
Arrays constructed from other arrays are multidimensional arrays. These multidimensional arrays are specified by placing multiple bracketed constant expressions in sequence. For example, consider this declaration:
@@ -85,17 +182,9 @@ double TransportCosts[][cMarkets] = {
The preceding declaration defines an array that is three rows by four columns. The rows represent factories and the columns represent markets to which the factories ship. The values are the transportation costs from the factories to the markets. The first dimension of the array is left out, but the compiler fills it in by examining the initializer.
-Topics in this section:
-
-- [Using Arrays](../cpp/using-arrays-cpp.md)
-
-- [Arrays in Expressions](../cpp/arrays-in-expressions.md)
-
-- [Interpretation of Subscript Operator](../cpp/interpretation-of-subscript-operator.md)
+Use of the indirection operator (*) on an n-dimensional array type yields an n-1 dimensional array. If n is 1, a scalar (or array element) is yielded.
-- [Indirection on Array Types](../cpp/indirection-on-array-types.md)
-
-- [Ordering of C++ Arrays](../cpp/ordering-of-cpp-arrays.md)
+C++ arrays are stored in row-major order. Row-major order means the last subscript varies the fastest.
## Example
@@ -140,7 +229,7 @@ int main( int argc, char *argv[] ) {
double FindMinToMkt(int Mkt, double myTransportCosts[][cMkts], int mycFacts) {
double MinCost = DBL_MAX;
- for( int i = 0; i < cFacts; ++i )
+ for( size_t i = 0; i < cFacts; ++i )
MinCost = (MinCost < TransportCosts[i][Mkt]) ?
MinCost : TransportCosts[i][Mkt];
@@ -152,6 +241,121 @@ double FindMinToMkt(int Mkt, double myTransportCosts[][cMkts], int mycFacts) {
The minimum cost to Market 3 is: 17.29
```
-## Comments
-
The function `FindMinToMkt` is written such that adding new factories does not require any code changes, just a recompilation.
+
+## Initializing Arrays
+
+If a class has a constructor, arrays of that class are initialized by a constructor. If there are fewer items in the initializer list than elements in the array, the default constructor is used for the remaining elements. If no default constructor is defined for the class, the initializer list must be complete — that is, there must be one initializer for each element in the array.
+
+Consider the `Point` class that defines two constructors:
+
+```cpp
+// initializing_arrays1.cpp
+class Point
+{
+public:
+ Point() // Default constructor.
+ {
+ }
+ Point( int, int ) // Construct from two ints
+ {
+ }
+};
+
+// An array of Point objects can be declared as follows:
+Point aPoint[3] = {
+ Point( 3, 3 ) // Use int, int constructor.
+};
+
+int main()
+{
+}
+```
+
+The first element of `aPoint` is constructed using the constructor `Point( int, int )`; the remaining two elements are constructed using the default constructor.
+
+Static member arrays (whether **const** or not) can be initialized in their definitions (outside the class declaration). For example:
+
+```cpp
+// initializing_arrays2.cpp
+class WindowColors
+{
+public:
+ static const char *rgszWindowPartList[7];
+};
+
+const char *WindowColors::rgszWindowPartList[7] = {
+ "Active Title Bar", "Inactive Title Bar", "Title Bar Text",
+ "Menu Bar", "Menu Bar Text", "Window Background", "Frame" };
+int main()
+{
+}
+```
+
+## Accessing array elements
+
+You can access individual elements of an array by using the array subscript operator (`[ ]`). If a one-dimensional array is used in an expression that has no subscript, the array name evaluates to a pointer to the first element in the array.
+
+```cpp
+// using_arrays.cpp
+int main() {
+ char chArray[10];
+ char *pch = chArray; // Evaluates to a pointer to the first element.
+ char ch = chArray[0]; // Evaluates to the value of the first element.
+ ch = chArray[3]; // Evaluates to the value of the fourth element.
+}
+```
+
+When you use multidimensional arrays, you can use various combinations in expressions.
+
+```cpp
+// using_arrays_2.cpp
+// compile with: /EHsc /W1
+#include
+using namespace std;
+int main() {
+ double multi[4][4][3]; // Declare the array.
+ double (*p2multi)[3];
+ double (*p1multi);
+
+ cout << multi[3][2][2] << "\n"; // C4700 Use three subscripts.
+ p2multi = multi[3]; // Make p2multi point to
+ // fourth "plane" of multi.
+ p1multi = multi[3][2]; // Make p1multi point to
+ // fourth plane, third row
+ // of multi.
+}
+```
+
+In the preceding code, `multi` is a three-dimensional array of type **double**. The `p2multi` pointer points to an array of type **double** of size three. In this example, the array is used with one, two, and three subscripts. Although it is more common to specify all subscripts, as in the `cout` statement, it is sometimes useful to select a specific subset of array elements, as shown in the statements that follow `cout`.
+
+## Overloading subscript operator
+
+Like other operators, the subscript operator (`[]`) can be redefined by the user. The default behavior of the subscript operator, if not overloaded, is to combine the array name and the subscript using the following method:
+
+`*((array_name) + (subscript))`
+
+As in all addition that involves pointer types, scaling is performed automatically to adjust for the size of the type. Therefore, the resultant value is not *n* bytes from the origin of array-name; rather, it is the *n*th element of the array. For more information about this conversion, see [Additive operators](additive-operators-plus-and.md).
+
+Similarly, for multidimensional arrays, the address is derived using the following method:
+
+`((array_name) + (subscript1 * max2 * max3 * ... * maxn) + (subscript2 * max3 * ... * maxn) + ... + subscriptn))`
+
+## Arrays in Expressions
+
+When an identifier of an array type appears in an expression other than `sizeof`, address-of (`&`), or initialization of a reference, it is converted to a pointer to the first array element. For example:
+
+```cpp
+char szError1[] = "Error: Disk drive not ready.";
+char *psz = szError1;
+```
+
+The pointer `psz` points to the first element of the array `szError1`. Arrays, unlike pointers, are not modifiable l-values. Therefore, the following assignment is illegal:
+
+```cpp
+szError1 = psz;
+```
+
+## See also
+
+[std::array](../standard-library/array-class-stl.md)
diff --git a/docs/cpp/arrays-in-expressions.md b/docs/cpp/arrays-in-expressions.md
deleted file mode 100644
index 02acb86f05..0000000000
--- a/docs/cpp/arrays-in-expressions.md
+++ /dev/null
@@ -1,24 +0,0 @@
----
-title: "Arrays in Expressions"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["expressions [C++], arrays in", "arrays [C++], in expressions"]
-ms.assetid: 6e5a795b-d6bd-4e39-b313-6a20d47c4d4b
----
-# Arrays in Expressions
-
-When an identifier of an array type appears in an expression other than `sizeof`, address-of (**&**), or initialization of a reference, it is converted to a pointer to the first array element. For example:
-
-```cpp
-char szError1[] = "Error: Disk drive not ready.";
-char *psz = szError1;
-```
-
-The pointer `psz` points to the first element of the array `szError1`. Note that arrays, unlike pointers, are not modifiable l-values. Therefore, the following assignment is illegal:
-
-```cpp
-szError1 = psz;
-```
-
-## See also
-
-[Arrays](../cpp/arrays-cpp.md)
\ No newline at end of file
diff --git a/docs/cpp/attributes.md b/docs/cpp/attributes.md
index 19616ec38a..60a220d821 100644
--- a/docs/cpp/attributes.md
+++ b/docs/cpp/attributes.md
@@ -57,7 +57,7 @@ Attributes represent a standardized alternative to vendor-specific extensions su
- `[[gsl::suppress(rules)]]` This Microsoft-specific attribute is used for suppressing warnings from checkers that enforce [Guidelines Support Library (GSL)](https://github.com/Microsoft/GSL) rules in code. For example, consider this code snippet:
```cpp
- void main()
+ int main()
{
int arr[10]; // GSL warning 26494 will be fired
int* p = arr; // GSL warning 26485 will be fired
@@ -77,4 +77,5 @@ Attributes represent a standardized alternative to vendor-specific extensions su
- 26481 (Bounds Rule 1: Don't use pointer arithmetic. Use span instead.)
- The first two warnings fire when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing [[gsl::suppress(bounds)]] without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they are not wanted.
\ No newline at end of file
+ The first two warnings fire when you compile this code with the CppCoreCheck code analysis tool installed and activated. But the third warning doesn't fire because of the attribute. You can suppress the entire bounds profile by writing [[gsl::suppress(bounds)]] without including a specific rule number. The C++ Core Guidelines are designed to help you write better and safer code. The suppress attribute makes it easy to turn off the warnings when they are not wanted.
+
\ No newline at end of file
diff --git a/docs/cpp/auto-cpp.md b/docs/cpp/auto-cpp.md
index da48496fcc..1846c39c06 100644
--- a/docs/cpp/auto-cpp.md
+++ b/docs/cpp/auto-cpp.md
@@ -1,6 +1,6 @@
---
title: "auto (C++)"
-ms.date: "11/04/2016"
+ms.date: "12/10/2019"
f1_keywords: ["auto_CPP", "auto"]
helpviewer_keywords: ["auto keyword [C++]"]
ms.assetid: e9d495d7-601c-4547-b897-998389a311f4
@@ -9,6 +9,9 @@ ms.assetid: e9d495d7-601c-4547-b897-998389a311f4
Deduces the type of a declared variable from its initialization expression.
+> [!NOTE]
+> The C++ standard defines an original and a revised meaning for this keyword. Before Visual Studio 2010, the **auto** keyword declares a variable in the *automatic* storage class; that is, a variable that has a local lifetime. Starting with Visual Studio 2010, the **auto** keyword declares a variable whose type is deduced from the initialization expression in its declaration. The [/Zc:auto[-]](../build/reference/zc-auto-deduce-variable-type.md) compiler option controls the meaning of the **auto** keyword.
+
## Syntax
```
@@ -202,7 +205,7 @@ int f(int x) { return x; }
int main()
{
auto x = f(0);
- const auto & y = f(1);
+ const auto& y = f(1);
int (*p)(int x);
p = f;
auto fp = p;
diff --git a/docs/cpp/auto-keyword.md b/docs/cpp/auto-keyword.md
deleted file mode 100644
index 926bf9668d..0000000000
--- a/docs/cpp/auto-keyword.md
+++ /dev/null
@@ -1,29 +0,0 @@
----
-title: "auto Keyword"
-ms.date: "05/07/2019"
-ms.assetid: 744a41c0-2510-4140-a1be-96257e722908
----
-# auto Keyword
-
-The **auto** keyword is a declaration specifier. However, the C++ standard defines an original and a revised meaning for this keyword. Before Visual Studio 2010, the **auto** keyword declares a variable in the *automatic* storage class; that is, a variable that has a local lifetime. Starting with Visual Studio 2010, the **auto** keyword declares a variable whose type is deduced from the initialization expression in its declaration. The [/Zc:auto[-]](../build/reference/zc-auto-deduce-variable-type.md) compiler option controls the meaning of the **auto** keyword.
-
-## Syntax
-
-```cpp
-auto declarator ;
-auto declarator initializer;
-```
-
-## Remarks
-
-The definition of the **auto** keyword changes in the C++ programming language, but not in the C programming language.
-
-The following topics describe the **auto** keyword and the corresponding compiler option:
-
-- [auto](../cpp/auto-cpp.md) describes the new definition of the **auto** keyword.
-
-- [/Zc:auto (Deduce Variable Type)](../build/reference/zc-auto-deduce-variable-type.md) describes the compiler option that tells the compiler which definition of the **auto** keyword to use.
-
-## See also
-
-[Keywords](../cpp/keywords-cpp.md)
\ No newline at end of file
diff --git a/docs/cpp/bad-cast-exception.md b/docs/cpp/bad-cast-exception.md
index c309f01117..55589a65f3 100644
--- a/docs/cpp/bad-cast-exception.md
+++ b/docs/cpp/bad-cast-exception.md
@@ -1,11 +1,11 @@
---
-title: "bad_cast Exception"
-ms.date: "11/04/2016"
+title: "bad_cast exception"
+ms.date: "10/04/2019"
f1_keywords: ["bad_cast", "bad_cast_cpp"]
helpviewer_keywords: ["exceptions [C++], bad_cast", "bad_cast keyword [C++]"]
ms.assetid: 31eae1e7-d8d5-40a0-9fef-64a6a4fc9021
---
-# bad_cast Exception
+# bad_cast exception
The **bad_cast** exception is thrown by the **dynamic_cast** operator as the result of a failed cast to a reference type.
@@ -29,7 +29,7 @@ The following code contains an example of a failed **dynamic_cast** that throws
```cpp
// expre_bad_cast_Exception.cpp
// compile with: /EHsc /GR
-#include
+#include
#include
class Shape {
@@ -55,7 +55,7 @@ int main() {
}
```
-The exception is thrown because the object being cast (a Shape) is not derived from the specified cast type (Circle). To avoid the exception, add these declarations to `main`:
+The exception is thrown because the object being cast (a Shape) isn't derived from the specified cast type (Circle). To avoid the exception, add these declarations to `main`:
```cpp
Circle circle_instance;
@@ -113,6 +113,6 @@ const char* what() const noexcept override;
## See also
-[dynamic_cast Operator](../cpp/dynamic-cast-operator.md)
-[Keywords](../cpp/keywords-cpp.md)
-[C++ Exception Handling](../cpp/cpp-exception-handling.md)
\ No newline at end of file
+[dynamic_cast Operator](../cpp/dynamic-cast-operator.md)\
+[Keywords](../cpp/keywords-cpp.md)\
+[Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md)
diff --git a/docs/cpp/bad-typeid-exception.md b/docs/cpp/bad-typeid-exception.md
index 82aa567608..9581ce5f77 100644
--- a/docs/cpp/bad-typeid-exception.md
+++ b/docs/cpp/bad-typeid-exception.md
@@ -1,11 +1,11 @@
---
-title: "bad_typeid Exception"
-ms.date: "11/04/2016"
+title: "bad_typeid exception"
+ms.date: "10/04/2019"
f1_keywords: ["bad_typeid", "bad_typeid_cpp"]
helpviewer_keywords: ["bad_typeid exception", "exceptions [C++], bad_typeid"]
ms.assetid: 5963ed58-4ede-4597-957d-f7bbd06299c2
---
-# bad_typeid Exception
+# bad_typeid exception
The **bad_typeid** exception is thrown by the [typeid operator](../cpp/typeid-operator.md) when the operand for **typeid** is a NULL pointer.
@@ -39,7 +39,7 @@ The following example shows the **typeid** operator throwing a **bad_typeid** ex
```cpp
// expre_bad_typeid.cpp
// compile with: /EHsc /GR
-#include
+#include
#include
class A{
@@ -70,5 +70,5 @@ Object is NULL
## See also
-[Run-Time Type Information](../cpp/run-time-type-information.md)
-[Keywords](../cpp/keywords-cpp.md)
\ No newline at end of file
+[Run-Time Type Information](../cpp/run-time-type-information.md)\
+[Keywords](../cpp/keywords-cpp.md)
diff --git a/docs/cpp/based-grammar.md b/docs/cpp/based-grammar.md
index a3c04238ee..30abbf89b7 100644
--- a/docs/cpp/based-grammar.md
+++ b/docs/cpp/based-grammar.md
@@ -6,7 +6,7 @@ ms.assetid: a68ff750-c7fa-4c0c-8d5f-2df76e4686c5
---
# __based Grammar
-## Microsoft Specific
+**Microsoft Specific**
Based addressing is useful when you need precise control over the segment in which objects are allocated (static and dynamic based data).
diff --git a/docs/cpp/based-pointers-cpp.md b/docs/cpp/based-pointers-cpp.md
index 3bb1e5dcb8..2cade91b38 100644
--- a/docs/cpp/based-pointers-cpp.md
+++ b/docs/cpp/based-pointers-cpp.md
@@ -7,14 +7,11 @@ ms.assetid: 1e5f2e96-c52e-4738-8e14-87278681205e
---
# Based Pointers (C++)
-**Microsoft Specific**
-
-The **__based** keyword allows you to declare pointers based on pointers (pointers that are offsets from existing pointers).
+The **__based** keyword allows you to declare pointers based on pointers (pointers that are offsets from existing pointers). The **__based** keyword is Microsoft-specific.
## Syntax
```
-
type __based( base ) declarator
```
diff --git a/docs/cpp/basic-concepts-cpp.md b/docs/cpp/basic-concepts-cpp.md
index a7d556dfdb..05d95b0006 100644
--- a/docs/cpp/basic-concepts-cpp.md
+++ b/docs/cpp/basic-concepts-cpp.md
@@ -1,7 +1,7 @@
---
title: "Basic Concepts (C++)"
ms.custom: "index-page"
-ms.date: "11/04/2016"
+ms.date: "12/11/2019"
helpviewer_keywords: ["C++, basic language concepts"]
ms.assetid: 961801e6-2ffd-4bf1-bb71-7f55e48d9c79
---
@@ -9,24 +9,16 @@ ms.assetid: 961801e6-2ffd-4bf1-bb71-7f55e48d9c79
This section explains concepts that are critical to understanding C++. C programmers will be familiar with many of these concepts, but there are some subtle differences that can cause unexpected program results. The following topics are included:
-- [Declarations and definitions](../cpp/declarations-and-definitions-cpp.md)
-
-- [Scope of a C++ object or function](../cpp/scope-visual-cpp.md)
-
-- [Program definition and linkage rules](../cpp/program-and-linkage-cpp.md)
-
-- [Startup and termination](../cpp/startup-and-termination-cpp.md)
-
-- [L-values and r-values](../cpp/lvalues-and-rvalues-visual-cpp.md)
-
-- [Temporary Objects](../cpp/temporary-objects.md)
-
-- [Alignment](../cpp/alignment-cpp-declarations.md)
-
-- [alignof and alignas](../cpp/alignof-and-alignas-cpp.md)
-
-- [Trivial, standard-layout and POD types](../cpp/trivial-standard-layout-and-pod-types.md)
+- [C++ type system](cpp-type-system-modern-cpp.md)
+- [Scope](scope-visual-cpp.md)
+- [Translation units and linkage](program-and-linkage-cpp.md)
+- [main function and command-line arguments](main-function-command-line-args.md)
+- [Program termination](program-termination.md)
+- [Lvalues and rvalues](lvalues-and-rvalues-visual-cpp.md)
+- [Temporary objects](temporary-objects.md)
+- [Alignment](alignment-cpp-declarations.md)
+- [Trivial, standard-layout and POD types](trivial-standard-layout-and-pod-types.md)
## See also
-[C++ Language Reference](../cpp/cpp-language-reference.md)
\ No newline at end of file
+[C++ Language Reference](cpp-language-reference.md)
\ No newline at end of file
diff --git a/docs/cpp/bool-cpp.md b/docs/cpp/bool-cpp.md
index 72f1f52b32..a2cda764c8 100644
--- a/docs/cpp/bool-cpp.md
+++ b/docs/cpp/bool-cpp.md
@@ -43,4 +43,4 @@ The **bool** type participates in integral promotions. An r-value of type **bool
## See also
[Keywords](../cpp/keywords-cpp.md)
-[Fundamental Types](../cpp/fundamental-types-cpp.md)
\ No newline at end of file
+[Built-in types](../cpp/fundamental-types-cpp.md)
\ No newline at end of file
diff --git a/docs/cpp/c-cpp-language-and-standard-libraries.md b/docs/cpp/c-cpp-language-and-standard-libraries.md
index bc12d47159..586f735d82 100644
--- a/docs/cpp/c-cpp-language-and-standard-libraries.md
+++ b/docs/cpp/c-cpp-language-and-standard-libraries.md
@@ -2,7 +2,7 @@
title: "C/C++ language and standard libraries reference"
ms.date: "08/13/2019"
ms.assetid: c26a6682-961a-43ef-ad33-2adc612f69ac
-ms.topic: "landing-page"
+ms.topic: "overview"
---
# C/C++ language and standard libraries reference
diff --git a/docs/cpp/calling-example-function-prototype-and-call.md b/docs/cpp/calling-example-function-prototype-and-call.md
index ca961ca51e..7d30356872 100644
--- a/docs/cpp/calling-example-function-prototype-and-call.md
+++ b/docs/cpp/calling-example-function-prototype-and-call.md
@@ -6,13 +6,13 @@ ms.assetid: e4275d1f-df2e-4bfc-a162-eb43ec69554a
---
# Calling Example: Function Prototype and Call
-## Microsoft Specific
+**Microsoft Specific**
The following example shows the results of making a function call using various calling conventions.
This example is based on the following function skeleton. Replace `calltype` with the appropriate calling convention.
-```
+```cpp
void calltype MyFunc( char c, short s, int i, double f );
.
.
diff --git a/docs/cpp/cdecl.md b/docs/cpp/cdecl.md
index 29f5634a20..c971dd5c64 100644
--- a/docs/cpp/cdecl.md
+++ b/docs/cpp/cdecl.md
@@ -7,9 +7,7 @@ ms.assetid: 1ff1d03e-fb4e-4562-8be1-74f1ad6427f1
---
# __cdecl
-**Microsoft Specific**
-
-**__cdecl** is the default calling convention for C and C++ programs. Because the stack is cleaned up by the caller, it can do `vararg` functions. The **__cdecl** calling convention creates larger executables than [__stdcall](../cpp/stdcall.md), because it requires each function call to include stack cleanup code. The following list shows the implementation of this calling convention.
+**__cdecl** is the default calling convention for C and C++ programs. Because the stack is cleaned up by the caller, it can do `vararg` functions. The **__cdecl** calling convention creates larger executables than [__stdcall](../cpp/stdcall.md), because it requires each function call to include stack cleanup code. The following list shows the implementation of this calling convention. The **__cdecl** modifier is Microsoft-specific.
|Element|Implementation|
|-------------|--------------------|
diff --git a/docs/cpp/character-sets.md b/docs/cpp/character-sets.md
index 3e1bb00cc5..0044d20ba5 100644
--- a/docs/cpp/character-sets.md
+++ b/docs/cpp/character-sets.md
@@ -1,20 +1,32 @@
---
-title: "Character Sets"
-ms.date: "05/06/2019"
-helpviewer_keywords: ["Character sets", "basic source character set (C++)", "universal character names", "basic execution character set (C++)"]
+title: "Tokens and character sets"
+ms.date: "12/10/2019"
+helpviewer_keywords: ["Tokens (C++)", "Character sets", "basic source character set (C++)", "universal character names", "basic execution character set (C++)"]
ms.assetid: 379a2af6-6422-425f-8352-ef0bca6c0d74
---
-# Character Sets
+# Tokens and character sets
-The text of a C++ program is stored in source files that use a particular character encoding. The C++ standard specifies a basic source character set for source files and a basic execution character set for compiled files. The Microsoft C++ compiler (MSVC) allows an additional set of locale-specific characters to be used in source files and compiled files.
+The text of a C++ program consists of tokens and *white space*. A token is the smallest element of a C++ program that is meaningful to the compiler. The C++ parser recognizes these kinds of tokens:
-## Character sets
+- [Keywords](../cpp/keywords-cpp.md)
+- [Identifiers](../cpp/identifiers-cpp.md)
+- [Numeric, Boolean and Pointer Literals](../cpp/numeric-boolean-and-pointer-literals-cpp.md)
+- [String and Character Literals](../cpp/string-and-character-literals-cpp.md)
+- [User-Defined Literals](../cpp/user-defined-literals-cpp.md)
+- [Operators](../cpp/cpp-built-in-operators-precedence-and-associativity.md)
+- [Punctuators](../cpp/punctuators-cpp.md)
-The C++ standard specifies a *basic source character set* that may be used in source files. To represent characters outside of this set, additional characters can be specified by using a *universal character name*. When compiled, the *basic execution character set* and *basic execution wide-character set* represent the characters and strings that can appear in a program. The MSVC implementation allows additional characters in source code and compiled code.
+Tokens are usually separated by *white space*, which can be one or more:
-### Basic source character set
+- Blanks
+- Horizontal or vertical tabs
+- New lines
+- Form feeds
+- Comments
-The *basic source character set* consists of 96 characters that may be used in source files. This set includes the space character, horizontal tab, vertical tab, form feed and new-line control characters, and this set of graphical characters:
+## Basic source character set
+
+The C++ standard specifies a *basic source character set* that may be used in source files. To represent characters outside of this set, additional characters can be specified by using a *universal character name*. The MSVC implementation allows additional characters. The *basic source character set* consists of 96 characters that may be used in source files. This set includes the space character, horizontal tab, vertical tab, form feed and new-line control characters, and this set of graphical characters:
`a b c d e f g h i j k l m n o p q r s t u v w x y z`
@@ -49,6 +61,6 @@ The format of extended characters on the Windows clipboard is specific to applic
**END Microsoft Specific**
-### Basic execution character set
+### Execution character sets
-The *basic execution character set* and the *basic execution wide-character set* consist of all the characters in the basic source character set, and the control characters that represent alert, backspace, carriage return, and the null character. The *execution character set* and *execution wide-character set* are supersets of the basic sets. They include the implementation-defined source characters outside the basic source character set. The execution character set has a locale-specific representation.
\ No newline at end of file
+The *execution character sets* represent the characters and strings that can appear in a compiled program. These character sets consist of all the characters permitted in a source file, and also the control characters that represent alert, backspace, carriage return, and the null character. The execution character set has a locale-specific representation.
diff --git a/docs/cpp/cleaning-up-resources.md b/docs/cpp/cleaning-up-resources.md
index d25d50618c..bafd004bc3 100644
--- a/docs/cpp/cleaning-up-resources.md
+++ b/docs/cpp/cleaning-up-resources.md
@@ -60,5 +60,5 @@ int main() {
## See also
-[Writing a Termination Handler](../cpp/writing-a-termination-handler.md)
+[Writing a termination handler](../cpp/writing-a-termination-handler.md)
[Structured Exception Handling (C/C++)](../cpp/structured-exception-handling-c-cpp.md)
\ No newline at end of file
diff --git a/docs/cpp/clrcall.md b/docs/cpp/clrcall.md
index 09956079d6..208bdcb7ff 100644
--- a/docs/cpp/clrcall.md
+++ b/docs/cpp/clrcall.md
@@ -7,9 +7,7 @@ ms.assetid: 92096695-683a-40ed-bf65-0c8443572152
---
# __clrcall
-**Microsoft Specific**
-
-Specifies that a function can only be called from managed code. Use **__clrcall** for all virtual functions that will only be called from managed code. However this calling convention cannot be used for functions that will be called from native code.
+Specifies that a function can only be called from managed code. Use **__clrcall** for all virtual functions that will only be called from managed code. However this calling convention cannot be used for functions that will be called from native code. The **__clrcall** modifier is Microsoft-specific.
Use **__clrcall** to improve performance when calling from a managed function to a virtual managed function or from managed function to managed function through pointer.
diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_3.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_3.cpp
index 2d2b02be88..003ed5432d 100644
--- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_3.cpp
+++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_3.cpp
@@ -7,7 +7,7 @@
vector> v2;
remove_copy_if(v.begin(), v.end(), back_inserter(v2), [] (shared_ptr s)
{
- return s->artist.compare(L"Bob Dylan") == 0;
+ return s->artist.compare(L"Bob Dylan") == 0;
});
for (const auto& s : v2)
diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_4.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_4.cpp
index 4990fb5bde..d9e6da4407 100644
--- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_4.cpp
+++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_4.cpp
@@ -10,7 +10,7 @@
{
// Use dynamic_pointer_cast to test whether
// element is a shared_ptr.
- shared_ptr temp = dynamic_pointer_cast(p);
+ shared_ptr temp = dynamic_pointer_cast(p);
return temp.get() != nullptr;
});
diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp
index d76196d69e..c7d62f9ca6 100644
--- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp
+++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp
@@ -1,9 +1,9 @@
- // Create a unique_ptr to an array of 5 integers.
- auto p = make_unique(5);
+ // Create a unique_ptr to an array of 5 integers.
+ auto p = make_unique(5);
- // Initialize the array.
- for (int i = 0; i < 5; ++i)
- {
- p[i] = i;
- wcout << p[i] << endl;
- }
\ No newline at end of file
+ // Initialize the array.
+ for (int i = 0; i < 5; ++i)
+ {
+ p[i] = i;
+ wcout << p[i] << endl;
+ }
\ No newline at end of file
diff --git a/docs/cpp/codesnippet/CPP/how-to-create-and-use-weak-ptr-instances_1.cpp b/docs/cpp/codesnippet/CPP/how-to-create-and-use-weak-ptr-instances_1.cpp
index ef9cc20a0c..fa4665aa6d 100644
--- a/docs/cpp/codesnippet/CPP/how-to-create-and-use-weak-ptr-instances_1.cpp
+++ b/docs/cpp/codesnippet/CPP/how-to-create-and-use-weak-ptr-instances_1.cpp
@@ -6,77 +6,73 @@
using namespace std;
-class Controller
+class Controller
{
public:
- int Num;
- wstring Status;
- vector> others;
- explicit Controller(int i) : Num(i) , Status(L"On")
- {
- wcout << L"Creating Controller" << Num << endl;
- }
+ int Num;
+ wstring Status;
+ vector> others;
+ explicit Controller(int i) : Num(i), Status(L"On")
+ {
+ wcout << L"Creating Controller" << Num << endl;
+ }
- ~Controller()
- {
- wcout << L"Destroying Controller" << Num << endl;
- }
+ ~Controller()
+ {
+ wcout << L"Destroying Controller" << Num << endl;
+ }
- // Demonstrates how to test whether the
- // pointed-to memory still exists or not.
- void CheckStatuses() const
- {
- for_each(others.begin(), others.end(), [] (weak_ptr wp)
- {
- try
- {
- auto p = wp.lock();
- wcout << L"Status of " << p->Num << " = " << p->Status << endl;
- }
-
- catch (bad_weak_ptr b)
- {
- wcout << L"Null object" << endl;
- }
- });
- }
+ // Demonstrates how to test whether the
+ // pointed-to memory still exists or not.
+ void CheckStatuses() const
+ {
+ for_each(others.begin(), others.end(), [](weak_ptr wp) {
+ auto p = wp.lock();
+ if (p)
+ {
+ wcout << L"Status of " << p->Num << " = " << p->Status << endl;
+ }
+ else
+ {
+ wcout << L"Null object" << endl;
+ }
+ });
+ }
};
void RunTest()
{
- vector> v {
- make_shared(0),
- make_shared(1),
- make_shared(2),
- make_shared(3),
- make_shared(4),
- };
+ vector> v{
+ make_shared(0),
+ make_shared(1),
+ make_shared(2),
+ make_shared(3),
+ make_shared(4),
+ };
- // Each controller depends on all others not being deleted.
- // Give each controller a pointer to all the others.
- for (int i = 0 ; i < v.size(); ++i)
- {
- for_each(v.begin(), v.end(), [&v,i] (shared_ptr p)
- {
- if(p->Num != i)
- {
- v[i]->others.push_back(weak_ptr(p));
- wcout << L"push_back to v[" << i << "]: " << p->Num << endl;
- }
- });
- }
+ // Each controller depends on all others not being deleted.
+ // Give each controller a pointer to all the others.
+ for (int i = 0; i < v.size(); ++i)
+ {
+ for_each(v.begin(), v.end(), [&v, i](shared_ptr p) {
+ if (p->Num != i)
+ {
+ v[i]->others.push_back(weak_ptr(p));
+ wcout << L"push_back to v[" << i << "]: " << p->Num << endl;
+ }
+ });
+ }
- for_each(v.begin(), v.end(), [](shared_ptr& p)
- {
- wcout << L"use_count = " << p.use_count() << endl;
- p->CheckStatuses();
- });
+ for_each(v.begin(), v.end(), [](shared_ptr &p) {
+ wcout << L"use_count = " << p.use_count() << endl;
+ p->CheckStatuses();
+ });
}
int main()
-{
- RunTest();
- wcout << L"Press any key" << endl;
- char ch;
- cin.getline(&ch, 1);
+{
+ RunTest();
+ wcout << L"Press any key" << endl;
+ char ch;
+ cin.getline(&ch, 1);
}
\ No newline at end of file
diff --git a/docs/cpp/com-ptr-t-com-ptr-t.md b/docs/cpp/com-ptr-t-com-ptr-t.md
index 0031b2eef4..d949d47c0c 100644
--- a/docs/cpp/com-ptr-t-com-ptr-t.md
+++ b/docs/cpp/com-ptr-t-com-ptr-t.md
@@ -13,7 +13,7 @@ Constructs a **_com_ptr_t** object.
## Syntax
-```
+```cpp
// Default constructor.
// Constructs a NULL smart pointer.
_com_ptr_t() throw();
@@ -125,7 +125,7 @@ explicit _com_ptr_t(
);
```
-#### Parameters
+### Parameters
*pInterface*
A raw interface pointer.
@@ -154,6 +154,8 @@ A multibyte string that holds either a `CLSID` (starting with "**{**") or a `Pro
*pOuter*
The outer unknown for [aggregation](/windows/win32/com/aggregation).
+**END Microsoft Specific**
+
## See also
[_com_ptr_t Class](../cpp/com-ptr-t-class.md)
\ No newline at end of file
diff --git a/docs/cpp/compiler-com-support.md b/docs/cpp/compiler-com-support.md
index bc2be1e558..dcb6a6a21e 100644
--- a/docs/cpp/compiler-com-support.md
+++ b/docs/cpp/compiler-com-support.md
@@ -6,7 +6,7 @@ ms.assetid: 76a78442-f2a4-4985-9967-67e20773f847
---
# Compiler COM Support
-## Microsoft Specific
+**Microsoft Specific**
The Microsoft C++ compiler can directly read component object model (COM) type libraries and translate the contents into C++ source code that can be included in the compilation. Language extensions are available to facilitate COM programming on the client side for desktop apps.
diff --git a/docs/cpp/conditional-operator-q.md b/docs/cpp/conditional-operator-q.md
index 1895d46f62..14bcd7feaf 100644
--- a/docs/cpp/conditional-operator-q.md
+++ b/docs/cpp/conditional-operator-q.md
@@ -1,11 +1,11 @@
---
-title: "Conditional Operator: ? :"
+title: "Conditional Operator: ? :"
ms.date: "11/04/2016"
f1_keywords: ["?:", "?"]
helpviewer_keywords: ["conditional operators [C++]", "? : operator"]
ms.assetid: 88643ee8-7100-4f86-880a-705ec22b6271
---
-# Conditional Operator: ? :
+# Conditional Operator: ? :
## Syntax
diff --git a/docs/cpp/considerations-for-writing-prolog-epilog-code.md b/docs/cpp/considerations-for-writing-prolog-epilog-code.md
index 8234f6f12e..c0f1c15984 100644
--- a/docs/cpp/considerations-for-writing-prolog-epilog-code.md
+++ b/docs/cpp/considerations-for-writing-prolog-epilog-code.md
@@ -45,7 +45,7 @@ mov eax, [ebp - __LOCAL_SIZE] ;Error
The following example of a naked function containing custom prolog and epilog sequences uses the `__LOCAL_SIZE` symbol in the prolog sequence:
-```
+```cpp
// the__local_size_symbol.cpp
// processor: x86
__declspec ( naked ) int main() {
@@ -71,4 +71,4 @@ __declspec ( naked ) int main() {
## See also
-[Naked Function Calls](../cpp/naked-function-calls.md)
\ No newline at end of file
+[Naked Function Calls](../cpp/naked-function-calls.md)
diff --git a/docs/cpp/const-and-volatile-pointers.md b/docs/cpp/const-and-volatile-pointers.md
index e6026efa78..4f5b4e7f0c 100644
--- a/docs/cpp/const-and-volatile-pointers.md
+++ b/docs/cpp/const-and-volatile-pointers.md
@@ -1,12 +1,12 @@
---
-title: "const and volatile Pointers"
-ms.date: "11/04/2016"
+title: "const and volatile pointers"
+ms.date: "11/19/2019"
helpviewer_keywords: ["volatile keyword [C++], and pointers", "pointers, and const", "pointers, and volatile", "const keyword [C++], volatile pointers"]
ms.assetid: 0c92dc6c-400e-4342-b345-63ddfe649d7e
---
-# const and volatile Pointers
+# const and volatile pointers
-The [const](../cpp/const-cpp.md) and [volatile](../cpp/volatile-cpp.md) keywords change how pointers are treated. The **const** keyword specifies that the pointer cannot be modified after initialization; the pointer is protected from modification thereafter.
+The [const](const-cpp.md) and [volatile](volatile-cpp.md) keywords change how pointers are treated. The **const** keyword specifies that the pointer cannot be modified after initialization; the pointer is protected from modification thereafter.
The **volatile** keyword specifies that the value associated with the name that follows can be modified by actions other than those in the user application. Therefore, the **volatile** keyword is useful for declaring objects in shared memory that can be accessed by multiple processes or global data areas used for communication with interrupt service routines.
@@ -116,4 +116,5 @@ int main() {
## See also
-[Pointers](../cpp/pointers-cpp.md)
\ No newline at end of file
+[Pointers](pointers-cpp.md)
+[Raw pointers](raw-pointers.md)
\ No newline at end of file
diff --git a/docs/cpp/constexpr-cpp.md b/docs/cpp/constexpr-cpp.md
index 8201ff3e91..97c650b60b 100644
--- a/docs/cpp/constexpr-cpp.md
+++ b/docs/cpp/constexpr-cpp.md
@@ -1,40 +1,42 @@
---
title: "constexpr (C++)"
-ms.date: "08/05/2019"
+description: "Guide to the C++ language constexpr keyword."
+ms.date: "01/28/2020"
f1_keywords: ["constexpr_cpp"]
ms.assetid: c6458ccb-51c6-4a16-aa61-f69e6f4e04f7
+no-loc: [constexpr, const, inline, goto, try, if, switch, for, while]
---
# constexpr (C++)
-The keyword **constexpr** was introduced in C++11 and improved in C++14. It means *constant expression*. Like **const**, it can be applied to variables so that a compiler error is raised if any code attempts to modify the value. Unlike **const**, **constexpr** can also be applied to functions and class constructors. **constexpr** indicates that the value, or return value, is constant and, if possible, is computed at compile time.
+The keyword **constexpr** was introduced in C++11 and improved in C++14. It means *constant expression*. Like **const**, it can be applied to variables: A compiler error is raised when any code attempts to modify the value. Unlike **const**, **constexpr** can also be applied to functions and class constructors. **constexpr** indicates that the value, or return value, is constant and, where possible, is computed at compile time.
-A **constexpr** integral value can be used wherever a const integer is required, such as in template arguments and array declarations. And when a value can be computed at compile time instead of run time, it can help your program run faster and use less memory.
+A **constexpr** integral value can be used wherever a const integer is required, such as in template arguments and array declarations. And when a value is computed at compile time instead of run time, it helps your program run faster and use less memory.
To limit the complexity of compile-time constant computations, and their potential impacts on compilation time, the C++14 standard requires the types in constant expressions to be [literal types](trivial-standard-layout-and-pod-types.md#literal_types).
## Syntax
-> **constexpr** *literal-type* *identifier* **=** *constant-expression* **;**
-> **constexpr** *literal-type* *identifier* **{** *constant-expression* **}** **;**
-> **constexpr** *literal-type* *identifier* **(** *params* **)** **;**
+> **constexpr** *literal-type* *identifier* **=** *constant-expression* **;**\
+> **constexpr** *literal-type* *identifier* **{** *constant-expression* **}** **;**\
+> **constexpr** *literal-type* *identifier* **(** *params* **)** **;**\
> **constexpr** *ctor* **(** *params* **)** **;**
## Parameters
-*params*
+*params*\
One or more parameters, each of which must be a literal type and must itself be a constant expression.
-## Return Value
+## Return value
-A constexpr variable or function must return a [literal type](trivial-standard-layout-and-pod-types.md#literal_types).
+A **constexpr** variable or function must return a [literal type](trivial-standard-layout-and-pod-types.md#literal_types).
## constexpr variables
-The primary difference between const and constexpr variables is that the initialization of a const variable can be deferred until run time. A constexpr variable must be initialized at compile time. All constexpr variables are const.
+The primary difference between **const** and **constexpr** variables is that the initialization of a **const** variable can be deferred until run time. A **constexpr** variable must be initialized at compile time. All **constexpr** variables are **const**.
-- A variable can be declared with **constexpr**, if it has a literal type and is initialized. If the initialization is performed by a constructor, the constructor must be declared as **constexpr**.
+- A variable can be declared with **constexpr**, when it has a literal type and is initialized. If the initialization is performed by a constructor, the constructor must be declared as **constexpr**.
-- A reference may be declared as constexpr if the object that it references has been initialized by a constant expression and any implicit conversions that are invoked during initialization are also constant expressions.
+- A reference may be declared as **constexpr** when both these conditions are met: The referenced object is initialized by a constant expression, and any implicit conversions invoked during initialization are also constant expressions.
- All declarations of a **constexpr** variable or function must have the **constexpr** specifier.
@@ -49,7 +51,7 @@ constexpr int k = j + 1; //Error! j not a constant expression
## constexpr functions
-A **constexpr** function is one whose return value can be computed at compile time when consuming code requires it. Consuming code requires the return value at compile time, for example, to initialize a **constexpr** variable or provide a non-type template argument. When its arguments are **constexpr** values, a **constexpr** function produces a compile-time constant. When called with non-**constexpr** arguments, or when its value isn't required at compile time, it produces a value at run time like a regular function. (This dual behavior saves you from having to write **constexpr** and non-**constexpr** versions of the same function.)
+A **constexpr** function is one whose return value is computable at compile time when consuming code requires it. Consuming code requires the return value at compile time to initialize a **constexpr** variable, or to provide a non-type template argument. When its arguments are **constexpr** values, a **constexpr** function produces a compile-time constant. When called with non-**constexpr** arguments, or when its value isn't required at compile time, it produces a value at run time like a regular function. (This dual behavior saves you from having to write **constexpr** and non-**constexpr** versions of the same function.)
A **constexpr** function or constructor is implicitly **inline**.
@@ -59,23 +61,23 @@ The following rules apply to constexpr functions:
- A **constexpr** function can be recursive.
-- It cannot be [virtual](../cpp/virtual-cpp.md). A constructor cannot be defined as constexpr if the enclosing class has any virtual base classes.
+- It can't be [virtual](../cpp/virtual-cpp.md). A constructor can't be defined as **constexpr** when the enclosing class has any virtual base classes.
- The body can be defined as `= default` or `= delete`.
-- The body can contain no **goto** statements or try blocks.
+- The body can contain no **goto** statements or **try** blocks.
-- An explicit specialization of a non-constexpr template can be declared as **constexpr**:
+- An explicit specialization of a non-**constexpr** template can be declared as **constexpr**:
-- An explicit specialization of a **constexpr** template does not have to also be **constexpr**:
+- An explicit specialization of a **constexpr** template doesn't also have to be **constexpr**:
The following rules apply to **constexpr** functions in Visual Studio 2017 and later:
-- It may contain **if** and **switch** statements, and all looping statements including **for**, range-based for, **while**, and **do-while**.
+- It may contain **if** and **switch** statements, and all looping statements including **for**, range-based **for**, **while**, and **do-while**.
-- It may contain local variable declarations, but the variable must be initialized, must be a literal type, and cannot be static or thread-local. The locally declared variable isn't required to be const and may mutate.
+- It may contain local variable declarations, but the variable must be initialized. It must be a literal type, and can't be **static** or thread-local. The locally declared variable isn't required to be **const**, and may mutate.
-- A constexpr non-static member function is not required to be implicitly const.
+- A **constexpr** non-**static** member function isn't required to be implicitly **const**.
```cpp
constexpr float exp(float x, int n)
@@ -91,11 +93,11 @@ constexpr float exp(float x, int n)
## extern constexpr
-The [/Zc:externConstexpr](../build/reference/zc-externconstexpr.md) compiler option causes the compiler to apply [external linkage](../c-language/external-linkage.md) to variables declared by using **extern constexpr**. In earlier versions of Visual Studio, and by default or if **/Zc:externConstexpr-** is specified, Visual Studio applies internal linkage to **constexpr** variables even if the **extern** keyword is used. The **/Zc:externConstexpr** option is available starting in Visual Studio 2017 Update 15.6, and is off by default. The /permissive- option does not enable **/Zc:externConstexpr**.
+The [/Zc:externConstexpr](../build/reference/zc-externconstexpr.md) compiler option causes the compiler to apply [external linkage](../c-language/external-linkage.md) to variables declared by using **extern constexpr**. In earlier versions of Visual Studio, either by default or when **/Zc:externConstexpr-** is specified, Visual Studio applies internal linkage to **constexpr** variables even when the **extern** keyword is used. The **/Zc:externConstexpr** option is available starting in Visual Studio 2017 Update 15.6, and is off by default. The [/permissive-](../build/reference/permissive-standards-conformance.md) option doesn't enable **/Zc:externConstexpr**.
## Example
-The following example shows **constexpr** variables, functions, and a user-defined type. In the last statement in main(), the **constexpr** member function GetValue() is a run-time call because the value isn't required to be known at compile time.
+The following example shows **constexpr** variables, functions, and a user-defined type. In the last statement in `main()`, the **constexpr** member function `GetValue()` is a run-time call because the value isn't required to be known at compile time.
```cpp
// constexpr.cpp
@@ -171,5 +173,5 @@ Visual Studio 2015 or later.
## See also
-[Declarations and Definitions](../cpp/declarations-and-definitions-cpp.md)\
+[Declarations and definitions](../cpp/declarations-and-definitions-cpp.md)\
[const](../cpp/const-cpp.md)
diff --git a/docs/cpp/constructors-cpp.md b/docs/cpp/constructors-cpp.md
index 16847fea73..6092359629 100644
--- a/docs/cpp/constructors-cpp.md
+++ b/docs/cpp/constructors-cpp.md
@@ -1,6 +1,6 @@
---
title: "Constructors (C++)"
-ms.date: "07/02/2019"
+ms.date: "12/27/2019"
helpviewer_keywords: ["constructors [C++]", "objects [C++], creating", "instance constructors"]
ms.assetid: 3e9f7211-313a-4a92-9584-337452e061a9
---
@@ -197,13 +197,13 @@ Attempting to copy the object produces error *C2280: attempting to reference a d
## Move constructors
-A *move constructor* is a special member function that moves ownership of an existing object's data to a new variable without copying the original data. It takes an rvalue reference as its first parameter, and any additional parameters must have default values. Move constructors can significantly increase your program's efficiency when passing around large objects. A move constructor takes an rvalue reference as its first parameter. Any other parameters must have default values.
+A *move constructor* is a special member function that moves ownership of an existing object's data to a new variable without copying the original data. It takes an rvalue reference as its first parameter, and any additional parameters must have default values. Move constructors can significantly increase your program's efficiency when passing around large objects.
```cpp
Box(Box&& other);
```
-The compiler chooses a move constructor in certain situations where the object is being initialized by another object of the same type that is about to be destroyed and no longer needs it resources. The following example shows one case when a move constructor is selected by overload resolution. The variable *box* returned by get_Box() is an *xvalue* (eXpiring value) which is about to go out of scope. To provide motivation for this example, let's give Box a large vector of strings that represent its contents. Rather than copying the vector and its strings, the move constructor "steals" it from the expiring value "box" so that the vector now belongs to the new object. The call to `std::move` is all that's needed because both `vector` and `string` classes implement their own move constructors.
+The compiler chooses a move constructor in certain situations where the object is being initialized by another object of the same type that is about to be destroyed and no longer needs its resources. The following example shows one case when a move constructor is selected by overload resolution. In the constructor that calls `get_Box()`, the returned value is an *xvalue* (eXpiring value). It is not assigned to any variable and is therefore about to go out of scope. To provide motivation for this example, let's give Box a large vector of strings that represent its contents. Rather than copying the vector and its strings, the move constructor "steals" it from the expiring value "box" so that the vector now belongs to the new object. The call to `std::move` is all that's needed because both `vector` and `string` classes implement their own move constructors.
```cpp
#include
@@ -469,6 +469,52 @@ If a constructor throws an exception, the order of destruction is the reverse of
1. If the constructor is non-delegating, all fully-constructed base class objects and members are destroyed. However, because the object itself is not fully constructed, the destructor is not run.
+## Derived constructors and extended aggregate initialization
+
+If the constructor of a base class is non-public, but accessible to a derived class, then under **/std:c++17** mode in Visual Studio 2017 and later you can't use empty braces to initialize an object of the derived type.
+
+The following example shows C++14 conformant behavior:
+
+```cpp
+struct Derived;
+
+struct Base {
+ friend struct Derived;
+private:
+ Base() {}
+};
+
+struct Derived : Base {};
+
+Derived d1; // OK. No aggregate init involved.
+Derived d2 {}; // OK in C++14: Calls Derived::Derived()
+ // which can call Base ctor.
+```
+
+In C++17, `Derived` is now considered an aggregate type. It means that the initialization of `Base` via the private default constructor happens directly, as part of the extended aggregate initialization rule. Previously, the `Base` private constructor was called via the `Derived` constructor, and it succeeded because of the friend declaration.
+
+The following example shows C++17 behavior in Visual Studio 2017 and later in **/std:c++17** mode:
+
+```cpp
+struct Derived;
+
+struct Base {
+ friend struct Derived;
+private:
+ Base() {}
+};
+
+struct Derived : Base {
+ Derived() {} // add user-defined constructor
+ // to call with {} initialization
+};
+
+Derived d1; // OK. No aggregate init involved.
+
+Derived d2 {}; // error C2248: 'Base::Base': cannot access
+ // private member declared in class 'Base'
+```
+
### Constructors for classes that have multiple inheritance
If a class is derived from multiple base classes, the base class constructors are invoked in the order in which they are listed in the declaration of the derived class:
@@ -511,47 +557,6 @@ BaseClass3 ctor
DerivedClass ctor
```
-## Virtual functions in constructors
-
-We recommend that you be careful when you call virtual functions in constructors. Because the base class constructor is always invoked before the derived class constructor, the function that's called in the base constructor is the base class version, not the derived class version. In the following example, constructing a `DerivedClass` causes the `BaseClass` implementation of `print_it()` to execute before the `DerivedClass` constructor causes the `DerivedClass` implementation of `print_it()` to execute:
-
-```cpp
-#include
-using namespace std;
-
-class BaseClass{
-public:
- BaseClass(){
- print_it();
- }
- virtual void print_it() {
- cout << "BaseClass print_it" << endl;
- }
-};
-
-class DerivedClass : public BaseClass {
-public:
- DerivedClass() {
- print_it();
- }
- virtual void print_it(){
- cout << "Derived Class print_it" << endl;
- }
-};
-
-int main() {
-
- DerivedClass dc;
-}
-```
-
-Here's the output:
-
-```Output
-BaseClass print_it
-Derived Class print_it
-```
-
## Delegating constructors
A *delegating constructor* calls a different constructor in the same class to do some of the work of initialization. This is useful when you have multiple constructors that all have to perform similar work. You can write the main logic in one constructor and invoke it from others. In the following trivial example, Box(int) delegates its work to Box(int,int,int):
@@ -574,7 +579,7 @@ public:
};
```
-The object created by the constructors is fully initialized as soon as any constructor is finished. For more information, see [Uniform Initialization and Delegating Constructors](../cpp/uniform-initialization-and-delegating-constructors.md).
+The object created by the constructors is fully initialized as soon as any constructor is finished. For more information, see [Delegating Constructors](../cpp/delegating-constructors.md).
## Inheriting constructors (C++11)
@@ -629,7 +634,7 @@ Derived d4 calls: Base()*/
::: moniker range=">=vs-2017"
-**Visual Studio 2017 version 15.7 and later**: The **using** statement in **/std:C++17** mode brings into scope all constructors from the base class except those that have an identical signature to constructors in the derived class. In general, it is best to use inheriting constructors when the derived class declares no new data members or constructors. See also [Improvements in Visual Studio 2017 version 15.7](../overview/cpp-conformance-improvements.md#improvements_157).
+**Visual Studio 2017 and later**: The **using** statement in **/std:c++17** mode brings into scope all constructors from the base class except those that have an identical signature to constructors in the derived class. In general, it is best to use inheriting constructors when the derived class declares no new data members or constructors. See also [Improvements in Visual Studio 2017 version 15.7](https://docs.microsoft.com/cpp/overview/cpp-conformance-improvements?view=vs-2017#improvements_157).
::: moniker-end
@@ -677,3 +682,13 @@ int main(){
StorageBox sb3(1, 2, 3, {"myname", "myaddress"});
}
```
+
+## In this section
+
+- [Copy constructors and copy assignment operators](copy-constructors-and-copy-assignment-operators-cpp.md)
+- [Move constructors and move assignment operators](move-constructors-and-move-assignment-operators-cpp.md)
+- [Delegating constructors](delegating-constructors.md)
+
+## See also
+
+[Classes and structs](classes-and-structs-cpp.md)
diff --git a/docs/cpp/containers-modern-cpp.md b/docs/cpp/containers-modern-cpp.md
deleted file mode 100644
index 5fb51a6a74..0000000000
--- a/docs/cpp/containers-modern-cpp.md
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: "Containers (Modern C++)"
-ms.date: "1/18/2018"
-ms.topic: "conceptual"
----
-# Containers (Modern C++)
-
-By default, use [vector](../standard-library/vector-class.md) as the preferred sequential container in C++. This is equivalent to `List` in .NET languages.
-
-```cpp
-vector apples;
-apples.push_back("Granny Smith");
-```
-
-Use [map](../standard-library/map-class.md) (not `unordered_map`) as the default associative container. Use [set](../standard-library/set-class.md), [multimap](../standard-library/multimap-class.md), and [multiset](../standard-library/multiset-class.md) for degenerate & multi cases.
-
-```cpp
-map apple_color;
-// ...
-apple_color["Granny Smith"] = "Green";
-```
-
-When performance optimization is needed, consider using:
-
-- The [array](../standard-library/array-class-stl.md) type when embedding is important, for example, as a class member.
-
-- Unordered associative containers such as [unordered_map](../standard-library/unordered-map-class.md). These have lower per-element overhead and constant-time lookup, but they can be harder to use correctly and efficiently.
-
-- Sorted `vector`. For more information, see [Algorithms](../cpp/algorithms-modern-cpp.md).
-
-Don’t use C-style arrays. For older APIs that need direct access to the data, use accessor methods such as `f(vec.data(), vec.size());` instead.
-
-For more information about containers, see [C++ Standard Library Containers](../standard-library/stl-containers.md).
-
-## See also
-
-[Welcome Back to C++ (Modern C++)](../cpp/welcome-back-to-cpp-modern-cpp.md)
-[C++ Language Reference](../cpp/cpp-language-reference.md)
-[C++ Standard Library](../standard-library/cpp-standard-library-reference.md)
diff --git a/docs/cpp/cpp-bit-fields.md b/docs/cpp/cpp-bit-fields.md
index 51bc1cf6bb..1ee0c1cd91 100644
--- a/docs/cpp/cpp-bit-fields.md
+++ b/docs/cpp/cpp-bit-fields.md
@@ -64,7 +64,7 @@ then the memory layout is as shown in the following figure:
![Layout of Date object with zero-length bit field](../cpp/media/vc38uq2.png "Layout of Date object with zero-length bit field")
Layout of Date Object with Zero-Length Bit Field
-The underlying type of a bit field must be an integral type, as described in [Fundamental Types](../cpp/fundamental-types-cpp.md).
+The underlying type of a bit field must be an integral type, as described in [Built-in types](../cpp/fundamental-types-cpp.md).
If the initializer for a reference of type `const T&` is an lvalue that refers to a bit field of type `T`, the reference is not bound to the bit field directly. Instead, the reference is bound to a temporary initialized to hold the value of the bit field.
diff --git a/docs/cpp/cpp-exception-handling.md b/docs/cpp/cpp-exception-handling.md
deleted file mode 100644
index 1b2176af11..0000000000
--- a/docs/cpp/cpp-exception-handling.md
+++ /dev/null
@@ -1,37 +0,0 @@
----
-title: "C++ Exception Handling"
-ms.date: "11/04/2016"
-helpviewer_keywords: ["C++ exception handling"]
-ms.assetid: 65f80b44-9d0f-4d17-b910-07205a5c5c40
----
-# C++ Exception Handling
-
-The C++ language provides built-in support for throwing and catching exceptions. When programming in C++, you should almost always use the built-in C++ exception support as described in this section.
-
-To enable C++ exception handling in your code, use [/EHsc](../build/reference/eh-exception-handling-model.md).
-
-## In This Section
-
-This discussion on C++ exception handling includes:
-
-- [The try, catch, and throw Statements](../cpp/try-throw-and-catch-statements-cpp.md)
-
-- [How Catch Blocks are Evaluated](../cpp/how-catch-blocks-are-evaluated-cpp.md)
-
-- [Exceptions and Stack Unwinding](../cpp/exceptions-and-stack-unwinding-in-cpp.md)
-
-- [Exception Specifications](../cpp/exception-specifications-throw-cpp.md)
-
-- [noexcept](../cpp/noexcept-cpp.md)
-
-- [Unhandled C++ Exceptions](../cpp/unhandled-cpp-exceptions.md)
-
-- [Mixing C (Structured) and C++ Exceptions](../cpp/mixing-c-structured-and-cpp-exceptions.md)
-
-## Support for Earlier MFC Exceptions
-
-As of version 4.0, MFC began using the C++ exception handling mechanism. Although you are encouraged to use C++ exception handling in new code, MFC version 4.0 and later retains the macros from previous versions of MFC so that old code will not be broken. The macros and the new mechanism can be combined as well. For information on mixing macros and C++ exception handling and on converting old code to use the new mechanism, see the articles [Exceptions: Using MFC Macros and C++ Exceptions](../mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md) and [Exceptions: Converting from MFC Exception Macros](../mfc/exceptions-converting-from-mfc-exception-macros.md). The older MFC exception macros, if you still use them, evaluate to C++ exception keywords. See [Exceptions: Changes to Exception Macros in Version 3.0](../mfc/exceptions-changes-to-exception-macros-in-version-3-0.md).
-
-## See also
-
-[Exception Handling](../cpp/exception-handling-in-visual-cpp.md)
\ No newline at end of file
diff --git a/docs/cpp/cpp-language-reference.md b/docs/cpp/cpp-language-reference.md
index da89f756af..ee4404aef5 100644
--- a/docs/cpp/cpp-language-reference.md
+++ b/docs/cpp/cpp-language-reference.md
@@ -1,7 +1,7 @@
---
title: "C++ Language Reference"
ms.custom: "index-page"
-ms.date: "05/06/2019"
+ms.date: "12/10/2019"
helpviewer_keywords: ["C++, language reference"]
ms.assetid: 4be9cacb-c862-4391-894a-3a118c9c93ce
---
@@ -25,8 +25,14 @@ Fundamental lexical elements of a C++ program: tokens, comments, operators, keyw
[Basic Concepts](../cpp/basic-concepts-cpp.md)
Scope, linkage, program startup and termination, storage classes, and types.
+[Built-in types](fundamental-types-cpp.md)
+The fundamental types that are built into the C++ compiler and their value ranges.
+
[Standard Conversions](../cpp/standard-conversions.md)
-Type conversions between built-in, or "fundamental," types. Also, arithmetic conversions and conversions among pointer, reference, and pointer-to-member types.
+Type conversions between built-in types. Also, arithmetic conversions and conversions among pointer, reference, and pointer-to-member types.
+
+[Declarations and definitions](declarations-and-definitions-cpp.md)
+Declaring and defining variables, types and functions.
[Operators, Precedence and Associativity](../cpp/cpp-built-in-operators-precedence-and-associativity.md)
The operators in C++.
@@ -40,12 +46,12 @@ A programming technique that implicitly defines a function object class and cons
[Statements](../cpp/statements-cpp.md)
Expression, null, compound, selection, iteration, jump, and declaration statements.
-[Declarations and Definitions](declarations-and-definitions-cpp.md)
-Storage-class specifiers, function definitions, initializations, enumerations, **class**, **struct**, and **union** declarations, and **typedef** declarations. Also, **inline** functions, **const** keyword, namespaces.
-
-[Classes, Structures, and Unions](../cpp/classes-and-structs-cpp.md)
+[Classes and structs](../cpp/classes-and-structs-cpp.md)
Introduction to classes, structures, and unions. Also, member functions, special member functions, data members, bit fields, **this** pointer, nested classes.
+[Unions](unions.md)
+User-defined types in which all members share the same memory location.
+
[Derived Classes](../cpp/inheritance-cpp.md)
Single and multiple inheritance, **virtual** functions, multiple base classes, **abstract** classes, scope rules. Also, the **__super** and **__interface** keywords.
diff --git a/docs/cpp/cpp-type-system-modern-cpp.md b/docs/cpp/cpp-type-system-modern-cpp.md
index a183938237..e045650e1a 100644
--- a/docs/cpp/cpp-type-system-modern-cpp.md
+++ b/docs/cpp/cpp-type-system-modern-cpp.md
@@ -1,10 +1,10 @@
---
-title: "C++ Type System (Modern C++)"
-ms.date: "11/19/2018"
+title: "C++ type system"
+ms.date: "11/19/2019"
ms.topic: "conceptual"
ms.assetid: 553c0ed6-77c4-43e9-87b1-c903eec53e80
---
-# C++ Type System (Modern C++)
+# C++ type system
The concept of *type* is very important in C++. Every variable, function argument, and function return value must have a type in order to be compiled. Also, every expression (including literal values) is implicitly given a type by the compiler before it is evaluated. Some examples of types include **int** to store integral values, **double** to store floating-point values (also known as *scalar* data types), or the Standard Library class [std::basic_string](../standard-library/basic-string-class.md) to store text. You can create your own type by defining a **class** or **struct**. The type specifies the amount of memory that will be allocated for the variable (or expression result), the kinds of values that may be stored in that variable, how those values (as bit patterns) are interpreted, and the operations that can be performed on it. This article contains an informal overview of the major features of the C++ type system.
@@ -18,9 +18,7 @@ The concept of *type* is very important in C++. Every variable, function argumen
## Specifying variable and function types
-C++ is a *strongly typed* language and it is also *statically-typed*; every object has a type and that type never changes (not to be confused with static data objects).
-**When you declare a variable** in your code, you must either specify its type explicitly, or use the **auto** keyword to instruct the compiler to deduce the type from the initializer.
-**When you declare a function** in your code, you must specify the type of each argument and its return value, or **void** if no value is returned by the function. The exception is when you are using function templates, which allow for arguments of arbitrary types.
+C++ is a *strongly typed* language and it is also *statically-typed*; every object has a type and that type never changes (not to be confused with static data objects). When you declare a variable in your code, you must either specify its type explicitly, or use the **auto** keyword to instruct the compiler to deduce the type from the initializer. When you declare a function in your code, you must specify the type of each argument and its return value, or **void** if no value is returned by the function. The exception is when you are using function templates, which allow for arguments of arbitrary types.
After you first declare a variable, you cannot change its type at some later point. However, you can copy the variable’s value or a function’s return value into another variable of a different type. Such operations are called *type conversions*, which are sometimes necessary but are also potential sources of data loss or incorrectness.
@@ -49,7 +47,7 @@ int maxValue; // Not recommended! maxValue contains
Unlike some languages, C++ has no universal base type from which all other types are derived. The language includes many *fundamental types*, also known as *built-in types*. This includes numeric types such as **int**, **double**, **long**, **bool**, plus the **char** and **wchar_t** types for ASCII and UNICODE characters, respectively. Most fundamental types (except **bool**, **double**, **wchar_t** and related types) all have unsigned versions, which modify the range of values that the variable can store. For example, an **int**, which stores a 32-bit signed integer, can represent a value from -2,147,483,648 to 2,147,483,647. An **unsigned int**, which is also stored as 32-bits, can store a value from 0 to 4,294,967,295. The total number of possible values in each case is the same; only the range is different.
-The fundamental types are recognized by the compiler, which has built-in rules that govern what operations you can perform on them, and how they can be converted to other fundamental types. For a complete list of built-in types and their size and numeric limits, see [Fundamental Types](../cpp/fundamental-types-cpp.md).
+The fundamental types are recognized by the compiler, which has built-in rules that govern what operations you can perform on them, and how they can be converted to other fundamental types. For a complete list of built-in types and their size and numeric limits, see [Built-in types](../cpp/fundamental-types-cpp.md).
The following illustration shows the relative sizes of the built-in types:
@@ -162,6 +160,6 @@ For more information about the C++ type system, see the following topics.
## See also
-[Welcome Back to C++ (Modern C++)](../cpp/welcome-back-to-cpp-modern-cpp.md)
+[Welcome back to C++](../cpp/welcome-back-to-cpp-modern-cpp.md)
[C++ Language Reference](../cpp/cpp-language-reference.md)
[C++ Standard Library](../standard-library/cpp-standard-library-reference.md)
diff --git a/docs/cpp/customizing-cpp-command-line-processing.md b/docs/cpp/customizing-cpp-command-line-processing.md
deleted file mode 100644
index f10f435193..0000000000
--- a/docs/cpp/customizing-cpp-command-line-processing.md
+++ /dev/null
@@ -1,22 +0,0 @@
----
-title: "Customizing C++ Command-Line Processing"
-ms.date: "11/04/2016"
-f1_keywords: ["_setenvp", "_setargv"]
-helpviewer_keywords: ["command line [C++], processing", "command-line processing", "startup code, customizing command-line processing", "environment, environment-processing routine", "_setargv function", "command line [C++], processing arguments", "suppressing environment processing", "_setenvp function"]
-ms.assetid: aae01cbb-892b-48b8-8e1f-34f22421f263
----
-# Customizing C++ Command-Line Processing
-
-## Microsoft Specific
-
-If your program does not take command-line arguments, you can save a small amount of space by suppressing use of the library routine that performs command-line processing. This routine is called `_setargv` and is described in [Wildcard Expansion](../cpp/wildcard-expansion.md). To suppress its use, define a routine that does nothing in the file containing the `main` function, and name it `_setargv`. The call to `_setargv` is then satisfied by your definition of `_setargv`, and the library version is not loaded.
-
-Similarly, if you never access the environment table through the `envp` argument, you can provide your own empty routine to be used in place of `_setenvp`, the environment-processing routine. Just as with the `_setargv` function, `_setenvp` must be declared as **extern "C"**.
-
-Your program might make calls to the `spawn` or `exec` family of routines in the C run-time library. If this is the case, you should not suppress the environment-processing routine, since this routine is used to pass an environment from the parent process to the child process.
-
-**END Microsoft Specific**
-
-## See also
-
-[main: Program Startup](../cpp/main-program-startup.md)
\ No newline at end of file
diff --git a/docs/cpp/data-type-ranges.md b/docs/cpp/data-type-ranges.md
index 61b34849b0..a72678e45c 100644
--- a/docs/cpp/data-type-ranges.md
+++ b/docs/cpp/data-type-ranges.md
@@ -64,11 +64,11 @@ The **int** and **unsigned int** types have a size of four bytes. However, porta
C/C++ in Visual Studio also supports sized integer types. For more information, see [__int8, \__int16, \__int32, \__int64](../cpp/int8-int16-int32-int64.md) and [Integer Limits](../cpp/integer-limits.md).
-For more information about the restrictions of the sizes of each type, see [Fundamental Types](../cpp/fundamental-types-cpp.md).
+For more information about the restrictions of the sizes of each type, see [Built-in types](../cpp/fundamental-types-cpp.md).
The range of enumerated types varies depending on the language context and specified compiler flags. For more information, see [C Enumeration Declarations](../c-language/c-enumeration-declarations.md) and [Enumerations](../cpp/enumerations-cpp.md).
## See also
[Keywords](../cpp/keywords-cpp.md)
-[Fundamental Types](../cpp/fundamental-types-cpp.md)
\ No newline at end of file
+[Built-in types](../cpp/fundamental-types-cpp.md)
\ No newline at end of file
diff --git a/docs/cpp/declarations-and-definitions-cpp.md b/docs/cpp/declarations-and-definitions-cpp.md
index 83b3796b74..5fa9ecfb89 100644
--- a/docs/cpp/declarations-and-definitions-cpp.md
+++ b/docs/cpp/declarations-and-definitions-cpp.md
@@ -1,31 +1,56 @@
---
-title: "Declarations and Definitions (C++)"
-ms.date: "11/04/2016"
+title: "Declarations and definitions (C++)"
+ms.date: "12/12/2019"
ms.assetid: 678f1424-e12f-45e0-a957-8169e5fef6cb
---
-# Declarations and Definitions (C++)
+# Declarations and definitions (C++)
-Declarations introduce names in a program, for example the names of variables, namespaces, functions and classes. Declarations also specify type information as well as other characteristics of the object that is being declared. A name must be declared before it can be used; in C++ the point at which a name is declared determines whether it is visible to the compiler. You cannot refer to a function or class that is declared at some later point in the compilation unit; you can use *forward declarations* to get around this limitation.
+A C++ program consists of various entities such as variables, functions, types, and namespaces. Each of these entities must be *declared* before they can be used. A declaration specifies a unique name for the entity, along with information about its type and other characteristics. In C++ the point at which a name is declared is the point at which it becomes visible to the compiler. You cannot refer to a function or class that is declared at some later point in the compilation unit. Variables should be declared as close as possible before the point at which they are used.
-Definitions specify what code or data the name describes. The compiler needs the definition in order to allocate storage space for the thing that is being declared.
+The following example shows some declarations:
-## Declarations
+```cpp
+#include
+
+void f(); // forward declaration
+
+int main()
+{
+ const double pi = 3.14; //OK
+ int i = f(2); //OK. f is forward-declared
+ std::string str; // OK std::string is declared in