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 header + C obj; // error! C not yet declared. + j = 0; // error! No type specified. + auto k = 0; // OK. type inferred as int by compiler. +} + +int f(int i) +{ + return i + 42; +} + +namespace N { + class C{/*...*/}; +} +``` + +On line 5, the `main` function is declared. On line 7, a **const** variable named `pi` is declared and *initialized*. On line 8, an integer `i` is declared and initialized with the value produced by the function `f`. The name `f` is visible to the compiler because of the *forward declaration* on line 3. -A declaration introduces one or more names into a program. Declarations can occur more than once in a program. Therefore, classes, structures, enumerated types, and other user-defined types can be declared for each compilation unit. The constraint on this multiple declaration is that all declarations must be identical. Declarations also serve as definitions, except when the declaration: +In line 9, a variable named `obj` of type `C` is declared. However, this declaration raises an error because `C` is not declared until later in the program, and is not forward-declared. To fix the error, you can either move the entire *definition* of `C` before `main` or else add a forward-declaration for it. This behavior is different from other languages such as C#, in which functions and classes can be used before their point of declaration in a source file. -1. Is a function prototype (a function declaration with no function body). +In line 10, a variable named `str` of type `std::string` is declared. The name `std::string` is visible because it is introduced in the `string` [header file](header-files-cpp.md) which is merged into the source file in line 1. `std` is the namespace in which the `string` class is declared. -1. Contains the **extern** specifier but no initializer (objects and variables) or function body (functions). This signifies that the definition is not necessarily in the current translation unit and gives the name external linkage. +In line 11, an error is raised because the name `j` has not been declared. A declaration must provide a type, unlike other languages such as javaScript. In line 12, the `auto` keyword is used, which tells the compiler to infer the type of `k` based on the value that it is initialized with. The compiler in this case chooses `int` for the type. -1. Is of a static data member inside a class declaration. +## Declaration scope - Because static class data members are discrete variables shared by all objects of the class, they must be defined and initialized outside the class declaration. (For more information about classes and class members, see [Classes](../cpp/classes-and-structs-cpp.md).) +The name that is introduced by a declaration is valid within the *scope* where the declaration occurs. In the previous example, the variables that are declared inside the `main` function are *local variables*. You could declare another variable named `i` outside of main, at *global scope*, and it would be a completely separate entity. However, such duplication of names can lead to programmer confusion and errors, and should be avoided. In line 21, the class `C` is declared in the scope of the namespace `N`. The use of namespaces helps to avoid *name collisions*. Most C++ Standard Library names are declared within the `std` namespace. For more information about how scope rules interact with declarations, see [Scope](../cpp/scope-visual-cpp.md). -1. Is a class name declaration with no following definition, such as `class T;`. +## Definitions -1. Is a **typedef** statement. +Some entities, including functions, classes, enums, and constant variables, must be defined in addition to being declared. A *definition* provides the compiler with all the information it needs to generate machine code when the entity is used later in the program. In the previous example, line 3 contains a declaration for the function `f` but the *definition* for the function is provided in lines 15 through 18. On line 21, the class `C` is both declared and defined (although as defined the class doesn't do anything). A constant variable must be defined, in other words assigned a value, in the same statement in which it is declared. A declaration of a built-in type such as `int` is automatically a definition because the compiler knows how much space to allocate for it. -Examples of declarations that are also definitions are: +The following example shows declarations that are also definitions: ```cpp // Declare and define int variables i and j. @@ -39,48 +64,43 @@ enum suits { Spades = 1, Clubs, Hearts, Diamonds }; class CheckBox : public Control { public: - Boolean IsChecked(); + Boolean IsChecked(); virtual int ChangeState() = 0; }; ``` -Some declarations that are not definitions are: +Here are some declarations that are not definitions: ```cpp extern int i; char *strchr( const char *Str, const char Target ); ``` -A name is considered to be declared immediately after its declarator but before its (optional) initializer. For more information, see [Point of Declaration](../cpp/point-of-declaration-in-cpp.md). +## Typedefs and using statements -Declarations occur in a *scope*. The scope controls the visibility of the name declared and the duration of the object defined, if any. For more information about how scope rules interact with declarations, see [Scope](../cpp/scope-visual-cpp.md). - -An object declaration is also a definition unless it contains the **extern** storage-class specifier described in [Storage classes](storage-classes-cpp.md). A function declaration is also a definition unless it is a prototype. A prototype is a function header without a defining function body. The definition of an object causes allocation of storage and appropriate initializations for that object. - -## Definitions +In older versions of C++, the [typedef](aliases-and-typedefs-cpp.md) keyword is used to declare a new name that is an *alias* for another name. For example the type `std::string` is another name for `std::basic_string`. It should be obvious why programmers use the typedef name and not the actual name. In modern C++, the [using](aliases-and-typedefs-cpp.md) keyword is preferred over typedef, but the idea is the same: a new name is declared for an entity which is already declared and defined. -A definition is a unique specification of an object or variable, function, class, or enumerator. Because definitions must be unique, a program can contain only one definition for a given program element. There can be a many-to-one correspondence between declarations and definitions. There are two cases in which a program element can be declared and not defined: +## Static class members -1. A function is declared but never referenced with a function call or with an expression that takes the function's address. +Because static class data members are discrete variables shared by all objects of the class, they must be defined and initialized outside the class definition. (For more information, see [Classes](../cpp/classes-and-structs-cpp.md).) -1. A class is used only in a way that does not require its definition be known. However, the class must be declared. The following code illustrates such a case: +## extern declarations - ```cpp - // definitions.cpp - class WindowCounter; // Forward declaration; no definition +A C++ program might contain more than one [compilation unit](header-files-cpp.md). To declare an entity that is defined in a separate compilation unit, use the [extern](extern-cpp.md) keyword. The information in the declaration is sufficient for the compiler, but if the definition of the entity cannot be found in the linking step, then the linker will raise an error. - class Window - { - // Definition of WindowCounter not required - static WindowCounter windowCounter; - }; +## In this section - int main() - { - } - ``` +[Storage classes](storage-classes-cpp.md)
+[const](const-cpp.md)
+[constexpr](constexpr-cpp.md)
+[extern](extern-cpp.md)
+[Initializers](initializers.md)
+[Aliases and typedefs](aliases-and-typedefs-cpp.md)
+[using declaration](using-declaration.md)
+[volatile](volatile-cpp.md)
+[decltype](decltype-cpp.md)
+[Attributes in C++](attributes.md)
## See also [Basic Concepts](../cpp/basic-concepts-cpp.md)
-[Point of Declaration](../cpp/point-of-declaration-in-cpp.md) \ No newline at end of file diff --git a/docs/cpp/defining-inline-cpp-functions-with-dllexport-and-dllimport.md b/docs/cpp/defining-inline-cpp-functions-with-dllexport-and-dllimport.md index 5b4f4c7f80..48c8dd10fa 100644 --- a/docs/cpp/defining-inline-cpp-functions-with-dllexport-and-dllimport.md +++ b/docs/cpp/defining-inline-cpp-functions-with-dllexport-and-dllimport.md @@ -6,7 +6,7 @@ ms.assetid: 3b48678b-e7b8-4eda-bb46-b5d34dcf7817 --- # Defining Inline C++ Functions with dllexport and dllimport -## Microsoft Specific +**Microsoft Specific** You can define as inline a function with the **dllexport** attribute. In this case, the function is always instantiated and exported, whether or not any module in the program references the function. The function is presumed to be imported by another program. diff --git a/docs/cpp/delegating-constructors.md b/docs/cpp/delegating-constructors.md new file mode 100644 index 0000000000..0df8c6af31 --- /dev/null +++ b/docs/cpp/delegating-constructors.md @@ -0,0 +1,111 @@ +--- +title: "Delegating constructors (C++)" +description: "Use delegating constructors in C++ to invoke other constructors and reduce code repetition." +ms.date: "11/19/2019" +--- + +# Delegating constructors + +Many classes have multiple constructors that do similar things—for example, validate parameters: + +```cpp +class class_c { +public: + int max; + int min; + int middle; + + class_c() {} + class_c(int my_max) { + max = my_max > 0 ? my_max : 10; + } + class_c(int my_max, int my_min) { + max = my_max > 0 ? my_max : 10; + min = my_min > 0 && my_min < max ? my_min : 1; + } + class_c(int my_max, int my_min, int my_middle) { + max = my_max > 0 ? my_max : 10; + min = my_min > 0 && my_min < max ? my_min : 1; + middle = my_middle < max && my_middle > min ? my_middle : 5; + } +}; +``` + +You could reduce the repetitive code by adding a function that does all of the validation, but the code for `class_c` would be easier to understand and maintain if one constructor could delegate some of the work to another one. To add delegating constructors, use the `constructor (. . .) : constructor (. . .)` syntax: + +```cpp +class class_c { +public: + int max; + int min; + int middle; + + class_c(int my_max) { + max = my_max > 0 ? my_max : 10; + } + class_c(int my_max, int my_min) : class_c(my_max) { + min = my_min > 0 && my_min < max ? my_min : 1; + } + class_c(int my_max, int my_min, int my_middle) : class_c (my_max, my_min){ + middle = my_middle < max && my_middle > min ? my_middle : 5; +} +}; +int main() { + + class_c c1{ 1, 3, 2 }; +} +``` + +As you step through the previous example, notice that the constructor `class_c(int, int, int)` first calls the constructor `class_c(int, int)`, which in turn calls `class_c(int)`. Each of the constructors performs only the work that is not performed by the other constructors. + +The first constructor that's called initializes the object so that all of its members are initialized at that point. You can’t do member initialization in a constructor that delegates to another constructor, as shown here: + +```cpp +class class_a { +public: + class_a() {} + // member initialization here, no delegate + class_a(string str) : m_string{ str } {} + + //can’t do member initialization here + // error C3511: a call to a delegating constructor shall be the only member-initializer + class_a(string str, double dbl) : class_a(str) , m_double{ dbl } {} + + // only member assignment + class_a(string str, double dbl) : class_a(str) { m_double = dbl; } + double m_double{ 1.0 }; + string m_string; +}; +``` + +The next example shows the use of non-static data-member initializers. Notice that if a constructor also initializes a given data member, the member initializer is overridden: + +```cpp +class class_a { +public: + class_a() {} + class_a(string str) : m_string{ str } {} + class_a(string str, double dbl) : class_a(str) { m_double = dbl; } + double m_double{ 1.0 }; + string m_string{ m_double < 10.0 ? "alpha" : "beta" }; +}; + +int main() { + class_a a{ "hello", 2.0 }; //expect a.m_double == 2.0, a.m_string == "hello" + int y = 4; +} +``` + +The constructor delegation syntax doesn't prevent the accidental creation of constructor recursion—Constructor1 calls Constructor2 which calls Constructor1—and no errors are thrown until there is a stack overflow. It's your responsibility to avoid cycles. + +```cpp +class class_f{ +public: + int max; + int min; + + // don't do this + class_f() : class_f(6, 3){ } + class_f(int my_max, int my_min) : class_f() { } +}; +``` diff --git a/docs/cpp/dynamic-cast-operator.md b/docs/cpp/dynamic-cast-operator.md index fd746908e5..8c882bbe67 100644 --- a/docs/cpp/dynamic-cast-operator.md +++ b/docs/cpp/dynamic-cast-operator.md @@ -1,6 +1,7 @@ --- title: "dynamic_cast Operator" -ms.date: "11/19/2018" +description: "Overview of the C++ language dynamic_cast operator." +ms.date: "02/03/2020" f1_keywords: ["dynamic_cast_cpp"] helpviewer_keywords: ["dynamic_cast keyword [C++]"] ms.assetid: f380ada8-6a18-4547-93c9-63407f19856b @@ -122,11 +123,13 @@ A pointer to an object of type `D` can be safely cast to `B` or `C`. However, if // dynamic_cast_4.cpp // compile with: /c /GR class A {virtual void f();}; -class B {virtual void f();}; -class D : public B {virtual void f();}; +class B : public A {virtual void f();}; +class C : public A {virtual void f();}; +class D : public B, public C {virtual void f();}; void f() { D* pd = new D; + A* pa = dynamic_cast(pd); // C4540, ambiguous cast fails at runtime B* pb = dynamic_cast(pd); // first cast to B A* pa2 = dynamic_cast(pb); // ok: unambiguous } diff --git a/docs/cpp/errors-and-exception-handling-modern-cpp.md b/docs/cpp/errors-and-exception-handling-modern-cpp.md index bd965382d6..94abff30dc 100644 --- a/docs/cpp/errors-and-exception-handling-modern-cpp.md +++ b/docs/cpp/errors-and-exception-handling-modern-cpp.md @@ -1,10 +1,10 @@ --- -title: "Errors and Exception Handling (Modern C++)" -ms.date: "05/07/2019" +title: "Modern C++ best practices for exceptions and error handling" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: a6c111d0-24f9-4bbb-997d-3db4569761b7 --- -# Errors and Exception Handling (Modern C++) +# Modern C++ best practices for exceptions and error handling In modern C++, in most scenarios, the preferred way to report and handle both logic errors and runtime errors is to use exceptions. This is especially true when the stack might contain several function calls between the function that detects the error and the function that has the context to know how to handle it. Exceptions provide a formal, well-defined way for code that detects errors to pass the information up the call stack. @@ -54,7 +54,7 @@ int main() } ``` -Exceptions in C++ resemble those in languages such as C# and Java. In the **try** block, if an exception is *thrown* it will be *caught* by the first associated **catch** block whose type matches that of the exception. In other words, execution jumps from the **throw** statement to the **catch** statement. If no usable catch block is found, `std::terminate` is invoked and the program exits. In C++, any type may be thrown; however, we recommend that you throw a type that derives directly or indirectly from `std::exception`. In the previous example, the exception type, [invalid_argument](../standard-library/invalid-argument-class.md), is defined in the standard library in the [\](../standard-library/stdexcept.md) header file. C++ does not provide, and does not require, a **finally** block to make sure that all resources are released if an exception is thrown. The resource acquisition is initialization (RAII) idiom, which uses smart pointers, provides the required functionality for resource cleanup. For more information, see [How to: Design for Exception Safety](../cpp/how-to-design-for-exception-safety.md). For information about the C++ stack-unwinding mechanism, see [Exceptions and Stack Unwinding](../cpp/exceptions-and-stack-unwinding-in-cpp.md). +Exceptions in C++ resemble those in languages such as C# and Java. In the **try** block, if an exception is *thrown* it will be *caught* by the first associated **catch** block whose type matches that of the exception. In other words, execution jumps from the **throw** statement to the **catch** statement. If no usable catch block is found, `std::terminate` is invoked and the program exits. In C++, any type may be thrown; however, we recommend that you throw a type that derives directly or indirectly from `std::exception`. In the previous example, the exception type, [invalid_argument](../standard-library/invalid-argument-class.md), is defined in the standard library in the [\](../standard-library/stdexcept.md) header file. C++ does not provide, and does not require, a **finally** block to make sure that all resources are released if an exception is thrown. The resource acquisition is initialization (RAII) idiom, which uses smart pointers, provides the required functionality for resource cleanup. For more information, see [How to: Design for Exception Safety](how-to-design-for-exception-safety.md). For information about the C++ stack-unwinding mechanism, see [Exceptions and Stack Unwinding](exceptions-and-stack-unwinding-in-cpp.md). ## Basic guidelines @@ -64,7 +64,7 @@ Robust error handling is challenging in any programming language. Although excep - Use exceptions when the code that handles the error might be separated from the code that detects the error by one or more intervening function calls. Consider whether to use error codes instead in performance-critical loops when code that handles the error is tightly-coupled to the code that detects it. -- For every function that might throw or propagate an exception, provide one of the three exception guarantees: the strong guarantee, the basic guarantee, or the nothrow (noexcept) guarantee. For more information, see [How to: Design for Exception Safety](../cpp/how-to-design-for-exception-safety.md). +- For every function that might throw or propagate an exception, provide one of the three exception guarantees: the strong guarantee, the basic guarantee, or the nothrow (noexcept) guarantee. For more information, see [How to: Design for Exception Safety](how-to-design-for-exception-safety.md). - Throw exceptions by value, catch them by reference. Don’t catch what you can't handle. @@ -86,15 +86,14 @@ Exceptions and asserts are two distinct mechanisms for detecting run-time errors Both C and C++ programs can use the structured exception handling (SEH) mechanism in the Windows operating system. The concepts in SEH resemble those in C++ exceptions, except that SEH uses the **__try**, **__except**, and **__finally** constructs instead of **try** and **catch**. In the Microsoft C++ compiler (MSVC), C++ exceptions are implemented for SEH. However, when you write C++ code, use the C++ exception syntax. -For more information about SEH, see [Structured Exception Handling (C/C++)](../cpp/structured-exception-handling-c-cpp.md). +For more information about SEH, see [Structured Exception Handling (C/C++)](structured-exception-handling-c-cpp.md). ## Exception specifications and noexcept -Exception specifications were introduced in C++ as a way to specify the exceptions that a function might throw. However, exception specifications proved problematic in practice, and are deprecated in the C++11 draft standard. We recommend that you do not use exception specifications except for `throw()`, which indicates that the function allows no exceptions to escape. If you must use exception specifications of the type `throw(`*type*`)`, be aware that MSVC departs from the standard in certain ways. For more information, see [Exception Specifications (throw)](../cpp/exception-specifications-throw-cpp.md). The `noexcept` specifier is introduced in C++11 as the preferred alternative to `throw()`. +Exception specifications were introduced in C++ as a way to specify the exceptions that a function might throw. However, exception specifications proved problematic in practice, and are deprecated in the C++11 draft standard. We recommend that you do not use exception specifications except for `throw()`, which indicates that the function allows no exceptions to escape. If you must use exception specifications of the type `throw(`*type*`)`, be aware that MSVC departs from the standard in certain ways. For more information, see [Exception Specifications (throw)](exception-specifications-throw-cpp.md). The `noexcept` specifier is introduced in C++11 as the preferred alternative to `throw()`. ## See also [How to: Interface Between Exceptional and Non-Exceptional Code](../cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md)
-[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/exception-handling-differences.md b/docs/cpp/exception-handling-differences.md index 3a79350929..50e82309f8 100644 --- a/docs/cpp/exception-handling-differences.md +++ b/docs/cpp/exception-handling-differences.md @@ -1,6 +1,7 @@ --- title: "Handle structured exceptions in C++" -ms.date: "08/14/2018" +description: How to handle structured exceptions using the C++ exception handling model. +ms.date: "09/19/2019" helpviewer_keywords: ["structured exception handling [C++], vs. C++ exception handling", "structured exception handling [C++], vs. unstructured", "exceptions [C++], wrapper class", "C++ exception handling [C++], vs. structured exception handling", "wrapper classes [C++], C exception"] ms.assetid: f21d1944-4810-468e-b02a-9f77da4138c9 --- @@ -10,9 +11,9 @@ The major difference between C structured exception handling (SEH) and C++ excep A second difference is that the C structured exception handling model is referred to as *asynchronous*, because exceptions occur secondary to the normal flow of control. The C++ exception handling mechanism is fully *synchronous*, which means that exceptions occur only when they are thrown. -When you use the [/EHs or /EHsc](../build/reference/eh-exception-handling-model.md) compiler option, no C++ exception handlers handle structured exceptions. These exceptions are handled only by **__catch** structured exception handlers or **__finally** structured termination handlers. For information, see [Structured Exception Handling (C/C++)](structured-exception-handling-c-cpp.md). +When you use the [/EHs or /EHsc](../build/reference/eh-exception-handling-model.md) compiler option, no C++ exception handlers handle structured exceptions. These exceptions are handled only by **__except** structured exception handlers or **__finally** structured termination handlers. For information, see [Structured Exception Handling (C/C++)](structured-exception-handling-c-cpp.md). -Under the [/EHa](../build/reference/eh-exception-handling-model.md) compiler option, if a C exception is raised in a C++ program, it can be handled by a structured exception handler with its associated filter or by a C++ **catch** handler, whichever is dynamically nearer to the exception context. For example, the following C++ program raises a C exception inside a C++ **try** context: +Under the [/EHa](../build/reference/eh-exception-handling-model.md) compiler option, if a C exception is raised in a C++ program, it can be handled by a structured exception handler with its associated filter or by a C++ **catch** handler, whichever is dynamically nearer to the exception context. For example, this sample C++ program raises a C exception inside a C++ **try** context: ## Example - Catch a C exception in a C++ catch block @@ -51,7 +52,7 @@ Caught a C exception. ## C exception wrapper classes -In a simple example like the above, the C exception can be caught only by an ellipsis (**...**) **catch** handler. No information about the type or nature of the exception is communicated to the handler. While this method works, in some cases you may want to define a transformation between the two exception handling models so that each C exception is associated with a specific class. To do this, you can define a C exception "wrapper" class, which can be used or derived from in order to attribute a specific class type to a C exception. By doing so, each C exception can be handled separately by a specific C++ **catch** handler, instead of all of them in a single handler. +In a simple example like the above, the C exception can be caught only by an ellipsis (**...**) **catch** handler. No information about the type or nature of the exception is communicated to the handler. While this method works, in some cases you may want to define a transformation between the two exception handling models so that each C exception is associated with a specific class. To transform one, you can define a C exception "wrapper" class, which can be used or derived from in order to attribute a specific class type to a C exception. By doing so, each C exception can be handled separately by a specific C++ **catch** handler, instead of all of them in a single handler. Your wrapper class might have an interface consisting of some member functions that determine the value of the exception, and that access the extended exception context information provided by the C exception model. You might also want to define a default constructor and a constructor that accepts an **unsigned int** argument (to provide for the underlying C exception representation), and a bitwise copy constructor. Here is a possible implementation of a C exception wrapper class: @@ -72,7 +73,7 @@ public: }; ``` -To use this class, install a custom C exception translation function that is called by the internal exception handling mechanism each time a C exception is thrown. Within your translation function, you can throw any typed exception (perhaps an `SE_Exception` type, or a class type derived from `SE_Exception`) that can be caught by an appropriate matching C++ **catch** handler. The translation function can simply return, which indicates that it did not handle the exception. If the translation function itself raises a C exception, [terminate](../c-runtime-library/reference/terminate-crt.md) is called. +To use this class, install a custom C exception translation function that is called by the internal exception handling mechanism each time a C exception is thrown. Within your translation function, you can throw any typed exception (perhaps an `SE_Exception` type, or a class type derived from `SE_Exception`) that can be caught by an appropriate matching C++ **catch** handler. The translation function can instead return, which indicates that it did not handle the exception. If the translation function itself raises a C exception, [terminate](../c-runtime-library/reference/terminate-crt.md) is called. To specify a custom translation function, call the [_set_se_translator](../c-runtime-library/reference/set-se-translator.md) function with the name of your translation function as its single argument. The translation function that you write is called once for each function invocation on the stack that has **try** blocks. There is no default translation function; if you do not specify one by calling **_set_se_translator**, the C exception can only be caught by an ellipsis **catch** handler. diff --git a/docs/cpp/exception-handling-in-visual-cpp.md b/docs/cpp/exception-handling-in-visual-cpp.md index 0b3e6d1339..b50e18a4c1 100644 --- a/docs/cpp/exception-handling-in-visual-cpp.md +++ b/docs/cpp/exception-handling-in-visual-cpp.md @@ -1,35 +1,55 @@ --- -title: "Exception Handling in MSVC" -ms.date: "05/07/2019" +title: "Exception handling in MSVC" +ms.date: "11/19/2019" helpviewer_keywords: ["try-catch keyword [C++], exception handling"] ms.assetid: a6aa08de-669d-4ce8-9ec3-ec20d1354fcf --- -# Exception Handling in MSVC +# Exception handling in MSVC -An exception is an error condition, possibly outside the program's control, that prevents the program from continuing along its regular execution path. Certain operations, including object creation, file input/output, and function calls made from other modules, are all potential sources of exceptions even when your program is running correctly. Robust code anticipates and handles exceptions. +An exception is an error condition, possibly outside the program's control, that prevents the program from continuing along its regular execution path. Certain operations, including object creation, file input/output, and function calls made from other modules, are all potential sources of exceptions even when your program is running correctly. Robust code anticipates and handles exceptions. To detect logic errors, use assertions rather than exceptions (see [Using Assertions](/visualstudio/debugger/c-cpp-assertions)). -To detect logic errors within a single program or module, use assertions rather than exceptions (see [Using Assertions](/visualstudio/debugger/c-cpp-assertions)). +## Kinds of exceptions The Microsoft C++ compiler (MSVC) supports three kinds of exception handling: -- [C++ exception handling](../cpp/cpp-exception-handling.md) +- [C++ exception handling](errors-and-exception-handling-modern-cpp.md) For most C++ programs, you should use C++ exception handling, which is type-safe and ensures that object destructors are invoked during stack unwinding. -- [Structured exception handling](../cpp/structured-exception-handling-c-cpp.md) +- [Structured exception handling](structured-exception-handling-c-cpp.md) Windows supplies its own exception mechanism, called SEH. It is not recommended for C++ or MFC programming. Use SEH only in non-MFC C programs. - [MFC exceptions](../mfc/exception-handling-in-mfc.md) - Since version 3.0, MFC has used C++ exceptions but still supports its older exception handling macros, which are similar to C++ exceptions in form. Although these macros are not recommended for new programming, they are still supported for backward compatibility. In programs that already use the macros, you can freely use C++ exceptions as well. During preprocessing, the macros evaluate to the exception handling keywords defined in the MSVC implementation of the C++ language as of Visual C++ version 2.0. You can leave existing exception macros in place while you begin to use C++ exceptions. +Use the [/EH](../build/reference/eh-exception-handling-model.md) compiler option to specify the type of exception handling to use in a project; C++ exception handling is the default. Do not mix the error handling mechanisms; for example, do not use C++ exceptions with structured exception handling. Using C++ exception handling makes your code more portable, and it allows you to handle exceptions of any type. For more information about the drawbacks of structured exception handling, see [Structured Exception Handling](structured-exception-handling-c-cpp.md). For advice about mixing MFC macros and C++ exceptions, see [Exceptions: Using MFC Macros and C++ Exceptions](../mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md). -Use the [/EH](../build/reference/eh-exception-handling-model.md) compiler option to specify the type of exception handling to use in a project; C++ exception handling is the default. Do not mix the error handling mechanisms; for example, do not use C++ exceptions with structured exception handling. Using C++ exception handling makes your code more portable, and it allows you to handle exceptions of any type. For more information about the drawbacks of structured exception handling, see [Structured Exception Handling](../cpp/structured-exception-handling-c-cpp.md). For advice about mixing MFC macros and C++ exceptions, see [Exceptions: Using MFC Macros and C++ Exceptions](../mfc/exceptions-using-mfc-macros-and-cpp-exceptions.md). +## In this section -For information on handling exceptions in CLR applications, see [Exception Handling (C++/CLI and C++/CX)](../extensions/exception-handling-cpp-component-extensions.md). +- [Modern C++ best practices for exceptions and error handling](errors-and-exception-handling-modern-cpp.md) -For information about exception handling on x64 processors, see [x64 exception handling](../build/exception-handling-x64.md). +- [How to design for exception safety](how-to-design-for-exception-safety.md) + +- [How to interface between exceptional and non-exceptional code](how-to-interface-between-exceptional-and-non-exceptional-code.md) + +- [The try, catch, and throw Statements](try-throw-and-catch-statements-cpp.md) + +- [How Catch Blocks are Evaluated](how-catch-blocks-are-evaluated-cpp.md) + +- [Exceptions and Stack Unwinding](exceptions-and-stack-unwinding-in-cpp.md) + +- [Exception Specifications](exception-specifications-throw-cpp.md) + +- [noexcept](noexcept-cpp.md) + +- [Unhandled C++ Exceptions](unhandled-cpp-exceptions.md) + +- [Mixing C (Structured) and C++ Exceptions](mixing-c-structured-and-cpp-exceptions.md) + +- [Structured Exception Handling (SEH) (C/C++)](structured-exception-handling-c-cpp.md) ## See also -[C++ Language Reference](../cpp/cpp-language-reference.md) \ No newline at end of file +[C++ Language Reference](cpp-language-reference.md)
+[x64 exception handling](../build/exception-handling-x64.md)
+[Exception Handling (C++/CLI and C++/CX)](../extensions/exception-handling-cpp-component-extensions.md) diff --git a/docs/cpp/exception-specifications-throw-cpp.md b/docs/cpp/exception-specifications-throw-cpp.md index 87b6903d43..a68317a0f4 100644 --- a/docs/cpp/exception-specifications-throw-cpp.md +++ b/docs/cpp/exception-specifications-throw-cpp.md @@ -1,10 +1,10 @@ --- -title: "Exception Specifications (throw, noexcept) (C++)" +title: "Exception specifications (throw, noexcept) (C++)" ms.date: "01/18/2018" helpviewer_keywords: ["exceptions [C++], exception specifications", "throwing exceptions [C++], throw keyword", "C++ exception handling [C++], throwing exceptions", "throw keyword [C++]", "noexcept keyword [C++]"] ms.assetid: 4d3276df-6f31-4c7f-8cab-b9d2d003a629 --- -# Exception Specifications (throw, noexcept) (C++) +# Exception specifications (throw, noexcept) (C++) Exception specifications are a C++ language feature that indicate the programmer's intent about the exception types that can be propagated by a function. You can specify that a function may or may not exit by an exception by using an *exception specification*. The compiler can use this information to optimize calls to the function, and to terminate the program if an unexpected exception escapes the function. @@ -119,4 +119,4 @@ in handler ## See also [try, throw, and catch Statements (C++)](../cpp/try-throw-and-catch-statements-cpp.md)
-[C++ Exception Handling](../cpp/cpp-exception-handling.md) \ No newline at end of file +[Modern C++ best practices for exceptions and error handling](errors-and-exception-handling-modern-cpp.md) \ No newline at end of file diff --git a/docs/cpp/exceptions-and-stack-unwinding-in-cpp.md b/docs/cpp/exceptions-and-stack-unwinding-in-cpp.md index 23adcd906b..639d2acb97 100644 --- a/docs/cpp/exceptions-and-stack-unwinding-in-cpp.md +++ b/docs/cpp/exceptions-and-stack-unwinding-in-cpp.md @@ -1,6 +1,6 @@ --- -title: "Exceptions and Stack Unwinding in C++" -ms.date: "11/04/2016" +title: "Exceptions and stack unwinding in C++" +ms.date: "11/19/2019" ms.assetid: a1a57eae-5fc5-4c49-824f-3ce2eb8129ed --- # Exceptions and Stack Unwinding in C++ @@ -17,7 +17,7 @@ In the C++ exception mechanism, control moves from the throw statement to the fi 1. If a matching **catch** handler is found, and it catches by value, its formal parameter is initialized by copying the exception object. If it catches by reference, the parameter is initialized to refer to the exception object. After the formal parameter is initialized, the process of unwinding the stack begins. This involves the destruction of all automatic objects that were fully constructed—but not yet destructed—between the beginning of the **try** block that is associated with the **catch** handler and the throw site of the exception. Destruction occurs in reverse order of construction. The **catch** handler is executed and the program resumes execution after the last handler—that is, at the first statement or construct that is not a **catch** handler. Control can only enter a **catch** handler through a thrown exception, never through a **goto** statement or a **case** label in a **switch** statement. -## Stack Unwinding Example +## Stack unwinding example The following example demonstrates how the stack is unwound when an exception is thrown. Execution on the thread jumps from the throw statement in `C` to the catch statement in `main`, and unwinds each function along the way. Notice the order in which the `Dummy` objects are created and then destroyed as they go out of scope. Also notice that no function completes except `main`, which contains the catch statement. Function `A` never returns from its call to `B()`, and `B` never returns from its call to `C()`. If you uncomment the definition of the `Dummy` pointer and the corresponding delete statement, and then run the program, notice that the pointer is never deleted. This shows what can happen when functions do not provide an exception guarantee. For more information, see How to: Design for Exceptions. If you comment out the catch statement, you can observe what happens when a program terminates because of an unhandled exception. @@ -100,4 +100,4 @@ int main() Exiting main. */ -``` \ No newline at end of file +``` diff --git a/docs/cpp/exit-function.md b/docs/cpp/exit-function.md deleted file mode 100644 index 04cda70f21..0000000000 --- a/docs/cpp/exit-function.md +++ /dev/null @@ -1,23 +0,0 @@ ---- -title: "exit Function" -ms.date: "11/04/2016" -f1_keywords: ["Exit"] -helpviewer_keywords: ["exit function"] -ms.assetid: 26ce439f-81e2-431c-9ff8-a09a96f32127 ---- -# exit Function - -The **exit** function, declared in the standard include file \, terminates a C++ program. - -The value supplied as an argument to **exit** is returned to the operating system as the program's return code or exit code. By convention, a return code of zero means that the program completed successfully. - -> [!NOTE] -> You can use the constants EXIT_FAILURE and EXIT_SUCCESS, defined in \, to indicate success or failure of your program. - -Issuing a **return** statement from the `main` function is equivalent to calling the **exit** function with the return value as its argument. - -For more information, see [exit](../c-runtime-library/reference/exit-exit-exit.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/extern-cpp.md b/docs/cpp/extern-cpp.md index 4dfc5e2f54..2d32f8d8f5 100644 --- a/docs/cpp/extern-cpp.md +++ b/docs/cpp/extern-cpp.md @@ -1,24 +1,29 @@ --- title: "extern (C++)" -ms.date: "04/12/2018" +description: "Guide to the C++ language extern keyword." +ms.date: "01/28/2020" f1_keywords: ["extern", "extern_CPP"] helpviewer_keywords: ["extern keyword [C++], linkage to non-C++ functions", "declarations, external", "external linkage, extern modifier"] ms.assetid: 1e2f0ae3-ae98-4410-85b5-222d6abc865a +no-loc: [extern, const, constexpr, permissive] --- # extern (C++) -The **extern** keyword is applied to a global variable, function or template declaration to specify that the name of that thing has *external linkage*. For background information on linkage and why the use of global variables is discouraged, see [Program and linkage](program-and-linkage-cpp.md). +The **extern** keyword may be applied to a global variable, function, or template declaration. It specifies that the symbol has *external linkage*. For background information on linkage and why the use of global variables is discouraged, see [Translation units and linkage](program-and-linkage-cpp.md). The **extern** keyword has four meanings depending on the context: -1. in a non-const global variable declaration, **extern** specifies that the variable or function is defined in another translation unit. The **extern** must be applied in all files except the one where the variable is defined. -1. in a const variable declaration, it specifies that the variable has external linkage. The **extern** must be applied to all declarations in all files. (Global const variables have internal linkage by default.) -1. **extern "C"** specifies that the function is defined elsewhere and uses the C-language calling convention. The extern "C" modifier may also be applied to multiple function declarations in a block. -1. in a template declaration, it specifies that the template has already been instantiated elsewhere. This is an optimization that tells the compiler that it can re-use the other instantiation rather than creating a new one at the current location. For more information about this use of **extern**, see [Templates](templates-cpp.md). +- In a non-**const** global variable declaration, **extern** specifies that the variable or function is defined in another translation unit. The **extern** must be applied in all files except the one where the variable is defined. + +- In a **const** variable declaration, it specifies that the variable has external linkage. The **extern** must be applied to all declarations in all files. (Global **const** variables have internal linkage by default.) + +- **extern "C"** specifies that the function is defined elsewhere and uses the C-language calling convention. The extern "C" modifier may also be applied to multiple function declarations in a block. + +- In a template declaration, **extern** specifies that the template has already been instantiated elsewhere. **extern** tells the compiler it can reuse the other instantiation, rather than create a new one at the current location. For more information about this use of **extern**, see [Explicit instantiation](explicit-instantiation.md). ## extern linkage for non-const globals -When the linker sees **extern** before a global variable declaration, it looks for the definition in another translation unit. Declarations of non-const variables at global scope are external by default; only apply **extern** to the declarations that don't provide the definition. +When the linker sees **extern** before a global variable declaration, it looks for the definition in another translation unit. Declarations of non-**const** variables at global scope are external by default. Only apply **extern** to the declarations that don't provide the definition. ```cpp //fileA.cpp @@ -37,7 +42,7 @@ extern int i = 43; // same error (extern is ignored on definitions) ## extern linkage for const globals -A **const** global variable has internal linkage by default. If you want the variable to have external linkage, apply the **extern** keyword to definition as well as to all other declarations in other files: +A **const** global variable has internal linkage by default. If you want the variable to have external linkage, apply the **extern** keyword to the definition, and to all other declarations in other files: ```cpp //fileA.cpp @@ -49,13 +54,13 @@ extern const int i; // declaration only. same as i in FileA ## extern constexpr linkage -In Visual Studio 2017 version 15.3 and earlier, the compiler always gave a constexpr variable internal linkage even when the variable was marked extern. In Visual Studio 2017 version 15.5, a new compiler switch ([/Zc:externConstexpr](../build/reference/zc-externconstexpr.md)) enables correct standards-conforming behavior. Eventually this will become the default. +In Visual Studio 2017 version 15.3 and earlier, the compiler always gave a **constexpr** variable internal linkage, even when the variable was marked **extern**. In Visual Studio 2017 version 15.5 and later, the [/Zc:externConstexpr](../build/reference/zc-externconstexpr.md) compiler switch enables correct standards-conforming behavior. Eventually the option will become the default. The [/permissive-](../build/reference/permissive-standards-conformance.md) option doesn't enable **/Zc:externConstexpr**. ```cpp extern constexpr int x = 10; //error LNK2005: "int const x" already defined ``` -If a header file contains a variable declared extern constexpr, it needs to be marked **__declspec(selectany)** in order to correctly have its duplicate declarations combined: +If a header file contains a variable declared **extern** **constexpr**, it must be marked `__declspec(selectany)` to correctly have its duplicate declarations combined: ```cpp extern constexpr __declspec(selectany) int x = 10; @@ -63,9 +68,9 @@ extern constexpr __declspec(selectany) int x = 10; ## extern "C" and extern "C++" function declarations -In C++, when used with a string, **extern** specifies that the linkage conventions of another language are being used for the declarator(s). C functions and data can be accessed only if they are previously declared as having C linkage. However, they must be defined in a separately compiled translation unit. +In C++, when used with a string, **extern** specifies that the linkage conventions of another language are being used for the declarator(s). C functions and data can be accessed only if they're previously declared as having C linkage. However, they must be defined in a separately compiled translation unit. -Microsoft C++ supports the strings **"C"** and **"C++"** in the *string-literal* field. All of the standard include files use the **extern** "C" syntax to allow the run-time library functions to be used in C++ programs. +Microsoft C++ supports the strings **"C"** and **"C++"** in the *string-literal* field. All of the standard include files use the **extern "C"** syntax to allow the run-time library functions to be used in C++ programs. ## Example @@ -106,7 +111,7 @@ extern "C" char GetChar(void) { extern "C" int errno; ``` -If a function has more than one linkage specification, they must agree; it is an error to declare functions as having both C and C++ linkage. Furthermore, if two declarations for a function occur in a program — one with a linkage specification and one without — the declaration with the linkage specification must be first. Any redundant declarations of functions that already have linkage specification are given the linkage specified in the first declaration. For example: +If a function has more than one linkage specification, they must agree. It's an error to declare functions as having both C and C++ linkage. Furthermore, if two declarations for a function occur in a program — one with a linkage specification and one without — the declaration with the linkage specification must be first. Any redundant declarations of functions that already have linkage specification are given the linkage specified in the first declaration. For example: ```cpp extern "C" int CFunc1(); @@ -123,8 +128,8 @@ extern "C" int CFunc2(); // Error: not the first declaration of ## See also -[Keywords](../cpp/keywords-cpp.md)
-[Program and linkage](program-and-linkage-cpp.md)
-[extern Storage-Class Specifier in C](../c-language/extern-storage-class-specifier.md)
-[Behavior of Identifiers in C](../c-language/behavior-of-identifiers.md)
-[Linkage in C](../c-language/linkage.md) \ No newline at end of file +[Keywords](../cpp/keywords-cpp.md)\ +[Translation units and linkage](program-and-linkage-cpp.md)\ +[extern Storage-Class Specifier in C](../c-language/extern-storage-class-specifier.md)\ +[Behavior of Identifiers in C](../c-language/behavior-of-identifiers.md)\ +[Linkage in C](../c-language/linkage.md) diff --git a/docs/cpp/function-call-operator-parens.md b/docs/cpp/function-call-operator-parens.md index 1c4d57eaf0..0592e53035 100644 --- a/docs/cpp/function-call-operator-parens.md +++ b/docs/cpp/function-call-operator-parens.md @@ -161,7 +161,7 @@ int main() { } ``` -Functions can be called recursively. For more information about function declarations, see [Functions](functions-cpp.md). Related material is in [Program and Linkage](../cpp/program-and-linkage-cpp.md). +Functions can be called recursively. For more information about function declarations, see [Functions](functions-cpp.md). Related material is in [Translation units and linkage](../cpp/program-and-linkage-cpp.md). ## See also diff --git a/docs/cpp/functions-cpp.md b/docs/cpp/functions-cpp.md index 018eff84c8..36732610f0 100644 --- a/docs/cpp/functions-cpp.md +++ b/docs/cpp/functions-cpp.md @@ -80,7 +80,7 @@ Optional parts of a function declaration are: ``` - For more information, see [Program and Linkage](../cpp/program-and-linkage-cpp.md). + For more information, see [Translation units and linkage](../cpp/program-and-linkage-cpp.md). 1. **inline**, which instructs the compiler to replace every call to the function with the function code itself. inlining can help performance in scenarios where a function executes quickly and is invoked repeatedly in a performance-critical section of code. @@ -246,7 +246,7 @@ When **auto** is used in conjunction with a trailing return type, it just serves ## Function local variables -A variable that is declared inside a function body is called a *local variable* or simply a *local*. Non-static locals are only visible inside the function body and, if they are declared on the stack go out of scope when the function exits. When you construct a local variable and return it by value, the compiler can usually perform the return value optimization to avoid unnecessary copy operations. If you return a local variable by reference, the compiler will issue a warning because any attempt by the caller to use that reference will occur after the local has been destroyed. +A variable that is declared inside a function body is called a *local variable* or simply a *local*. Non-static locals are only visible inside the function body and, if they are declared on the stack go out of scope when the function exits. When you construct a local variable and return it by value, the compiler can usually perform the *named return value optimization* to avoid unnecessary copy operations. If you return a local variable by reference, the compiler will issue a warning because any attempt by the caller to use that reference will occur after the local has been destroyed. In C++ a local variable may be declared as static. The variable is only visible inside the function body, but a single copy of the variable exists for all instances of the function. Local static objects are destroyed during termination specified by `atexit`. If a static object was not constructed because the program's flow of control bypassed its declaration, no attempt is made to destroy that object. @@ -282,7 +282,6 @@ template, { return apply_(std::forward(f), std::forward(args), Indices()); } -} ``` ## Returning multiple values from a function @@ -352,7 +351,7 @@ There are various ways to return more than one value from a function: } ``` -1. **Visual Studio 2017 version 15.3 and later** (available with [/std:c++17](../build/reference/std-specify-language-standard-version.md)): Use structured bindings. The advantage of structured bindings is that the variables that store the return values are initialized at the same time they are declared, which in some cases can be significantly more efficient. In this statement --`auto[x, y, z] = f();`-- the brackets introduce and intialize names that are in scope for the entire function block. +1. **Visual Studio 2017 version 15.3 and later** (available with [/std:c++17](../build/reference/std-specify-language-standard-version.md)): Use structured bindings. The advantage of structured bindings is that the variables that store the return values are initialized at the same time they are declared, which in some cases can be significantly more efficient. In this statement --`auto[x, y, z] = f();`-- the brackets introduce and initialize names that are in scope for the entire function block. ```cpp #include diff --git a/docs/cpp/fundamental-types-cpp.md b/docs/cpp/fundamental-types-cpp.md index 6cca9c2d00..ed329483ee 100644 --- a/docs/cpp/fundamental-types-cpp.md +++ b/docs/cpp/fundamental-types-cpp.md @@ -1,45 +1,45 @@ --- -title: "Fundamental Types (C++)" -ms.date: "11/04/2016" +title: "Built-in types (C++)" +ms.date: "12/11/2019" f1_keywords: ["__int128_cpp", "__wchar_t_cpp", "char_cpp", "double_cpp", "float_cpp", "int_cpp", "long_cpp", "long_double_cpp", "short_cpp", "signed_cpp", "unsigned_cpp", "unsigned_int_cpp", "wchar_t_cpp"] -helpviewer_keywords: ["specifiers [C++], type", "float keyword [C++]", "char keyword [C++]", "__wchar_t keyword [C++]", "signed types [C++], summary of data types", "Integer data type [C++], C++ data types", "arithmetic operations [C++], types", "int data type", "unsigned types [C++], summary of data types", "short data type [C++]", "double data type [C++], summary of types", "long long keyword [C++]", "long double keyword [C++]", "unsigned types [C++]", "signed types [C++]", "void keyword [C++]", "storage [C++], basic type", "integral types, C++", "wchar_t keyword [C++]", "floating-point numbers [C++], C++ data types", "long keyword [C++]", "type specifiers [C++]", "integral types", "long keyword [C++], C++ data types", "storing types [C++]", "data types [C++], void"] +helpviewer_keywords: ["specifiers [C++], type", "float keyword [C++]", "char keyword [C++]", "__wchar_t keyword [C++]", "signed types [C++], summary of data types", "Integer data type [C++], C++ data types", "arithmetic operations [C++], types", "int data type", "unsigned types [C++], summary of data types", "short data type [C++]", "double data type [C++], summary of types", "long long keyword [C++]", "long double keyword [C++]", "unsigned types [C++]", "signed types [C++]", "void keyword [C++]", "storage [C++], basic type", "integral types, C++", "wchar_t keyword [C++]", "floating-point numbers [C++], C++ data types", "long keyword [C++]", "type specifiers [C++]", "integral types", "long keyword [C++]", "storing types [C++]", "data types [C++], void"] ms.assetid: 58b0106a-0406-4b74-a430-7cbd315c0f89 --- -# Fundamental Types (C++) +# Built-in types (C++) -Fundamental types in C++ are divided into three categories: integral, floating point, and void. Integral types are capable of handling whole numbers. Floating point types are capable of specifying values that may have fractional parts. +Built-in types (also called *fundamental types*) are specified by the C++ language standard and are built into the compiler. Built-in types are not defined in any header file. Built-in types are divided into three categories: integral, floating point, and void. Integral types are capable of handling whole numbers. Floating point types are capable of specifying values that may have fractional parts. -The [void](../cpp/void-cpp.md) type describes an empty set of values. No variable of type **void** can be specified — it is used primarily to declare functions that return no values or to declare generic pointers to untyped or arbitrarily typed data. Any expression can be explicitly converted or cast to type **void**. However, such expressions are restricted to the following uses: +The [void](void-cpp.md) type describes an empty set of values. No variable of type **void** can be specified — it is used primarily to declare functions that return no values or to declare generic pointers to untyped or arbitrarily typed data. Any expression can be explicitly converted or cast to type **void**. However, such expressions are restricted to the following uses: -- An expression statement. (See [Expressions](../cpp/expressions-cpp.md), for more information.) +- An expression statement. (For more information, see [Expressions](expressions-cpp.md).) -- The left operand of the comma operator. (See [Comma Operator](../cpp/comma-operator.md) for more information.) +- The left operand of the comma operator. (For more information, see [Comma Operator](comma-operator.md).) -- The second or third operand of the conditional operator (`? :`). (See [Expressions with the Conditional Operator](../cpp/conditional-operator-q.md) for more information.) +- The second or third operand of the conditional operator (`? :`). (For more information, see [Expressions with the Conditional Operator](conditional-operator-q.md).) -The following table explains the restrictions on type sizes. These restrictions are independent of the Microsoft implementation. +The following table explains the restrictions on type sizes in relation to each other. These restrictions are mandated by the C++ standard and are independent of the Microsoft implementation. The absolute size of certain built-in types is not specified in the standard. -### Fundamental Types of the C++ Language +### Built-in type size restrictions |Category|Type|Contents| |--------------|----------|--------------| -|Integral|**char**|Type **char** is an integral type that usually contains members of the basic execution character set — By default, this is ASCII in Microsoft C++.

The C++ compiler treats variables of type **char**, **signed char**, and **unsigned char** as having different types. Variables of type **char** are promoted to **int** as if they are type **signed char** by default, unless the /J compilation option is used. In this case they are treated as type **unsigned char** and are promoted to **int** without sign extension.| +|Integral|**char**|Type **char** is an integral type that usually contains members of the basic execution character set — By default, this is ASCII in Microsoft C++.

The C++ compiler treats variables of type **char**, **signed char**, and **unsigned char** as having different types. Variables of type **char** are promoted to **int** as if they are type **signed char** by default, unless the /J compilation option is used. In this case, they are treated as type **unsigned char** and are promoted to **int** without sign extension.| ||**bool**|Type **bool** is an integral type that can have one of the two values **true** or **false**. Its size is unspecified.| ||**short**|Type **short int** (or simply **short**) is an integral type that is larger than or equal to the size of type **char**, and shorter than or equal to the size of type **int**.

Objects of type **short** can be declared as **signed short** or **unsigned short**. **Signed short** is a synonym for **short**.| ||**int**|Type **int** is an integral type that is larger than or equal to the size of type **short int**, and shorter than or equal to the size of type **long**.

Objects of type **int** can be declared as **signed int** or **unsigned int**. **Signed int** is a synonym for **int**.| ||**__int8**, **__int16**, **__int32**, **__int64**|Sized integer `__int n`, where `n` is the size, in bits, of the integer variable. **__int8**, **__int16**, **__int32** and **__int64** are Microsoft-specific keywords. Not all types are available on all architectures. (**__int128** is not supported.)| -||**long**|Type **long** (or **long int**) is an integral type that is larger than or equal to the size of type **int**.

Objects of type **long** can be declared as **signed long** or **unsigned long**. **Signed long** is a synonym for **long**.| +||**long**|Type **long** (or **long int**) is an integral type that is larger than or equal to the size of type **int**. (On Windows **long** is the same size as **int**.)

Objects of type **long** can be declared as **signed long** or **unsigned long**. **Signed long** is a synonym for **long**.| ||**long long**|Larger than an unsigned **long**.

Objects of type **long long** can be declared as **signed long long** or **unsigned long long**. **signed long long** is a synonym for **long long**.| ||**wchar_t**, **__wchar_t**|A variable of type **wchar_t** designates a wide-character or multibyte character type. By default, **wchar_t** is a native type, but you can use [/Zc:wchar_t-](../build/reference/zc-wchar-t-wchar-t-is-native-type.md) to make **wchar_t** a typedef for **unsigned short**. The **__wchar_t** type is a Microsoft-specific synonym for the native **wchar_t** type.

Use the L prefix before a character or string literal to designate the wide-character type.| |Floating point|**float**|Type **float** is the smallest floating point type.| -||**double**|Type **double** is a floating point type that is larger than or equal to type **float**, but shorter than or equal to the size of type **long double**.

Microsoft specific: The representation of **long double** and **double** is identical. However, **long double** and **double** are separate types.| +||**double**|Type **double** is a floating point type that is larger than or equal to type **float**, but shorter than or equal to the size of type **long double**.

Microsoft-specific: The representation of **long double** and **double** is identical. However, **long double** and **double** are separate types.| ||**long double**|Type **long double** is a floating point type that is larger than or equal to type **double**.| **Microsoft Specific** -The following table lists the amount of storage required for fundamental types in Microsoft C++. +The following table lists the amount of storage required for built-in types in Microsoft C++. In particular, note that **long** is 4 bytes even on 64-bit operating systems. -### Sizes of Fundamental Types +### Sizes of built-in types |Type|Size| |----------|----------| @@ -50,10 +50,10 @@ The following table lists the amount of storage required for fundamental types i **END Microsoft Specific** -See [Data Type Ranges](../cpp/data-type-ranges.md) for a summary of the range of values of each type. +See [Data Type Ranges](data-type-ranges.md) for a summary of the range of values of each type. -For more information about type conversion, see [Standard Conversions](../cpp/standard-conversions.md). +For more information about type conversion, see [Standard Conversions](standard-conversions.md). ## See also -[Data Type Ranges](../cpp/data-type-ranges.md) \ No newline at end of file +[Data Type Ranges](data-type-ranges.md) \ No newline at end of file diff --git a/docs/cpp/general-rules-and-limitations.md b/docs/cpp/general-rules-and-limitations.md index d86524ae46..1728c03f4c 100644 --- a/docs/cpp/general-rules-and-limitations.md +++ b/docs/cpp/general-rules-and-limitations.md @@ -5,7 +5,7 @@ ms.assetid: 6c48902d-4259-4761-95d4-e421d69aa050 --- # General Rules and Limitations -## Microsoft Specific +**Microsoft Specific** - If you declare a function or object without the **dllimport** or **dllexport** attribute, the function or object is not considered part of the DLL interface. Therefore, the definition of the function or object must be present in that module or in another module of the same program. To make the function or object part of the DLL interface, you must declare the definition of the function or object in the other module as **dllexport**. Otherwise, a linker error is generated. diff --git a/docs/cpp/hardware-exceptions.md b/docs/cpp/hardware-exceptions.md index cf0bea29f5..5686b5a4e9 100644 --- a/docs/cpp/hardware-exceptions.md +++ b/docs/cpp/hardware-exceptions.md @@ -1,10 +1,10 @@ --- -title: "Hardware Exceptions" +title: "Hardware exceptions" ms.date: "11/04/2016" helpviewer_keywords: ["exceptions [C++], hardware", "errors [C++], low-level", "errors [C++], hardware", "hardware exceptions [C++]", "low level errors"] ms.assetid: 06ac6f01-a8cf-4426-bb12-1688315ae1cd --- -# Hardware Exceptions +# Hardware exceptions Most of the standard exceptions recognized by the operating system are hardware-defined exceptions. Windows recognizes a few low-level software exceptions, but these are usually best handled by the operating system. @@ -31,5 +31,5 @@ Many of the exceptions listed in the previous table are intended to be handled b ## See also -[Writing an Exception Handler](../cpp/writing-an-exception-handler.md)
+[Writing an exception handler](../cpp/writing-an-exception-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/header-files-cpp.md b/docs/cpp/header-files-cpp.md index a8df03a58e..0c35f41c73 100644 --- a/docs/cpp/header-files-cpp.md +++ b/docs/cpp/header-files-cpp.md @@ -1,6 +1,6 @@ --- title: "Header files (C++)" -ms.date: "04/20/2018" +ms.date: "12/11/2019" helpviewer_keywords: ["header files [C++]"] --- # Header files (C++) @@ -16,6 +16,9 @@ The declaration tells the compiler whether the element is an **int**, a **double To minimize the potential for errors, C++ has adopted the convention of using *header files* to contain declarations. You make the declarations in a header file, then use the #include directive in every .cpp file or other header file that requires that declaration. The #include directive inserts a copy of the header file directly into the .cpp file prior to compilation. +> [!NOTE] +> In Visual Studio 2019, the C++20 *modules* feature is introduced as an improvement and eventual replacement for header files. For more information, see [Overview of modules in C++](modules-cpp.md). + ## Example The following example shows a common way to declare a class and then use it in a different source file. We'll start with the header file, `my_class.h`. It contains a class definition, but note that the definition is incomplete; the member function `do_something` is not defined: diff --git a/docs/cpp/how-catch-blocks-are-evaluated-cpp.md b/docs/cpp/how-catch-blocks-are-evaluated-cpp.md index 3736a9e668..d2b006cb57 100644 --- a/docs/cpp/how-catch-blocks-are-evaluated-cpp.md +++ b/docs/cpp/how-catch-blocks-are-evaluated-cpp.md @@ -55,4 +55,4 @@ In this example, the ellipsis **catch** handler is the only handler that is exam ## See also -[C++ Exception Handling](../cpp/cpp-exception-handling.md) \ No newline at end of file +[Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md) \ No newline at end of file diff --git a/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md b/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md index 31c840269e..861fd4a375 100644 --- a/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md +++ b/docs/cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md @@ -1,11 +1,11 @@ --- -title: "How to: Create and Use CComPtr and CComQIPtr Instances" +title: "How to: Create and use CComPtr and CComQIPtr instances" ms.custom: "how-to" -ms.date: "11/04/2016" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: b0356cfb-12cc-4ee8-b988-8311ed1ab5e0 --- -# How to: Create and Use CComPtr and CComQIPtr Instances +# How to: Create and use CComPtr and CComQIPtr instances In classic Windows programming, libraries are often implemented as COM objects (or more precisely, as COM servers). Many Windows operating system components are implemented as COM servers, and many contributors provide libraries in this form. For information about the basics of COM, see [Component Object Model (COM)](/windows/win32/com/component-object-model--com--portal). diff --git a/docs/cpp/how-to-create-and-use-shared-ptr-instances.md b/docs/cpp/how-to-create-and-use-shared-ptr-instances.md index 022bad02bf..17cfbef530 100644 --- a/docs/cpp/how-to-create-and-use-shared-ptr-instances.md +++ b/docs/cpp/how-to-create-and-use-shared-ptr-instances.md @@ -1,17 +1,17 @@ --- -title: "How to: Create and Use shared_ptr Instances" +title: "How to: Create and use shared_ptr instances" ms.custom: "how-to" -ms.date: "05/22/2019" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: 7d6ebb73-fa0d-4b0b-a528-bf05de96518e --- -# How to: Create and Use shared_ptr Instances +# How to: Create and Use shared_ptr instances The `shared_ptr` type is a smart pointer in the C++ standard library that is designed for scenarios in which more than one owner might have to manage the lifetime of the object in memory. After you initialize a `shared_ptr` you can copy it, pass it by value in function arguments, and assign it to other `shared_ptr` instances. All the instances point to the same object, and share access to one "control block" that increments and decrements the reference count whenever a new `shared_ptr` is added, goes out of scope, or is reset. When the reference count reaches zero, the control block deletes the memory resource and itself. The following illustration shows several `shared_ptr` instances that point to one memory location. -![Shared pointer diagram](../cpp/media/shared_ptr.png "Shared pointer diagram") +![Shared pointer diagram](media/shared_ptr.png "Shared pointer diagram") ## Example setup @@ -68,25 +68,25 @@ int main() Whenever possible, use the [make_shared](../standard-library/memory-functions.md#make_shared) function to create a `shared_ptr` when the memory resource is created for the first time. `make_shared` is exception-safe. It uses the same call to allocate the memory for the control block and the resource, which reduces the construction overhead. If you don't use `make_shared`, then you have to use an explicit `new` expression to create the object before you pass it to the `shared_ptr` constructor. The following example shows various ways to declare and initialize a `shared_ptr` together with a new object. -[!code-cpp[stl_smart_pointers#1](../cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp)] +[!code-cpp[stl_smart_pointers#1](codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_1.cpp)] ## Example 2 The following example shows how to declare and initialize `shared_ptr` instances that take on shared ownership of an object that has already been allocated by another `shared_ptr`. Assume that `sp2` is an initialized `shared_ptr`. -[!code-cpp[stl_smart_pointers#2](../cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_2.cpp)] +[!code-cpp[stl_smart_pointers#2](codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_2.cpp)] ## Example 3 `shared_ptr` is also helpful in C++ Standard Library containers when you're using algorithms that copy elements. You can wrap elements in a `shared_ptr`, and then copy it into other containers with the understanding that the underlying memory is valid as long as you need it, and no longer. The following example shows how to use the `remove_copy_if` algorithm on `shared_ptr` instances in a vector. -[!code-cpp[stl_smart_pointers#4](../cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_3.cpp)] +[!code-cpp[stl_smart_pointers#4](codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_3.cpp)] ## Example 4 You can use `dynamic_pointer_cast`, `static_pointer_cast`, and `const_pointer_cast` to cast a `shared_ptr`. These functions resemble the `dynamic_cast`, `static_cast`, and `const_cast` operators. The following example shows how to test the derived type of each element in a vector of `shared_ptr` of base classes, and then copy the elements and display information about them. -[!code-cpp[stl_smart_pointers#5](../cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_4.cpp)] +[!code-cpp[stl_smart_pointers#5](codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_4.cpp)] ## Example 5 @@ -108,8 +108,8 @@ You can pass a `shared_ptr` to another function in the following ways: The following example shows how `shared_ptr` overloads various comparison operators to enable pointer comparisons on the memory that is owned by the `shared_ptr` instances. -[!code-cpp[stl_smart_pointers#3](../cpp/codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp)] +[!code-cpp[stl_smart_pointers#3](codesnippet/CPP/how-to-create-and-use-shared-ptr-instances_6.cpp)] ## See also -[Smart Pointers (Modern C++)](../cpp/smart-pointers-modern-cpp.md) +[Smart Pointers (Modern C++)](smart-pointers-modern-cpp.md) diff --git a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md index d67c98a3d1..55d8555089 100644 --- a/docs/cpp/how-to-create-and-use-unique-ptr-instances.md +++ b/docs/cpp/how-to-create-and-use-unique-ptr-instances.md @@ -1,51 +1,51 @@ --- -title: "How to: Create and Use unique_ptr Instances" +title: "How to: Create and use unique_ptr instances" ms.custom: "how-to" ms.date: "11/19/2018" ms.topic: "conceptual" ms.assetid: 9a373030-e587-452f-b9a5-c5f9d58b7673 --- -# How to: Create and Use unique_ptr Instances +# How to: Create and use unique_ptr instances A [unique_ptr](../standard-library/unique-ptr-class.md) does not share its pointer. It cannot be copied to another `unique_ptr`, passed by value to a function, or used in any C++ Standard Library algorithm that requires copies to be made. A `unique_ptr` can only be moved. This means that the ownership of the memory resource is transferred to another `unique_ptr` and the original `unique_ptr` no longer owns it. We recommend that you restrict an object to one owner, because multiple ownership adds complexity to the program logic. Therefore, when you need a smart pointer for a plain C++ object, use `unique_ptr`, and when you construct a `unique_ptr`, use the [make_unique](../standard-library/memory-functions.md#make_unique) helper function. The following diagram illustrates the transfer of ownership between two `unique_ptr` instances. -![Moving the ownership of a unique_ptr](../cpp/media/unique_ptr.png "Moving the ownership of a unique_ptr") +![Moving the ownership of a unique_ptr](media/unique_ptr.png "Moving the ownership of a unique_ptr") `unique_ptr` is defined in the `` header in the C++ Standard Library. It is exactly as efficient as a raw pointer and can be used in C++ Standard Library containers. The addition of `unique_ptr` instances to C++ Standard Library containers is efficient because the move constructor of the `unique_ptr` eliminates the need for a copy operation. -## Example +## Example 1 The following example shows how to create `unique_ptr` instances and pass them between functions. -[!code-cpp[stl_smart_pointers#210](../cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_1.cpp)] +[!code-cpp[stl_smart_pointers#210](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_1.cpp)] These examples demonstrate this basic characteristic of `unique_ptr`: it can be moved, but not copied. "Moving" transfers ownership to a new `unique_ptr` and resets the old `unique_ptr`. -## Example +## Example 2 The following example shows how to create `unique_ptr` instances and use them in a vector. -[!code-cpp[stl_smart_pointers#211](../cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_2.cpp)] +[!code-cpp[stl_smart_pointers#211](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_2.cpp)] In the range for loop, notice that the `unique_ptr` is passed by reference. If you try to pass by value here, the compiler will throw an error because the `unique_ptr` copy constructor is deleted. -## Example +## Example 3 The following example shows how to initialize a `unique_ptr` that is a class member. -[!code-cpp[stl_smart_pointers#212](../cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp)] +[!code-cpp[stl_smart_pointers#212](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_3.cpp)] -## Example +## Example 4 You can use [make_unique](../standard-library/memory-functions.md#make_unique) to create a `unique_ptr` to an array, but you cannot use `make_unique` to initialize the array elements. -[!code-cpp[stl_smart_pointers#213](../cpp/codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp)] +[!code-cpp[stl_smart_pointers#213](codesnippet/CPP/how-to-create-and-use-unique-ptr-instances_4.cpp)] For more examples, see [make_unique](../standard-library/memory-functions.md#make_unique). ## See also -[Smart Pointers (Modern C++)](../cpp/smart-pointers-modern-cpp.md)
+[Smart Pointers (Modern C++)](smart-pointers-modern-cpp.md)
[make_unique](../standard-library/memory-functions.md#make_unique) diff --git a/docs/cpp/how-to-create-and-use-weak-ptr-instances.md b/docs/cpp/how-to-create-and-use-weak-ptr-instances.md index 9de5181815..e354ac09fb 100644 --- a/docs/cpp/how-to-create-and-use-weak-ptr-instances.md +++ b/docs/cpp/how-to-create-and-use-weak-ptr-instances.md @@ -1,15 +1,15 @@ --- -title: "How to: Create and Use weak_ptr Instances" +title: "How to: Create and use weak_ptr instances" ms.custom: "how-to" -ms.date: "07/12/2018" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: 8dd6909b-b070-4afa-9696-f2fc94579c65 --- -# How to: Create and Use weak_ptr Instances +# How to: Create and use weak_ptr instances -Sometimes an object must store a way to access the underlying object of a `shared_ptr` without causing the reference count to be incremented. Typically, this situation occurs when you have cyclic references between `shared_ptr` instances. +Sometimes an object must store a way to access the underlying object of a [shared_ptr](../standard-library/shared-ptr-class.md) without causing the reference count to be incremented. Typically, this situation occurs when you have cyclic references between `shared_ptr` instances. -The best design is to avoid shared ownership of pointers whenever you can. However, if you must have shared ownership of `shared_ptr` instances, avoid cyclic references between them. When cyclic references are unavoidable, or even preferable for some reason, use `weak_ptr` to give one or more of the owners a weak reference to another `shared_ptr`. By using a `weak_ptr`, you can create a `shared_ptr` that joins to an existing set of related instances, but only if the underlying memory resource is still valid. A `weak_ptr` itself does not participate in the reference counting, and therefore, it cannot prevent the reference count from going to zero. However, you can use a `weak_ptr` to try to obtain a new copy of the `shared_ptr` with which it was initialized. If the memory has already been deleted, a `bad_weak_ptr` exception is thrown. If the memory is still valid, the new shared pointer increments the reference count and guarantees that the memory will be valid as long as the `shared_ptr` variable stays in scope. +The best design is to avoid shared ownership of pointers whenever you can. However, if you must have shared ownership of `shared_ptr` instances, avoid cyclic references between them. When cyclic references are unavoidable, or even preferable for some reason, use [weak_ptr](../standard-library/weak-ptr-class.md) to give one or more of the owners a weak reference to another `shared_ptr`. By using a `weak_ptr`, you can create a `shared_ptr` that joins to an existing set of related instances, but only if the underlying memory resource is still valid. A `weak_ptr` itself does not participate in the reference counting, and therefore, it cannot prevent the reference count from going to zero. However, you can use a `weak_ptr` to try to obtain a new copy of the `shared_ptr` with which it was initialized. If the memory has already been deleted, the `weak_ptr`'s bool operator returns `false`. If the memory is still valid, the new shared pointer increments the reference count and guarantees that the memory will be valid as long as the `shared_ptr` variable stays in scope. ## Example diff --git a/docs/cpp/how-to-design-for-exception-safety.md b/docs/cpp/how-to-design-for-exception-safety.md index fbb4709af4..e61f13e14d 100644 --- a/docs/cpp/how-to-design-for-exception-safety.md +++ b/docs/cpp/how-to-design-for-exception-safety.md @@ -1,23 +1,23 @@ --- -title: "How to: Design for Exception Safety" +title: "How to: Design for exception safety" ms.custom: "how-to" -ms.date: "11/04/2016" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: 19ecc5d4-297d-4c4e-b4f3-4fccab890b3d --- -# How to: Design for Exception Safety +# How to: Design for exception safety One of the advantages of the exception mechanism is that execution, together with data about the exception, jumps directly from the statement that throws the exception to the first catch statement that handles it. The handler may be any number of levels up in the call stack. Functions that are called between the try statement and the throw statement are not required to know anything about the exception that is thrown. However, they have to be designed so that they can go out of scope "unexpectedly" at any point where an exception might propagate up from below, and do so without leaving behind partially created objects, leaked memory, or data structures that are in unusable states. -## Basic Techniques +## Basic techniques A robust exception-handling policy requires careful thought and should be part of the design process. In general, most exceptions are detected and thrown at the lower layers of a software module, but typically these layers do not have enough context to handle the error or expose a message to end users. In the middle layers, functions can catch and rethrow an exception when they have to inspect the exception object, or they have additional useful information to provide for the upper layer that ultimately catches the exception. A function should catch and "swallow" an exception only if it is able to completely recover from it. In many cases, the correct behavior in the middle layers is to let an exception propagate up the call stack. Even at the highest layer, it might be appropriate to let an unhandled exception terminate a program if the exception leaves the program in a state in which its correctness cannot be guaranteed. No matter how a function handles an exception, to help guarantee that it is "exception-safe," it must be designed according to the following basic rules. -### Keep Resource Classes Simple +### Keep resource classes simple -When you encapsulate manual resource management in classes, use a class that does nothing except manage a single resource. By keeping the class simple, you reduce the risk of introducing resource leaks. Use [smart pointers](../cpp/smart-pointers-modern-cpp.md) when possible, as shown in the following example. This example is intentionally artificial and simplistic to highlight the differences when `shared_ptr` is used. +When you encapsulate manual resource management in classes, use a class that does nothing except manage a single resource. By keeping the class simple, you reduce the risk of introducing resource leaks. Use [smart pointers](smart-pointers-modern-cpp.md) when possible, as shown in the following example. This example is intentionally artificial and simplistic to highlight the differences when `shared_ptr` is used. ```cpp // old-style new/delete version @@ -77,29 +77,29 @@ public: }; ``` -### Use the RAII Idiom to Manage Resources +### Use the RAII idiom to manage resources To be exception-safe, a function must ensure that objects that it has allocated by using `malloc` or **new** are destroyed, and all resources such as file handles are closed or released even if an exception is thrown. The *Resource Acquisition Is Initialization* (RAII) idiom ties management of such resources to the lifespan of automatic variables. When a function goes out of scope, either by returning normally or because of an exception, the destructors for all fully-constructed automatic variables are invoked. An RAII wrapper object such as a smart pointer calls the appropriate delete or close function in its destructor. In exception-safe code, it is critically important to pass ownership of each resource immediately to some kind of RAII object. Note that the `vector`, `string`, `make_shared`, `fstream`, and similar classes handle acquisition of the resource for you. However, `unique_ptr` and traditional `shared_ptr` constructions are special because resource acquisition is performed by the user instead of the object; therefore, they count as *Resource Release Is Destruction* but are questionable as RAII. -## The Three Exception Guarantees +## The three exception guarantees Typically, exception safety is discussed in terms of the three exception guarantees that a function can provide: the *no-fail guarantee*, the *strong guarantee*, and the *basic guarantee*. -### No-fail Guarantee +### No-fail guarantee The no-fail (or, "no-throw") guarantee is the strongest guarantee that a function can provide. It states that the function will not throw an exception or allow one to propagate. However, you cannot reliably provide such a guarantee unless (a) you know that all the functions that this function calls are also no-fail, or (b) you know that any exceptions that are thrown are caught before they reach this function, or (c) you know how to catch and correctly handle all exceptions that might reach this function. Both the strong guarantee and the basic guarantee rely on the assumption that the destructors are no-fail. All containers and types in the Standard Library guarantee that their destructors do not throw. There is also a converse requirement: The Standard Library requires that user-defined types that are given to it—for example, as template arguments—must have non-throwing destructors. -### Strong Guarantee +### Strong guarantee The strong guarantee states that if a function goes out of scope because of an exception, it will not leak memory and program state will not be modified. A function that provides a strong guarantee is essentially a transaction that has commit or rollback semantics: either it completely succeeds or it has no effect. -### Basic Guarantee +### Basic guarantee The basic guarantee is the weakest of the three. However, it might be the best choice when a strong guarantee is too expensive in memory consumption or in performance. The basic guarantee states that if an exception occurs, no memory is leaked and the object is still in a usable state even though the data might have been modified. -## Exception-Safe Classes +## Exception-safe classes A class can help ensure its own exception safety, even when it is consumed by unsafe functions, by preventing itself from being partially constructed or partially destroyed. If a class constructor exits before completion, then the object is never created and its destructor will never be called. Although automatic variables that are initialized prior to the exception will have their destructors invoked, dynamically allocated memory or resources that are not managed by a smart pointer or similar automatic variable will be leaked. @@ -115,5 +115,5 @@ The built-in types are all no-fail, and the Standard Library types support the b ## See also -[Errors and Exception Handling (Modern C++)](../cpp/errors-and-exception-handling-modern-cpp.md)
-[How to: Interface Between Exceptional and Non-Exceptional Code](../cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md) +[Modern C++ best practices for exceptions and error handling](errors-and-exception-handling-modern-cpp.md)
+[How to: Interface Between Exceptional and Non-Exceptional Code](how-to-interface-between-exceptional-and-non-exceptional-code.md) diff --git a/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md b/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md index e789e8e765..c3843c9dc0 100644 --- a/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md +++ b/docs/cpp/how-to-interface-between-exceptional-and-non-exceptional-code.md @@ -1,19 +1,19 @@ --- -title: "How to: Interface Between Exceptional and Non-Exceptional Code" +title: "How to: Interface between exceptional and non-exceptional code" ms.custom: "how-to" -ms.date: "11/04/2016" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: fd5bb4af-5665-46a1-a321-614b48d4061e --- -# How to: Interface Between Exceptional and Non-Exceptional Code +# How to: Interface between exceptional and non-exceptional code This article describes how to implement consistent exception-handling in a C++ module, and also how to translate those exceptions to and from error codes at the exception boundaries. Sometimes a C++ module has to interface with code that doesn't use exceptions (non-exceptional code). Such an interface is known as an *exception boundary*. For example, you may want to call the Win32 function `CreateFile` in your C++ program. `CreateFile` doesn't throw exceptions; instead it sets error codes that can be retrieved by the `GetLastError` function. If your C++ program is non-trivial, then in it you probably prefer to have a consistent exception-based error-handling policy. And you probably don't want to abandon exceptions just because you interface with non-exceptional code, and neither do you want to mix exception-based and non-exception-based error policies in your C++ module. -## Calling Non-Exceptional Functions from C++ +## Calling non-exceptional functions from C++ -When you call a non-exceptional function from C++, the idea is to wrap that function in a C++ function that detects any errors and then possibly throws an exception. When you design such a wrapper function, first decide which type of exception guarantee to provide: no-throw, strong, or basic. Second, design the function so that all resources, for example, file handles, are correctly released if an exception is thrown. Typically, this means that you use smart pointers or similar resource managers to own the resources. For more information about design considerations, see [How to: Design for Exception Safety](../cpp/how-to-design-for-exception-safety.md). +When you call a non-exceptional function from C++, the idea is to wrap that function in a C++ function that detects any errors and then possibly throws an exception. When you design such a wrapper function, first decide which type of exception guarantee to provide: no-throw, strong, or basic. Second, design the function so that all resources, for example, file handles, are correctly released if an exception is thrown. Typically, this means that you use smart pointers or similar resource managers to own the resources. For more information about design considerations, see [How to: Design for Exception Safety](how-to-design-for-exception-safety.md). ### Example @@ -152,7 +152,7 @@ int main ( int argc, char* argv[] ) } ``` -## Calling Exceptional Code from Non-Exceptional Code +## Calling exceptional code from non-exceptional code C++ functions that are declared as "extern C" can be called by C programs. C++ COM servers can be consumed by code written in any of a number of different languages. When you implement public exception-aware functions in C++ to be called by non-exceptional code, the C++ function must not allow any exceptions to propagate back to the caller. Therefore, the C++ function must specifically catch every exception that it knows how to handle and, if appropriate, convert the exception to an error code that the caller understands. If not all potential exceptions are known, the C++ function should have a `catch(...)` block as the last handler. In such a case, it's best to report a fatal error to the caller, because your program might be in an unknown state. @@ -226,9 +226,9 @@ bool DiffFiles3(const string& file1, const string& file2) } ``` -For more information about lambda expressions, see [Lambda Expressions](../cpp/lambda-expressions-in-cpp.md). +For more information about lambda expressions, see [Lambda Expressions](lambda-expressions-in-cpp.md). ## See also -[Errors and Exception Handling (Modern C++)](../cpp/errors-and-exception-handling-modern-cpp.md)
-[How to: Design for Exception Safety](../cpp/how-to-design-for-exception-safety.md)
+[Modern C++ best practices for exceptions and error handling](errors-and-exception-handling-modern-cpp.md)
+[How to: Design for Exception Safety](how-to-design-for-exception-safety.md)
diff --git a/docs/cpp/import-export-module.md b/docs/cpp/import-export-module.md index 216fc078bf..f1159c97e5 100644 --- a/docs/cpp/import-export-module.md +++ b/docs/cpp/import-export-module.md @@ -1,18 +1,18 @@ --- title: "module, import, export" -ms.date: "07/15/2019" +ms.date: "12/12/2019" f1_keywords: ["module_cpp", "import_cpp", "export_cpp"] helpviewer_keywords: ["modules [C++]", "modules [C++], import", "modules [C++], export"] -description: Use the import statement to access types and functions defined in the specified module. +description: Use import and export declarations to access and to publish types and functions defined in the specified module. --- # module, import, export -The **module**, **import**, and **export** keywords are available in C++20 and require the [/experimental:module](../build/reference/experimental-module.md) compiler switch along with [/std:c++latest](../build/reference/std-specify-language-standard-version.md). For more information, see [Overview of modules in C++](modules-cpp.md). +The **module**, **import**, and **export** declarations are available in C++20 and require the [/experimental:module](../build/reference/experimental-module.md) compiler switch along with [/std:c++latest](../build/reference/std-specify-language-standard-version.md). For more information, see [Overview of modules in C++](modules-cpp.md). ## module -Use the **module** statement at the beginning of a module implementation file to specify that the file contents belong to the named module. +Place a **module** declaration at the beginning of a module implementation file to specify that the file contents belong to the named module. ```cpp module ModuleA; @@ -20,7 +20,7 @@ module ModuleA; ## export -Use the **export module** statement for the module's primary interface file, which must have extension **.ixx**: +Use an **export module** declaration for the module's primary interface file, which must have extension **.ixx**: ```cpp export module ModuleA; @@ -48,18 +48,18 @@ Non-exported names are not visible to code that imports the module: import module ModuleA; -void main() { +int main() { Bar::f(); // OK Bar::d(); // OK Bar::internal_f(); // Ill-formed: error C2065: 'internal_f': undeclared identifier } ``` -The **export** keyword may not appear in a module implementation file. When the **export** modifier is applied to a namespace name, all names in the namespace are exported. +The **export** keyword may not appear in a module implementation file. When **export** is applied to a namespace name, all names in the namespace are exported. ## import -Use the **import** statement to make a module's names visible in your program. The import statement must appear after the module statement and after any #include directives, but before any declarations in the file. +Use an **import** declaration to make a module's names visible in your program. The import declaration must appear after the module declaration and after any #include directives, but before any declarations in the file. ```cpp module ModuleA; @@ -75,6 +75,45 @@ class Baz {...}; ``` +## Remarks + +Both **import** and **module** are treated as keywords only when they appear at the start of a logical line: + +```cpp + +// OK: +module ; +module module-name +import : +import < +import " +import module-name +export module ; +export module module-name +export import : +export import < +export import " +export import module-name + +// Error: +int i; module ; +``` + +**Microsoft Specific** + +In Microsoft C++, the tokens **import** and **module** are always identifiers and never keywords when they are used as arguments to a macro. + +### Example + +```cpp +#define foo(…) __VA_ARGS__ +foo( +import // Always an identifier, never a keyword +) +``` + +**End Microsoft Specific** + ## See Also [Overview of modules in C++](modules-cpp.md) diff --git a/docs/cpp/indirection-on-array-types.md b/docs/cpp/indirection-on-array-types.md deleted file mode 100644 index 678c1febd1..0000000000 --- a/docs/cpp/indirection-on-array-types.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Indirection on Array Types" -ms.date: "11/04/2016" -helpviewer_keywords: ["arrays [C++], indirection on type", "indirection operator [C++], array types"] -ms.assetid: 4adc3840-68d1-4602-9db2-8809d4388279 ---- -# Indirection on Array Types - -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. - -## See also - -[Arrays](../cpp/arrays-cpp.md) \ No newline at end of file diff --git a/docs/cpp/initializers.md b/docs/cpp/initializers.md index 2d6455c9c9..0c95ae0e0c 100644 --- a/docs/cpp/initializers.md +++ b/docs/cpp/initializers.md @@ -165,7 +165,7 @@ int main() { } ``` -For more information about initialization of global static objects, see [Additional Startup Considerations](../cpp/additional-startup-considerations.md). +For more information about initialization of global static objects, see [main function and command-line arguments](main-function-command-line-args.md). ### Value initialization @@ -532,4 +532,4 @@ References that are not qualified with either the **const** or **volatile** keyw ### Initialization of external variables -Declarations of automatic, static, and external variables can contain initializers. However, declarations of external variables can contain initializers only if the variables are not declared as **extern**. \ No newline at end of file +Declarations of automatic, static, and external variables can contain initializers. However, declarations of external variables can contain initializers only if the variables are not declared as **extern**. diff --git a/docs/cpp/initializing-arrays.md b/docs/cpp/initializing-arrays.md deleted file mode 100644 index 391b8c9f90..0000000000 --- a/docs/cpp/initializing-arrays.md +++ /dev/null @@ -1,54 +0,0 @@ ---- -title: "Initializing Arrays" -ms.date: "11/04/2016" -helpviewer_keywords: ["initializing arrays [C++]", "arrays [C++], initializing"] -ms.assetid: 41efe5f0-15b5-4f49-9196-c4902f8fc705 ---- -# 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() -{ -} -``` \ No newline at end of file diff --git a/docs/cpp/initializing-classes-and-structs-without-constructors-cpp.md b/docs/cpp/initializing-classes-and-structs-without-constructors-cpp.md index 3403988d03..d35b856936 100644 --- a/docs/cpp/initializing-classes-and-structs-without-constructors-cpp.md +++ b/docs/cpp/initializing-classes-and-structs-without-constructors-cpp.md @@ -1,9 +1,11 @@ --- -title: "Initializing classes and structs without constructors (C++)" -ms.date: "10/17/2018" +title: "Brace initialization for classes, structs, and unions" +description: "Use brace initialization with any C++ class, struct or union" +ms.date: "11/19/2019" ms.assetid: 3e55c3d6-1c6b-4084-b9e5-221b151402f4 --- -# Initializing classes and structs without constructors (C++) + +# Brace initialization It is not always necessary to define a constructor for a class, especially ones that are relatively simple. Users can initialize objects of a class or struct by using uniform initialization, as shown in the following example: @@ -54,7 +56,112 @@ int main() } ``` -Note that when a class or struct has no constructor, you provide the list elements in the order that the members are declared in the class. If the class has a constructor, provide the elements in the order of the parameters. +Note that when a class or struct has no constructor, you provide the list elements in the order that the members are declared in the class. If the class has a constructor, provide the elements in the order of the parameters. If a type has a default constructor, either implicitly or explicitly declared, you can use default brace initialization (with empty braces). For example, the following class may be initialized by using both default and non-default brace initialization: + +```cpp +#include +using namespace std; + +class class_a { +public: + class_a() {} + class_a(string str) : m_string{ str } {} + class_a(string str, double dbl) : m_string{ str }, m_double{ dbl } {} +double m_double; +string m_string; +}; + +int main() +{ + class_a c1{}; + class_a c1_1; + + class_a c2{ "ww" }; + class_a c2_1("xx"); + + // order of parameters is the same as the constructor + class_a c3{ "yy", 4.4 }; + class_a c3_1("zz", 5.5); +} +``` + +If a class has non-default constructors, the order in which class members appear in the brace initializer is the order in which the corresponding parameters appear in the constructor, not the order in which the members are declared (as with `class_a` in the previous example). Otherwise, if the type has no declared constructor, the order in which the members appear in the brace initializer is the same as the order in which they are declared; in this case, you can initialize as many of the public members as you wish, but you cannot skip any member. The following example shows the order that's used in brace initialization when there is no declared constructor: + +```cpp +class class_d { +public: + float m_float; + string m_string; + wchar_t m_char; +}; + +int main() +{ + class_d d1{}; + class_d d1{ 4.5 }; + class_d d2{ 4.5, "string" }; + class_d d3{ 4.5, "string", 'c' }; + + class_d d4{ "string", 'c' }; // compiler error + class_d d5{ "string", 'c', 2.0 }; // compiler error +} +``` + +If the default constructor is explicitly declared but marked as deleted, default brace initialization cannot be used: + +```cpp +class class_f { +public: + class_f() = delete; + class_f(string x): m_string { x } {} + string m_string; +}; +int main() +{ + class_f cf{ "hello" }; + class_f cf1{}; // compiler error C2280: attempting to reference a deleted function +} +``` + +You can use brace initialization anywhere you would typically do initialization—for example, as a function parameter or a return value, or with the **new** keyword: + +```cpp +class_d* cf = new class_d{4.5}; +kr->add_d({ 4.5 }); +return { 4.5 }; +``` + +In **/std:c++17** mode, the rules for empty brace initialization are slightly more restrictive. See [Derived constructors and extended aggregate initialization](constructors-cpp.md#extended_aggregate). + +## initializer_list constructors + +The [initializer_list Class](../standard-library/initializer-list-class.md) represents a list of objects of a specified type that can be used in a constructor, and in other contexts. You can construct an initializer_list by using brace initialization: + +```cpp +initializer_list int_list{5, 6, 7}; +``` + +> [!IMPORTANT] +> To use this class, you must include the [\](../standard-library/initializer-list.md) header. + +An `initializer_list` can be copied. In this case, the members of the new list are references to the members of the original list: + +```cpp +initializer_list ilist1{ 5, 6, 7 }; +initializer_list ilist2( ilist1 ); +if (ilist1.begin() == ilist2.begin()) + cout << "yes" << endl; // expect "yes" +``` + +The standard library container classes, and also `string`, `wstring`, and `regex`, have `initializer_list` constructors. The following examples show how to do brace initialization with these constructors: + +```cpp +vector v1{ 9, 10, 11 }; +map m1{ {1, "a"}, {2, "b"} }; +string s{ 'a', 'b', 'c' }; +regex rgx{ 'x', 'y', 'z' }; +``` + ## See also diff --git a/docs/cpp/inline-functions-cpp.md b/docs/cpp/inline-functions-cpp.md index 9e52a08048..4ec5773422 100644 --- a/docs/cpp/inline-functions-cpp.md +++ b/docs/cpp/inline-functions-cpp.md @@ -110,7 +110,7 @@ private: }; ``` -### Microsoft Specific +**Microsoft Specific** The **__inline** keyword is equivalent to **inline**. diff --git a/docs/cpp/int8-int16-int32-int64.md b/docs/cpp/int8-int16-int32-int64.md index f274dae10d..3ab727c2db 100644 --- a/docs/cpp/int8-int16-int32-int64.md +++ b/docs/cpp/int8-int16-int32-int64.md @@ -54,5 +54,5 @@ func ## See also [Keywords](../cpp/keywords-cpp.md)
-[Fundamental Types](../cpp/fundamental-types-cpp.md)
+[Built-in types](../cpp/fundamental-types-cpp.md)
[Data Type Ranges](../cpp/data-type-ranges.md)
diff --git a/docs/cpp/interpretation-of-subscript-operator.md b/docs/cpp/interpretation-of-subscript-operator.md deleted file mode 100644 index 6487a66e44..0000000000 --- a/docs/cpp/interpretation-of-subscript-operator.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -title: "Interpretation of Subscript Operator" -ms.date: "08/27/2018" -helpviewer_keywords: ["subscript operator [C++], interpretation of", "arrays [C++], subscripting", "interpreting subscript operators [C++]", "operators [C++], interpretation of subscript"] -ms.assetid: 8852ca18-9d5b-43f7-b8bd-abc89364fbf2 ---- -# Interpretation of 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 *subscript* bytes from the origin of *array-name*; rather, it is the *subscript*th element of the array. (For more information about this conversion, see [Additive Operators](../cpp/additive-operators-plus-and.md).) - -Similarly, for multidimensional arrays, the address is derived using the following method: - -((*array-name*) + (*subscript*1 \* *max*2 \* *max*3 \* ... \* *max*n) + (*subscript*2 \* *max*3 \* ... \* *max*n) + ... + *subscript*n)) - -## See also - -[Arrays](../cpp/arrays-cpp.md)
diff --git a/docs/cpp/lambda-expressions-in-cpp.md b/docs/cpp/lambda-expressions-in-cpp.md index c53c2301f5..98b8cc18e9 100644 --- a/docs/cpp/lambda-expressions-in-cpp.md +++ b/docs/cpp/lambda-expressions-in-cpp.md @@ -353,7 +353,7 @@ If a lambda is implicitly or explicitly `constexpr`, conversion to a function po constexpr int(*inc)(int) = Increment; ``` -## Microsoft-Specific +## Microsoft-specific Lambdas are not supported in the following common language runtime (CLR) managed entities: **ref class**, **ref struct**, **value class**, or **value struct**. diff --git a/docs/cpp/lexical-conventions.md b/docs/cpp/lexical-conventions.md index 082e19f40b..f873c14d80 100644 --- a/docs/cpp/lexical-conventions.md +++ b/docs/cpp/lexical-conventions.md @@ -1,34 +1,27 @@ --- -title: "Lexical Conventions" +title: "Lexical conventions" +description: "Describes basic elements of C++ programs such as keywords, identifiers, literals, and character sets." ms.custom: "index-page" -ms.date: "11/04/2016" +ms.date: "12/10/2019" helpviewer_keywords: ["lexical conventions", "conventions, lexical"] ms.assetid: 03f9efff-bb95-45ef-9157-0a3fac809ccf --- -# Lexical Conventions +# Lexical conventions This section introduces the fundamental elements of a C++ program. You use these elements, called "lexical elements" or "tokens" to construct statements, definitions, declarations, and so on, which are used to construct complete programs. The following lexical elements are discussed in this section: -- [Overview of File Translation](overview-of-file-translation.md) -- [Character Sets](../cpp/character-sets.md) - -- [Tokens](../cpp/tokens-cpp.md) - +- [Tokens and character sets](../cpp/character-sets.md) - [Comments](../cpp/comments-cpp.md) - - [Identifiers](../cpp/identifiers-cpp.md) - - [Keywords](../cpp/keywords-cpp.md) - - [Punctuators](../cpp/punctuators-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) -- [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) +For more information about how C++ source files are parsed, see [Phases of translation](../preprocessor/phases-of-translation.md). ## See also [C++ Language Reference](../cpp/cpp-language-reference.md)
-[Program and linkage](program-and-linkage-cpp.md) \ No newline at end of file +[Translation units and linkage](program-and-linkage-cpp.md) \ No newline at end of file diff --git a/docs/cpp/m128.md b/docs/cpp/m128.md index 112145a8a8..859c5d065e 100644 --- a/docs/cpp/m128.md +++ b/docs/cpp/m128.md @@ -7,7 +7,7 @@ ms.assetid: e51a472a-0e3c-4989-9a2a-36adb05273a3 --- # __m128 -## Microsoft Specific +**Microsoft Specific** The **__m128 data** type, for use with the Streaming SIMD Extensions and Streaming SIMD Extensions 2 instructions intrinsics, is defined in \. @@ -32,5 +32,5 @@ The **__m128** data type is not supported on ARM processors. ## See also [Keywords](../cpp/keywords-cpp.md)
-[Fundamental Types](../cpp/fundamental-types-cpp.md)
+[Built-in types](../cpp/fundamental-types-cpp.md)
[Data Type Ranges](../cpp/data-type-ranges.md) \ No newline at end of file diff --git a/docs/cpp/m128d.md b/docs/cpp/m128d.md index 8b083f658d..67edfd8d7e 100644 --- a/docs/cpp/m128d.md +++ b/docs/cpp/m128d.md @@ -7,7 +7,7 @@ ms.assetid: 8082c7c0-a955-4b53-9d82-9bb91c623f72 --- # __m128d -## Microsoft Specific +**Microsoft Specific** The **__m128d** data type, for use with the Streaming SIMD Extensions 2 instructions intrinsics, is defined in \. @@ -32,5 +32,5 @@ The **__m128d** data type is not supported on ARM processors. ## See also [Keywords](../cpp/keywords-cpp.md)
-[Fundamental Types](../cpp/fundamental-types-cpp.md)
+[Built-in types](../cpp/fundamental-types-cpp.md)
[Data Type Ranges](../cpp/data-type-ranges.md) \ No newline at end of file diff --git a/docs/cpp/m128i.md b/docs/cpp/m128i.md index 833f24ab3e..d6f46779e4 100644 --- a/docs/cpp/m128i.md +++ b/docs/cpp/m128i.md @@ -7,7 +7,7 @@ ms.assetid: bd245d68-862c-46dd-9903-6c67c7c5dbcd --- # __m128i -## Microsoft Specific +**Microsoft Specific** The **__m128i** data type, for use with the Streaming SIMD Extensions 2 (SSE2) instructions intrinsics, is defined in \. @@ -23,7 +23,7 @@ int main() { You should not access the **__m128i** fields directly. You can, however, see these types in the debugger. A variable of type **__m128i** maps to the XMM[0-7] registers. -Variables of type **_m128i** are automatically aligned on 16-byte boundaries. +Variables of type **__m128i** are automatically aligned on 16-byte boundaries. > [!NOTE] > Using variables of type **__m128i** will cause the compiler to generate the SSE2 `movdqa` instruction. This instruction does not cause a fault on Pentium III processors but will result in silent failure, with possible side effects caused by whatever instructions `movdqa` translates into on Pentium III processors. @@ -35,5 +35,5 @@ The **__m128i** data type is not supported on ARM processors. ## See also [Keywords](../cpp/keywords-cpp.md)
-[Fundamental Types](../cpp/fundamental-types-cpp.md)
-[Data Type Ranges](../cpp/data-type-ranges.md) \ No newline at end of file +[Built-in types](../cpp/fundamental-types-cpp.md)
+[Data Type Ranges](../cpp/data-type-ranges.md) diff --git a/docs/cpp/m64.md b/docs/cpp/m64.md index cbd64eb285..0dd96e723d 100644 --- a/docs/cpp/m64.md +++ b/docs/cpp/m64.md @@ -7,7 +7,7 @@ ms.assetid: df0410e8-67c9-4954-88c8-fe2653575252 --- # __m64 -## Microsoft Specific +**Microsoft Specific** The **__m64** data type is for use with the MMX and 3DNow! intrinsics, and is defined in \. @@ -33,5 +33,5 @@ The **__m64** data type is not supported on x64 processors. Applications that us ## See also [Keywords](../cpp/keywords-cpp.md)
-[Fundamental Types](../cpp/fundamental-types-cpp.md)
+[Built-in types](../cpp/fundamental-types-cpp.md)
[Data Type Ranges](../cpp/data-type-ranges.md) \ No newline at end of file diff --git a/docs/cpp/main-function-command-line-args.md b/docs/cpp/main-function-command-line-args.md new file mode 100644 index 0000000000..8ff70fcd0b --- /dev/null +++ b/docs/cpp/main-function-command-line-args.md @@ -0,0 +1,178 @@ +--- +title: "main function and command-line arguments (C++)" +description: "The main function is the entry point for a C++ program." +ms.date: "01/15/2019" +ms.assetid: c6568ee6-40ab-4ae8-aa44-c99e232f64ac +no-loc: [main, wmain, inline, static, _tmain, void, exit, argc, argv, envp, CreateProcess, GetModuleFileName, char, wchar_t, extern] +--- +# main function and command-line arguments + +All C++ programs must have a `main` function. If you try to compile a C++ *.exe* project without a main function, the compiler will raise an error. (Dynamic-link libraries and static libraries don't have a `main` function.) The `main` function is where your source code begins execution, but before a program enters the `main` function, all static class members without explicit initializers are set to zero. In Microsoft C++, global static objects are also initialized before entry to `main`. Several restrictions apply to the `main` function that do not apply to any other C++ functions. The `main` function: + +- Cannot be overloaded (see [Function Overloading](function-overloading.md)). +- Cannot be declared as **inline**. +- Cannot be declared as **static**. +- Cannot have its address taken. +- Cannot be called. + +The main function doesn't have a declaration, because it's built into the language. If it did, the declaration syntax for `main` would look like this: + +```cpp +int main(); +int main(int argc, char *argv[], char *envp[]); +``` + +**Microsoft Specific** + +If your source files use Unicode wide characters, you can use `wmain`, which is the wide-character version of `main`. The declaration syntax for `wmain` is as follows: + +```cpp +int wmain( ); +int wmain(int argc, wchar_t *argv[], wchar_t *envp[]); +``` + +You can also use `_tmain`, which is defined in tchar.h. `_tmain` resolves to `main` unless _UNICODE is defined. In that case, `_tmain` resolves to `wmain`. + +If no return value is specified, the compiler supplies a return value of zero. Alternatively, the `main` and `wmain` functions can be declared as returning **void** (no return value). If you declare `main` or `wmain` as returning **void**, you cannot return an exit code to the parent process or operating system by using a [return](../cpp/return-statement-in-program-termination-cpp.md) statement. To return an exit code when `main` or `wmain` is declared as **void**, you must use the [exit](../cpp/exit-function.md) function. + +**END Microsoft Specific** + +## Command line arguments + +The arguments for `main` or `wmain` allow convenient command-line parsing of arguments and, optionally, access to environment variables. The types for `argc` and `argv` are defined by the language. The names `argc`, `argv`, and `envp` are traditional, but you can name them whatever you like. + +```cpp +int main( int argc, char* argv[], char* envp[]); +int wmain( int argc, wchar_t* argv[], wchar_t* envp[]); +``` + +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"; + } +} +``` + +## Parsing C++ command-Line arguments + +**Microsoft Specific** + +Microsoft C/C++ startup code uses the following rules when interpreting arguments given on the operating system command line: + +- Arguments are delimited by white space, which is either a space or a tab. + +- The caret character (^) is not recognized as an escape character or delimiter. The character is handled completely by the command-line parser in the operating system before being passed to the `argv` array in the program. + +- A string surrounded by double quotation marks ("*string*") is interpreted as a single argument, regardless of white space contained within. A quoted string can be embedded in an argument. + +- A double quotation mark preceded by a backslash (\\") is interpreted as a literal double quotation mark character ("). + +- Backslashes are interpreted literally, unless they immediately precede a double quotation mark. + +- If an even number of backslashes is followed by a double quotation mark, one backslash is placed in the `argv` array for every pair of backslashes, and the double quotation mark is interpreted as a string delimiter. + +- If an odd number of backslashes is followed by a double quotation mark, one backslash is placed in the `argv` array for every pair of backslashes, and the double quotation mark is "escaped" by the remaining backslash, causing a literal double quotation mark (") to be placed in `argv`. + +### Example + +The following program demonstrates how command-line arguments are passed: + +```cpp +// command_line_arguments.cpp +// compile with: /EHsc +#include + +using namespace std; +int main( int argc, // Number of strings in array argv + char *argv[], // Array of command-line argument strings + char *envp[] ) // Array of environment variable strings +{ + int count; + + // Display each command-line argument. + cout << "\nCommand-line arguments:\n"; + for( count = 0; count < argc; count++ ) + cout << " argv[" << count << "] " + << argv[count] << "\n"; +} +``` + +The following table shows example input and expected output, demonstrating the rules in the preceding list. + +### Results of parsing command lines + +|Command-Line Input|argv[1]|argv[2]|argv[3]| +|-------------------------|---------------|---------------|---------------| +|`"abc" d e`|`abc`|`d`|`e`| +|`a\\b d"e f"g h`|`a\\b`|`de fg`|`h`| +|`a\\\"b c d`|`a\"b`|`c`|`d`| +|`a\\\\"b c" d e`|`a\\b c`|`d`|`e`| + +**END Microsoft Specific** + +## Wildcard expansion + +**Microsoft Specific** + +You can use wildcards — the question mark (?) and asterisk (*) — to specify filename and path arguments on the command-line. + +Command-line arguments are handled by a routine called `_setargv` (or `_wsetargv` in the wide-character environment), which by default does not expand wildcards into separate strings in the `argv` string array. For more information on enabling wildcard expansion, refer to [Expanding Wildcard Arguments](../c-language/expanding-wildcard-arguments.md). + +**END Microsoft Specific** + +## 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 it does, you shouldn't 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 + +[Basic Concepts](../cpp/basic-concepts-cpp.md) diff --git a/docs/cpp/main-function-restrictions.md b/docs/cpp/main-function-restrictions.md deleted file mode 100644 index 4a9474e2ae..0000000000 --- a/docs/cpp/main-function-restrictions.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "main Function Restrictions" -ms.date: "11/04/2016" -f1_keywords: ["Main"] -helpviewer_keywords: ["main function, restrictions on using"] -ms.assetid: 7b3df731-344b-44a8-850c-11cbcbfbfa83 ---- -# main Function Restrictions - -Several restrictions apply to the **main** function that do not apply to any other C++ functions. The **main** function: - -- Cannot be overloaded (see [Function Overloading](function-overloading.md)). - -- Cannot be declared as **inline**. - -- Cannot be declared as **static**. - -- Cannot have its address taken. - -- Cannot be called. - -## See also - -[main: Program Startup](../cpp/main-program-startup.md) \ No newline at end of file diff --git a/docs/cpp/main-program-startup.md b/docs/cpp/main-program-startup.md deleted file mode 100644 index 371c9e9383..0000000000 --- a/docs/cpp/main-program-startup.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "main: Program Startup" -ms.date: "11/04/2016" -f1_keywords: ["vc.main.startup", "_tmain"] -helpviewer_keywords: ["program startup [C++]", "entry points, program", "wmain function", "_tmain function", "startup code, main function", "main function, program startup"] -ms.assetid: f9581cd6-93f7-4bcd-99ec-d07c3c107dd4 ---- -# main: Program Startup - -A special function named **main** is the starting point of execution for all C and C++ programs. If you are writing code that adheres to the Unicode programming model, you can use `wmain`, which is the wide-character version of **main**. - -The **main** function is not predefined by the compiler. It must be supplied in the program text. - -The declaration syntax for **main** is - -```cpp -int main(); -``` - -or, optionally, - -```cpp -int main(int argc, char *argv[], char *envp[]); -``` - -## Microsoft Specific - -The declaration syntax for `wmain` is as follows: - -```cpp -int wmain( ); -``` - -or, optionally, - -```cpp -int wmain(int argc, wchar_t *argv[], wchar_t *envp[]); -``` - -You can also use `_tmain`, which is defined in tchar.h. `_tmain` resolves to **main** unless _UNICODE is defined. In that case, `_tmain` resolves to `wmain`. - -Alternatively, the **main** and `wmain` functions can be declared as returning **void** (no return value). If you declare **main** or `wmain` as returning **void**, you cannot return an exit code to the parent process or operating system by using a [return](../cpp/return-statement-in-program-termination-cpp.md) statement. To return an exit code when **main** or `wmain` is declared as **void**, you must use the [exit](../cpp/exit-function.md) function. - -**END Microsoft Specific** - -The types for `argc` and `argv` are defined by the language. The names `argc`, `argv`, and `envp` are traditional, but are not required by the compiler. For more information and an example, see [Argument Definitions](../cpp/argument-definitions.md). - -## See also - -[Keywords](../cpp/keywords-cpp.md)
-[Using wmain Instead of main](../cpp/using-wmain-instead-of-main.md)
-[main Function Restrictions](../cpp/main-function-restrictions.md)
-[Parsing C++ Command-Line Arguments](../cpp/parsing-cpp-command-line-arguments.md) diff --git a/docs/cpp/microsoft-specific-modifiers.md b/docs/cpp/microsoft-specific-modifiers.md index a72972f129..d2cef68928 100644 --- a/docs/cpp/microsoft-specific-modifiers.md +++ b/docs/cpp/microsoft-specific-modifiers.md @@ -1,9 +1,9 @@ --- -title: "Microsoft-Specific Modifiers" +title: "Microsoft-specific modifiers" ms.date: "08/16/2018" ms.assetid: 22c7178c-f854-47fa-9de6-07d23fda58e1 --- -# Microsoft-Specific Modifiers +# Microsoft-specific modifiers This section describes Microsoft-specific extensions to C++ in the following areas: @@ -15,7 +15,7 @@ This section describes Microsoft-specific extensions to C++ in the following are - The [__w64](w64.md) keyword -## Microsoft-Specific Keywords +## Microsoft-specific keywords Many of the Microsoft-specific keywords can be used to modify declarators to form derived types. For more information about declarators, see [Declarators](overview-of-declarators.md). diff --git a/docs/cpp/mixing-c-structured-and-cpp-exceptions.md b/docs/cpp/mixing-c-structured-and-cpp-exceptions.md index f44e28dd1c..73f660fe0d 100644 --- a/docs/cpp/mixing-c-structured-and-cpp-exceptions.md +++ b/docs/cpp/mixing-c-structured-and-cpp-exceptions.md @@ -1,10 +1,10 @@ --- -title: "Mixing C (Structured) and C++ exceptions" +title: "Mixing C (structured) and C++ exceptions" ms.date: "08/14/2018" helpviewer_keywords: ["exceptions [C++], mixed C and C++", "C++ exception handling, mixed-language", "structured exception handling [C++], mixed C and C++", "catch keyword [C++], mixed", "try-catch keyword [C++], mixed-language"] ms.assetid: a149154e-36dd-4d1a-980b-efde2a563a56 --- -# Mixing C (Structured) and C++ exceptions +# Mixing C (structured) and C++ exceptions If you want to write portable code, the use of structured exception handling (SEH) in a C++ program isn't recommended. However, you may sometimes want to compile using [/EHa](../build/reference/eh-exception-handling-model.md) and mix structured exceptions and C++ source code, and need some facility for handling both kinds of exceptions. Because a structured exception handler has no concept of objects or typed exceptions, it can't handle exceptions thrown by C++ code. However, C++ **catch** handlers can handle structured exceptions. C++ exception handling syntax (**try**, **throw**, **catch**) isn't accepted by the C compiler, but structured exception handling syntax (**__try**, **__except**, **__finally**) is supported by the C++ compiler. @@ -32,4 +32,4 @@ If you mix structured and C++ exceptions, be aware of these potential issues: ## See also -[C++ Exception Handling](../cpp/cpp-exception-handling.md) +[Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md) diff --git a/docs/cpp/modules-cpp.md b/docs/cpp/modules-cpp.md index a722552ca9..940c957fb5 100644 --- a/docs/cpp/modules-cpp.md +++ b/docs/cpp/modules-cpp.md @@ -1,6 +1,6 @@ --- title: "Overview of modules in C++" -ms.date: "07/23/2019" +ms.date: "12/13/2019" helpviewer_keywords: ["modules [C++]", "modules [C++], overview"] description: Modules in C++20 provide a modern alternative to header files. --- @@ -27,14 +27,14 @@ Although not specified by the C++20 standard, Microsoft enables its implementati - std.threading provides the contents of headers \, \, \, \, \, and \ - std.core provides everything else in the C++ Standard Library -To consume these modules, just add an import statement to the top of the source code file. For example: +To consume these modules, just add an import declaration to the top of the source code file. For example: ```cpp import std.core; import std.regex; ``` -To consume the Microsoft Standard Library module, you must compile your program with [/EHsc](../build/reference/eh-exception-handling-model.md) and [/MD](../build/reference/md-mt-ld-use-run-time-library.md) options. +To consume the Microsoft Standard Library module, compile your program with [/EHsc](../build/reference/eh-exception-handling-model.md) and [/MD](../build/reference/md-mt-ld-use-run-time-library.md) options. ## Basic example @@ -57,7 +57,7 @@ namespace Bar } ``` -The file **MyProgram.cpp** uses the **import** statement to access the name that is exported by `Foo`. Note that the name `Bar` is visible here, but not all of its members. Also note that the macro `ANSWER` is not visible. +The file **MyProgram.cpp** uses the **import** declaration to access the name that is exported by `Foo`. Note that the name `Bar` is visible here, but not all of its members. Also note that the macro `ANSWER` is not visible. ```cpp diff --git a/docs/cpp/naked-function-calls.md b/docs/cpp/naked-function-calls.md index 8d904a7943..2809887f6e 100644 --- a/docs/cpp/naked-function-calls.md +++ b/docs/cpp/naked-function-calls.md @@ -6,7 +6,7 @@ ms.assetid: 2a66847a-a43f-4541-a7be-c9f5f29b5fdb --- # Naked Function Calls -## Microsoft Specific +**Microsoft Specific** Functions declared with the **naked** attribute are emitted without prolog or epilog code, enabling you to write your own custom prolog/epilog sequences using the [inline assembler](../assembler/inline/inline-assembler.md). Naked functions are provided as an advanced feature. They enable you to declare a function that is being called from a context other than C/C++, and thus make different assumptions about where parameters are, or which registers are preserved. Examples include routines such as interrupt handlers. This feature is particularly useful for writers of virtual device drivers (VxDs). diff --git a/docs/cpp/new-and-delete-operators.md b/docs/cpp/new-and-delete-operators.md index 32921bd93a..6b899f67e2 100644 --- a/docs/cpp/new-and-delete-operators.md +++ b/docs/cpp/new-and-delete-operators.md @@ -1,13 +1,13 @@ --- title: "new and delete Operators" -ms.date: "05/07/2019" +ms.date: "11/19/2019" f1_keywords: ["delete_cpp", "new"] helpviewer_keywords: ["new keyword [C++]", "delete keyword [C++]"] ms.assetid: fa721b9e-0374-4f04-bb87-032ea775bcc8 --- -# new and delete Operators +# new and delete operators -C++ supports dynamic allocation and deallocation of objects using the [new](../cpp/new-operator-cpp.md) and [delete](../cpp/delete-operator-cpp.md) operators. These operators allocate memory for objects from a pool called the free store. The **new** operator calls the special function [operator new](../cpp/new-operator-cpp.md), and the **delete** operator calls the special function [operator delete](../cpp/delete-operator-cpp.md). +C++ supports dynamic allocation and deallocation of objects using the [new](new-operator-cpp.md) and [delete](delete-operator-cpp.md) operators. These operators allocate memory for objects from a pool called the free store. The **new** operator calls the special function [operator new](new-operator-cpp.md), and the **delete** operator calls the special function [operator delete](delete-operator-cpp.md). The **new** function in the C++ Standard Library supports the behavior specified in the C++ standard, which is to throw a std::bad_alloc exception if the memory allocation fails. If you still want the non-throwing version of **new**, link your program with nothrownew.obj. However, when you link with nothrownew.obj, the default **operator new** in the C++ Standard Library no longer functions. @@ -21,13 +21,13 @@ When a statement such as the following is encountered in a program, it translate char *pch = new char[BUFFER_SIZE]; ``` -If the request is for zero bytes of storage, **operator new** returns a pointer to a distinct object (that is, repeated calls to **operator new** return different pointers). If there is insufficient memory for the allocation request, **operator new** throws a std::bad_alloc exception, or returns **nullptr** if you have linked in non-throwing **operator new** support. +If the request is for zero bytes of storage, **operator new** returns a pointer to a distinct object (that is, repeated calls to **operator new** return different pointers). If there is insufficient memory for the allocation request, **operator new** throws a `std::bad_alloc` exception, or returns **nullptr** if you have linked in non-throwing **operator new** support. You can write a routine that attempts to free memory and retry the allocation; see [_set_new_handler](../c-runtime-library/reference/set-new-handler.md) for more information. For more details on the recovery scheme, see the Handling insufficient memory section of this topic. The two scopes for **operator new** functions are described in the following table. -### Scope for operator new Functions +### Scope for operator new functions |Operator|Scope| |--------------|-----------| @@ -41,7 +41,6 @@ The global **operator new** function is called when the **new** operator is used An **operator new** function defined for a class is a static member function (which cannot, therefore, be virtual) that hides the global **operator new** function for objects of that class type. Consider the case where **new** is used to allocate and set memory to a given value: ```cpp -// spec1_the_operator_new_function1.cpp #include #include @@ -77,7 +76,6 @@ Blanks *SomeBlanks = new Blanks; The compiler supports member array **new** and **delete** operators in a class declaration. For example: ```cpp -// spec1_the_operator_new_function2.cpp class MyClass { public: @@ -99,11 +97,9 @@ int main() ### Handling insufficient memory -Testing for failed memory allocation can be done with code such as the following: +Testing for failed memory allocation can be done as shown here: ```cpp -// insufficient_memory_conditions.cpp -// compile with: /EHsc #include using namespace std; #define BIG_NUMBER 100000000 @@ -116,7 +112,7 @@ int main() { } ``` -There is another ways to handle failed memory allocation requests: write a custom recovery routine to handle such a failure, then register your function by calling the [_set_new_handler](../c-runtime-library/reference/set-new-handler.md) run-time function. +There is another way to handle failed memory allocation requests. Write a custom recovery routine to handle such a failure, then register your function by calling the [_set_new_handler](../c-runtime-library/reference/set-new-handler.md) run-time function. ## The delete operator @@ -133,16 +129,13 @@ void operator delete( void *, size_t ); Only one of the preceding two forms can be present for a given class. The first form takes a single argument of type `void *`, which contains a pointer to the object to deallocate. The second form—sized deallocation—takes two arguments, the first of which is a pointer to the memory block to deallocate and the second of which is the number of bytes to deallocate. The return type of both forms is **void** (**operator delete** cannot return a value). -The intent of the second form is to speed up searching for the correct size category of the object to be deleted, which is often not stored near the allocation itself and likely uncached; the second form is particularly useful when an **operator delete** function from a base class is used to delete an object of a derived class. +The intent of the second form is to speed up searching for the correct size category of the object to be deleted, which is often not stored near the allocation itself and likely uncached. The second form is useful when an **operator delete** function from a base class is used to delete an object of a derived class. -The **operator delete** function is static; therefore, it cannot be virtual. The **operator delete** function obeys access control, as described in [Member-Access Control](../cpp/member-access-control-cpp.md). +The **operator delete** function is static; therefore, it cannot be virtual. The **operator delete** function obeys access control, as described in [Member-Access Control](member-access-control-cpp.md). The following example shows user-defined **operator new** and **operator delete** functions designed to log allocations and deallocations of memory: ```cpp -// spec1_the_operator_delete_function1.cpp -// compile with: /EHsc -// arguments: 3 #include using namespace std; @@ -207,4 +200,4 @@ void f() { X *pX = new X[5]; delete [] pX; } -``` \ No newline at end of file +``` diff --git a/docs/cpp/noexcept-cpp.md b/docs/cpp/noexcept-cpp.md index 51688fe3df..779fa0aa57 100644 --- a/docs/cpp/noexcept-cpp.md +++ b/docs/cpp/noexcept-cpp.md @@ -1,6 +1,6 @@ --- title: "noexcept (C++)" -ms.date: "01/12/2018" +ms.date: "11/19/2019" f1_keywords: ["noexcept_cpp"] ms.assetid: df24edb9-c6a6-4e37-9914-fd5c0c3716a8 --- @@ -41,5 +41,5 @@ T copy_object(const T& obj) noexcept(std::is_pod) ## See also -[C++ Exception Handling](cpp-exception-handling.md)
+[Modern C++ best practices for exceptions and error handling](errors-and-exception-handling-modern-cpp.md)
[Exception Specifications (throw, noexcept)](exception-specifications-throw-cpp.md) \ No newline at end of file diff --git a/docs/cpp/noinline.md b/docs/cpp/noinline.md index 72e8844e90..f2daf4a59b 100644 --- a/docs/cpp/noinline.md +++ b/docs/cpp/noinline.md @@ -7,7 +7,7 @@ ms.assetid: f259d55b-dec7-4bde-8cf9-14521e4fdc42 --- # noinline -## Microsoft Specific +**Microsoft Specific** **__declspec(noinline)** tells the compiler to never inline a particular member function (function in a class). diff --git a/docs/cpp/noreturn.md b/docs/cpp/noreturn.md index 386f90f8fe..bde36b9331 100644 --- a/docs/cpp/noreturn.md +++ b/docs/cpp/noreturn.md @@ -7,7 +7,7 @@ ms.assetid: 9c6517e5-22d7-4051-9974-3d2200ae4d1d --- # noreturn -## Microsoft Specific +**Microsoft Specific** This **__declspec** attribute tells the compiler that a function does not return. As a consequence, the compiler knows that the code following a call to a **__declspec(noreturn)** function is unreachable. @@ -34,6 +34,8 @@ int main() { } ``` +**END Microsoft Specific** + ## See also [__declspec](../cpp/declspec.md)
diff --git a/docs/cpp/novtable.md b/docs/cpp/novtable.md index 429c20c5d1..c3e230957f 100644 --- a/docs/cpp/novtable.md +++ b/docs/cpp/novtable.md @@ -7,7 +7,7 @@ ms.assetid: cfef09c5-8c1e-4b14-8a72-7d726ded4484 --- # novtable -## Microsoft Specific +**Microsoft Specific** This is a **__declspec** extended attribute. diff --git a/docs/cpp/numeric-boolean-and-pointer-literals-cpp.md b/docs/cpp/numeric-boolean-and-pointer-literals-cpp.md index 7d19069223..c12581dc56 100644 --- a/docs/cpp/numeric-boolean-and-pointer-literals-cpp.md +++ b/docs/cpp/numeric-boolean-and-pointer-literals-cpp.md @@ -1,10 +1,10 @@ --- -title: "Numeric, Boolean and Pointer Literals (C++)" +title: "Numeric, boolean and pointer literals (C++)" ms.date: "11/04/2016" helpviewer_keywords: ["literals, C++", "constants, literals", "literals [C++]"] ms.assetid: 17c09fc3-3ad7-47e2-8b48-ba8ae994edc8 --- -# Numeric, Boolean and Pointer Literals (C++) +# Numeric, boolean and pointer literals A literal is a program element that directly represents a value. This article covers literals of type integer, floating-point, boolean and pointer. For information about string and character literals, see [String and Character Literals (C++)](../cpp/string-and-character-literals-cpp.md). You can also define your own literals based on any of these categories; for more information see [User-Defined Literals (C++)](../cpp/user-defined-literals-cpp.md) @@ -19,8 +19,6 @@ MyClass* mc = nullptr; // pointer literal Sometimes it's important to tell the compiler how to interpret a literal, or what specific type to give to it. You do this by appending prefixes or suffixes to the literal. For example, the prefix 0x tells the compiler to interpret the number that follows it as a hexadecimal value, for example 0x35. The ULL suffix tells the compiler to treat the value as an **unsigned long long** type, as in 5894345ULL. See the following sections for the complete list of prefixes and suffixes for each literal type. -## Syntax - ## Integer literals Integer literals begin with a digit and have no fractional parts or exponents. You can specify integer literals in decimal, octal, or hexadecimal form. They can specify signed or unsigned types and long or short types. diff --git a/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md b/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md index 7d7a7f48f7..6534c3ac6f 100644 --- a/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md +++ b/docs/cpp/object-lifetime-and-resource-management-modern-cpp.md @@ -1,60 +1,19 @@ --- -title: "Object Lifetime And Resource Management (Modern C++)" -ms.date: "11/04/2016" +title: "Object lifetime and resource management (RAII)" +description: "Follow the principle of RAII in modern C++ to avoid resource leaks." +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: 8aa0e1a1-e04d-46b1-acca-1d548490700f --- -# Object Lifetime And Resource Management (Modern C++) +# Object lifetime and resource management (RAII) -Unlike managed languages, C++ doesn’t have garbage collection (GC), which automatically releases no-longer-used memory resources as a program runs. In C++, resource management is directly related to object lifetime. This document describes the factors that affect object lifetime in C++ and how to manage it. +Unlike managed languages, C++ doesn't have automatic *garbage collection*. That's an internal process that releases heap memory and other resources as a program runs. A C++ program is responsible for returning all acquired resources to the operating system. Failure to release an unused resource is called a *leak*. Leaked resources are unavailable to other programs until the process exits. Memory leaks in particular are a common cause of bugs in C-style programming. -C++ doesn’t have GC primarily because it doesn't handle non-memory resources. Only deterministic destructors like those in C++ can handle memory and non-memory resources equally. GC also has other problems, like higher overhead in memory and CPU consumption, and locality. But universality is a fundamental problem that can't be mitigated through clever optimizations. +Modern C++ avoids using heap memory as much as possible by declaring objects on the stack. When a resource is too large for the stack, then it should be *owned* by an object. As the object gets initialized, it acquires the resource it owns. The object is then responsible for releasing the resource in its destructor. The owning object itself is declared on the stack. The principle that *objects own resources* is also known as "resource acquisition is initialization," or RAII. -## Concepts +When a resource-owning stack object goes out of scope, its destructor is automatically invoked. In this way, garbage collection in C++ is closely related to object lifetime, and is deterministic. A resource is always released at a known point in the program, which you can control. Only deterministic destructors like those in C++ can handle memory and non-memory resources equally. -An important thing in object-lifetime management is the encapsulation—whoever's using an object doesn't have to know what resources that object owns, or how to get rid of them, or even whether it owns any resources at all. It just has to destroy the object. The C++ core language is designed to ensure that objects are destroyed at the correct times, that is, as blocks are exited, in reverse order of construction. When an object is destroyed, its bases and members are destroyed in a particular order. The language automatically destroys objects, unless you do special things like heap allocation or placement new. For example, [smart pointers](../cpp/smart-pointers-modern-cpp.md) like `unique_ptr` and `shared_ptr`, and C++ Standard Library containers like `vector`, encapsulate **new**/**delete** and `new[]`/`delete[]` in objects, which have destructors. That's why it's so important to use smart pointers and C++ Standard Library containers. - -Another important concept in lifetime management: destructors. Destructors encapsulate resource release. (The commonly used mnemonic is RRID, Resource Release Is Destruction.) A resource is something that you get from "the system" and have to give back later. Memory is the most common resource, but there are also files, sockets, textures, and other non-memory resources. "Owning" a resource means you can use it when you need it but you also have to release it when you're finished with it. When an object is destroyed, its destructor releases the resources that it owned. - -The final concept is the DAG (Directed Acyclic Graph). The structure of ownership in a program forms a DAG. No object can own itself—that's not only impossible but also inherently meaningless. But two objects can share ownership of a third object. Several kinds of links are possible in a DAG like this: A is a member of B (B owns A), C stores a `vector` (C owns each D element), E stores a `shared_ptr` (E shares ownership of F, possibly with other objects), and so forth. As long as there are no cycles and every link in the DAG is represented by an object that has a destructor (instead of a raw pointer, handle, or other mechanism), then resource leaks are impossible because the language prevents them. Resources are released immediately after they're no longer needed, without a garbage collector running. The lifetime tracking is overhead-free for stack scope, bases, members, and related cases, and inexpensive for `shared_ptr`. - -### Heap-based lifetime - -For heap object lifetime, use [smart pointers](../cpp/smart-pointers-modern-cpp.md). Use `shared_ptr` and `make_shared` as the default pointer and allocator. Use `weak_ptr` to break cycles, do caching, and observe objects without affecting or assuming anything about their lifetimes. - -```cpp -void func() { - -auto p = make_shared(); // no leak, and exception safe -... -p->draw(); - -} // no delete required, out-of-scope triggers smart pointer destructor -``` - -Use `unique_ptr` for unique ownership, for example, in the *pimpl* idiom. (See [Pimpl For Compile-Time Encapsulation](../cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md).) Make a `unique_ptr` the primary target of all explicit **new** expressions. - -```cpp -unique_ptr p(new widget()); -``` - -You can use raw pointers for non-ownership and observation. A non-owning pointer may dangle, but it can’t leak. - -```cpp -class node { - ... - vector> children; // node owns children - node* parent; // node observes parent, which is not a concern - ... -}; -node::node() : parent(...) { children.emplace_back(new node(...) ); } -``` - -When performance optimization is required, you might have to use *well-encapsulated* owning pointers and explicit calls to delete. An example is when you implement your own low-level data structure. - -### Stack-based lifetime - -In modern C++, *stack-based scope* is a powerful way to write robust code because it combines automatic *stack lifetime* and *data member lifetime* with high efficiency—lifetime tracking is essentially free of overhead. Heap object lifetime requires diligent manual management and can be the source of resource leaks and inefficiencies, especially when you are working with raw pointers. Consider this code, which demonstrates stack-based scope: +The following example shows a simple object `w`. It's declared on the stack at function scope, and is destroyed at the end of the function block. The object `w` owns no *resources* (such as heap-allocated memory). Its only member `g` is itself declared on the stack, and simply goes out of scope along with `w`. No special code is needed in the `widget` destructor. ```cpp class widget { @@ -75,10 +34,57 @@ void functionUsingWidget () { // as if "finally { w.dispose(); w.g.dispose(); }" ``` -Use static lifetime sparingly (global static, function local static) because problems can arise. What happens when the constructor of a global object throws an exception? Typically, the app faults in a way that can be difficult to debug. Construction order is problematic for static lifetime objects, and is not concurrency-safe. Not only is object construction a problem, destruction order can be complex, especially where polymorphism is involved. Even if your object or variable isn’t polymorphic and doesn't have complex construction/destruction ordering, there’s still the issue of thread-safe concurrency. A multithreaded app can’t safely modify the data in static objects without having thread-local storage, resource locks, and other special precautions. +In the following example, `w` owns a memory resource and so must have code in its destructor to delete the memory. + +```cpp +class widget +{ +private: + int* data; +public: + widget(const int size) { data = new int[size]; } // acquire + ~widget() { delete[] data; } // release + void do_something() {} +}; + +void functionUsingWidget() { + widget w(1000000); // lifetime automatically tied to enclosing scope + // constructs w, including the w.data member + w.do_something(); + +} // automatic destruction and deallocation for w and w.data + +``` + +Since C++11, there's a better way to write the previous example: by using a smart pointer from the standard library. The smart pointer handles the allocation and deletion of the memory it owns. Using a smart pointer eliminates the need for an explicit destructor in the `widget` class. + +```cpp +#include +class widget +{ +private: + std::unique_ptr data; +public: + widget(const int size) { data = std::make_unique(size); } + void do_something() {} +}; + +void functionUsingWidget() { + widget w(1000000); // lifetime automatically tied to enclosing scope + // constructs w, including the w.data gadget member + // ... + w.do_something(); + // ... +} // automatic destruction and deallocation for w and w.data + +``` + +By using smart pointers for memory allocation, you may eliminate the potential for memory leaks. This model works for other resources, such as file handles or sockets. You can manage your own resources in a similar way in your classes. For more information, see [Smart pointers](smart-pointers-modern-cpp.md). + +The design of C++ ensures objects are destroyed when they go out of scope. That is, they get destroyed as blocks are exited, in reverse order of construction. When an object is destroyed, its bases and members are destroyed in a particular order. Objects declared outside of any block, at global scope, can lead to problems. It may be difficult to debug, if the constructor of a global object throws an exception. ## 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/objects-own-resources-raii.md b/docs/cpp/objects-own-resources-raii.md deleted file mode 100644 index f933ac7bda..0000000000 --- a/docs/cpp/objects-own-resources-raii.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Objects Own Resources (RAII)" -ms.date: "11/04/2016" -ms.topic: "conceptual" -ms.assetid: f86b484e-5a27-4c3b-a92a-dfaa5dd6d93a ---- -# Objects Own Resources (RAII) - -Make sure that objects own resources. This principle is also known as “resource acquisition is initialization” or “RAII.” - -## Example - -Pass every “new” object as a constructor argument to another named object that owns it (almost always unique_ptr). - -```cpp -void f() { - unique_ptr p( new widget() ); - my_class x( new widget() ); - // ... -} // automatic destruction and deallocation for both widget objects - // automatic exception safety, as if "finally { p->dispose(); x.w.dispose(); }" -``` - -Always immediately pass any new resource to another object that owns it. - -```cpp -void g() { - other_class y( OpenFile() ); - // ... -} // automatic closing and release for file resource - // automatic exception safety, as if "finally { y.file.dispose(); }" -``` - -## 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/obsolete-calling-conventions.md b/docs/cpp/obsolete-calling-conventions.md index 3361590e83..e0c7691aca 100644 --- a/docs/cpp/obsolete-calling-conventions.md +++ b/docs/cpp/obsolete-calling-conventions.md @@ -7,7 +7,7 @@ ms.assetid: a91fc665-034a-48ce-b6bd-d27125f308a7 --- # Obsolete Calling Conventions -## Microsoft Specific +**Microsoft Specific** The **__pascal**, **__fortran**, and **__syscall** calling conventions are no longer supported. You can emulate their functionality by using one of the supported calling conventions and appropriate linker options. diff --git a/docs/cpp/ordering-of-cpp-arrays.md b/docs/cpp/ordering-of-cpp-arrays.md deleted file mode 100644 index ba1a6e0553..0000000000 --- a/docs/cpp/ordering-of-cpp-arrays.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Ordering of C++ Arrays" -ms.date: "11/04/2016" -helpviewer_keywords: ["sequence [C++]", "sequence, C++ arrays", "arrays [C++]"] -ms.assetid: ec53baa3-b77e-49be-911f-61fa1362943f ---- -# Ordering of C++ Arrays - -C++ arrays are stored in row-major order. Row-major order means the last subscript varies the fastest. - -## See also - -[Arrays](../cpp/arrays-cpp.md) \ No newline at end of file diff --git a/docs/cpp/overview-of-declarators.md b/docs/cpp/overview-of-declarators.md deleted file mode 100644 index aa5aca691c..0000000000 --- a/docs/cpp/overview-of-declarators.md +++ /dev/null @@ -1,175 +0,0 @@ ---- -title: "Overview of Declarators" -ms.date: "11/19/2018" -helpviewer_keywords: ["declarators, about declarators"] -ms.assetid: 0f2e2312-80bd-4154-8345-718bd9ed2173 ---- -# Overview of Declarators - -Declarators are the components of a declaration that specify names of objects or functions. Declarators also specify whether or not the named object is an object, pointer, reference or array. While declarators do not specify the base type, they do modify the type information in the basic type to specify derived types such as pointers, references, and arrays. Applied to functions, the declarator works with the type specifier to fully specify the return type of a function to be an object, pointer, or reference. (Specifiers, discussed in [Declarations and Definitions](declarations-and-definitions-cpp.md), convey properties such as type and storage class. Modifiers, discussed in this section and in [Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md), modify declarators.) The following figure shows a complete declaration of `MyFunction`, and calls out the components of the declaration. - -![Modifiers, specifiers, and declarators](../cpp/media/vc38qy1.gif "Modifiers, specifiers, and declarators")
-Specifiers, modifiers, and declarators - -**Microsoft Specific** - -Most Microsoft extended keywords can be used as modifiers to form derived types; they are not specifiers or declarators. (See [Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md).) - -**END Microsoft Specific** - -Declarators appear in the declaration syntax after an optional list of specifiers. These specifiers are discussed in [Declarations.](declarations-and-definitions-cpp.md) A declaration can contain more than one declarator, but each declarator declares only one name. - -The following sample declaration shows how specifiers and declarators are combined to form a complete declaration: - -```cpp -const char *pch, ch; -``` - -In the preceding declaration, the keywords **const** and **char** make up the list of specifiers. Two declarators are listed: `*pch` and `ch`. A declaration that declares multiple entities consists of a type specifier followed by a comma-separated list of declarators, terminated with a semicolon. - -**Declarators for Simple Objects** - -The declarator of a simple object such as an int or double is simply its name, with optional parentheses. - -`int i; // declarator is i` - -`int (i); // declarator is (i)` - -**Declarators for Pointers, References and Arrays** - -Pointer operators inserted in front of the name cause the object to be a pointer or reference. The \* operator declares the name as a pointer; the **&** operator declares it as a reference. - -```cpp -int *i; // declarator is *i -int **i; // declarator is **i; -int &i = x; // declaratory is &i -``` - -Appending **const** or **volatile** give the pointer these special properties. The use of these specifiers in a declarator (as opposed to in the type specifier) modifies the properties of the pointer, not the object pointed to: - -```cpp -char *const cpc; // const pointer to char -const char *pcc; // pointer to const char -const char *const cpcc; // const pointer to const char -``` - -Further information may be found in [const and volatile Pointers](../cpp/const-and-volatile-pointers.md). - -A pointer to a member of a class or struct is declared with the appropriate nested name specifier: - -```cpp -int X::* pIntMember; -int ::X::* pIntMember; // the initial :: specifies X is in global scope -char Outer::Inner::* pIntMember; // pointer to char in a nested class -``` - -Brackets enclosing an optional constant expression after the name cause the object to be an array. Successive brackets declare additional dimensions to the array. - -```cpp -int i[5]; // array with five elements of type int numbered from 0 to 4 -int i[]; // array of unknown size -char *s[4]; // array of pointers to char -int i[2][2]; // two dimensional array -``` - -**Declarators for Functions** - -Parentheses containing the argument list are used after the name to declare a function. The following declares a function of return type **int** and three arguments of type **int**. - -```cpp -int f(int a, int b, int c); -``` - -Pointers and references to functions are declared by prepending the pointer or reference operator to the function name as shown below. Parentheses, normally optional, are required to distinguish a pointer to a function from a function that returns a pointer: - -```cpp -int (*pf)(int); // pointer to function returning int -int *f(int i); // function returning pointer to int -int (&pf)(int); // reference to function -``` - -Pointers to member functions are distinguished by nested name specifiers: - -```cpp -int (X::* pmf)(); // pointer to member function of X returning int -int* (X::* pmf)(); // pointer to member function returning pointer to int -``` - -See also [Pointers to Members](../cpp/pointers-to-members.md). - -**Functions and objects in the same declaration** - -Functions and objects may be declared in the same declaration as follows: - -```cpp -int i, *j, f(int k); // int, pointer to int, function returning int -``` - -The syntax may be misleading in some circumstances. The following declaration - -```cpp -int* i, f(int k); // pointer to int, function returning int (not int*) -``` - -may look like the declaration of an **int** pointer and a function returning `int*`, but it is not. That's because the \* is part of the declarator for `i`, not part of the declarator for `f`. - -**Simplifying declarator syntax with typedef** - -A better technique, however, is to use a **typedef** or a combination of parentheses and the **typedef** keyword. Consider declaring an array of pointers to functions: - -```cpp -// Function returning type int that takes one -// argument of type char *. -typedef int (*PIFN)( char * ); -// Declare an array of 7 pointers to functions -// returning int and taking one argument of type -// char *. -PIFN pifnDispatchArray[7]; -``` - -The equivalent declaration can be written without the **typedef** declaration, but it is so complicated that the potential for error exceeds any benefits: - -```cpp -int ( *pifnDispatchArray[7] )( char * ); -``` - -For more information on typedef, see [Aliases and typedefs](aliases-and-typedefs-cpp.md). - -Pointers, references, arrays of a single base type can be combined in a single declaration (separated by commas) as - -```cpp -int a, *b, c[5], **d, &e=a; -``` - -**More complex declarator syntax** - -- Pointer, reference, array, and function declarators may be combined to specify such objects as arrays of pointers to functions, pointers to arrays, etc. - -- The following recursive grammar describes pointer declarator syntax fully. - -- A `declarator` is defined as one of: - - - identifier - - qualified-name - - declarator ( argument-list ) [cv-qualfiers] [exception-spec] - - declarator [ [ constant-expression ] ] - - pointer-operator declarator - - ( declarator ) - -- and *pointer-operator* is one of: - - - \* [cv-qualifiers] - - & [cv-qualifiers] ::nested-name-specifier \* [cv-qualifiers] - -Because a declarator may contain declarators, it is possible to construct the more complex derived types such as arrays of pointers, functions returning arrays of function pointers, by using the above rules. To form each step of the construction, start with the identifier representing the base data type and apply the syntax rule above with the previous expression as the `declarator`. The order that you apply the syntax rules should be the reverse of the way the expression is stated in English. If applying the *pointer-operator* syntax rule to an array or function expression, use parentheses if you want a pointer to the array or function, as in the last row in the table below. - -The following example shows the construction of "pointer to array of 10 pointers to int". - -|Verbal expression|Declarator|Syntax Rule Applied| -|-----------------------|----------------|-------------------------| -||`i`|1| -|pointer(s) to|`*i`|5| -|array of 10|`(*i)[10]`|4| -|pointer to|`*((*i)[10])`|6 and then 5| - -When multiple pointer, reference, array or function modifiers are used, declarators may become quite complicated. The topic [Interpreting More Complex Declarators](../c-language/interpreting-more-complex-declarators.md) describes how to read more complex declarator syntax. The topic is applicable to both C and C++, although in C++, anywhere the \* is used to indicate a pointer, a qualified name such as MyClass::\* may be used to specify a pointer to a member of a class. \ No newline at end of file diff --git a/docs/cpp/overview-of-file-translation.md b/docs/cpp/overview-of-file-translation.md deleted file mode 100644 index 988c0c45a3..0000000000 --- a/docs/cpp/overview-of-file-translation.md +++ /dev/null @@ -1,40 +0,0 @@ ---- -title: "Overview of File Translation" -ms.date: "11/04/2016" -helpviewer_keywords: ["file translation [C++], about file translation", "translation [C++]", "translation phases", "files [C++], translation", "programs [C++], lexical conventions of", "preprocessing translation phase"] -ms.assetid: 5036c7b7-ccff-4e2c-b052-a9ea6c71af87 ---- -# Overview of File Translation - -C++ programs, like C programs, consist of one or more files. Each of these files is translated in the following conceptual order (the actual order follows the "as if" rule: translation must occur as if these steps had been followed): - -1. Lexical tokenizing. Character mapping and trigraph processing, line splicing, and tokenizing are performed in this translation phase. - -1. Preprocessing. This translation phase brings in ancillary source files referenced by `#include` directives, handles "stringizing" and "charizing" directives, and performs token pasting and macro expansion (see [Preprocessor Directives](../preprocessor/preprocessor-directives.md) in the *Preprocessor Reference* for more information). The result of the preprocessing phase is a sequence of tokens that, taken together, define a "translation unit." - - Preprocessor directives always begin with the number-sign (**#**) character (that is, the first nonwhite-space character on the line must be a number sign). Only one preprocessor directive can appear on a given line. For example: - - ```cpp - #include // Include text of iostream in - // translation unit. - #define NDEBUG // Define NDEBUG (NDEBUG contains empty - // text string). - ``` - -1. Code generation. This translation phase uses the tokens generated in the preprocessing phase to generate object code. - - During this phase, syntactic and semantic checking of the source code is performed. - -See [Phases of Translation](../preprocessor/phases-of-translation.md) in the *Preprocessor Reference* for more information. - -The C++ preprocessor is a strict superset of the ANSI C preprocessor, but the C++ preprocessor differs in a few instances. The following list describes several differences between the ANSI C and the C++ preprocessors: - -- Single-line comments are supported. See [Comments](../cpp/comments-cpp.md) for more information. - -- One predefined macro, `__cplusplus`, is defined only for C++. See [Predefined Macros](../preprocessor/predefined-macros.md) in the *Preprocessor Reference* for more information. - -- The C preprocessor does not recognize the C++ operators: **.**\*, **->**\*, and **::**. See [Operators](../cpp/cpp-built-in-operators-precedence-and-associativity.md) and [Expressions](../cpp/expressions-cpp.md), for more information about operators. - -## See also - -[Lexical Conventions](../cpp/lexical-conventions.md) diff --git a/docs/cpp/parsing-cpp-command-line-arguments.md b/docs/cpp/parsing-cpp-command-line-arguments.md deleted file mode 100644 index a3de6e2f32..0000000000 --- a/docs/cpp/parsing-cpp-command-line-arguments.md +++ /dev/null @@ -1,66 +0,0 @@ ---- -title: "Parsing C++ Command-Line Arguments" -ms.date: "11/04/2016" -helpviewer_keywords: ["quotation marks, command-line arguments", "double quotation marks", "command line [C++], parsing", "parsing, command-line arguments", "startup code, parsing command-line arguments"] -ms.assetid: e634e733-ac2f-4298-abe2-7e9288c94951 ---- -# Parsing C++ Command-Line Arguments - -**Microsoft Specific** - -Microsoft C/C++ startup code uses the following rules when interpreting arguments given on the operating system command line: - -- Arguments are delimited by white space, which is either a space or a tab. - -- The caret character (^) is not recognized as an escape character or delimiter. The character is handled completely by the command-line parser in the operating system before being passed to the `argv` array in the program. - -- A string surrounded by double quotation marks ("*string*") is interpreted as a single argument, regardless of white space contained within. A quoted string can be embedded in an argument. - -- A double quotation mark preceded by a backslash (\\") is interpreted as a literal double quotation mark character ("). - -- Backslashes are interpreted literally, unless they immediately precede a double quotation mark. - -- If an even number of backslashes is followed by a double quotation mark, one backslash is placed in the `argv` array for every pair of backslashes, and the double quotation mark is interpreted as a string delimiter. - -- If an odd number of backslashes is followed by a double quotation mark, one backslash is placed in the `argv` array for every pair of backslashes, and the double quotation mark is "escaped" by the remaining backslash, causing a literal double quotation mark (") to be placed in `argv`. - -## Example - -The following program demonstrates how command-line arguments are passed: - -```cpp -// command_line_arguments.cpp -// compile with: /EHsc -#include - -using namespace std; -int main( int argc, // Number of strings in array argv - char *argv[], // Array of command-line argument strings - char *envp[] ) // Array of environment variable strings -{ - int count; - - // Display each command-line argument. - cout << "\nCommand-line arguments:\n"; - for( count = 0; count < argc; count++ ) - cout << " argv[" << count << "] " - << argv[count] << "\n"; -} -``` - -The following table shows example input and expected output, demonstrating the rules in the preceding list. - -### Results of Parsing Command Lines - -|Command-Line Input|argv[1]|argv[2]|argv[3]| -|-------------------------|---------------|---------------|---------------| -|`"abc" d e`|`abc`|`d`|`e`| -|`a\\b d"e f"g h`|`a\\b`|`de fg`|`h`| -|`a\\\"b c d`|`a\"b`|`c`|`d`| -|`a\\\\"b c" d e`|`a\\b c`|`d`|`e`| - -**END Microsoft Specific** - -## See also - -[main: Program Startup](../cpp/main-program-startup.md) \ No newline at end of file diff --git a/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md b/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md index faa95e81c2..7f96402536 100644 --- a/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md +++ b/docs/cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md @@ -53,6 +53,6 @@ Consider whether to add support for non-throwing swap specialization. ## 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/point-of-declaration-in-cpp.md b/docs/cpp/point-of-declaration-in-cpp.md deleted file mode 100644 index 9324aaf422..0000000000 --- a/docs/cpp/point-of-declaration-in-cpp.md +++ /dev/null @@ -1,27 +0,0 @@ ---- -title: "Point of declaration in C++" -ms.date: "11/04/2016" -helpviewer_keywords: ["point of declaration"] -ms.assetid: 92ea8707-80cb-497c-b479-f907b8401859 ---- -# Point of declaration in C++ - -A name is considered to be declared immediately after its declarator but before its (optional) initializer. (For more information on declarators, see [Declarations and definitions](declarations-and-definitions-cpp.md).) - -Consider this example: - -```cpp -// point_of_declaration1.cpp -// compile with: /W1 -double dVar = 7.0; -int main() -{ - double dVar = dVar; // C4700 -} -``` - -If the point of declaration were *after* the initialization, then the local `dVar` would be initialized to 7.0, the value of the global variable `dVar`. However, since that is not the case, `dVar` is initialized to an undefined value. - -## See also - -[Scope](../cpp/scope-visual-cpp.md) \ No newline at end of file diff --git a/docs/cpp/pointers-cpp.md b/docs/cpp/pointers-cpp.md index 4603d435e6..8bf366f6a4 100644 --- a/docs/cpp/pointers-cpp.md +++ b/docs/cpp/pointers-cpp.md @@ -1,245 +1,33 @@ --- title: "Pointers (C++)" -ms.date: "11/04/2016" -helpviewer_keywords: ["declarators, pointers", "declarations, pointers", "pointers [C++]", "pointers, declarations"] +ms.date: "11/19/2019" +description: "About raw pointers and smart pointers in Microsoft C++." +helpviewer_keywords: ["pointers (C++)"] ms.assetid: 595387c5-8e58-4670-848f-344c7caf985e --- -# Pointers (C++) - -Pointers are declared using the following sequence. - -> \[*storage-class-specifiers*] \[*cv-qualifiers*] *type-specifiers* \[*ms-modifier*] *declarator* **;** - -where any valid pointer declarator may be used for *declarator*. The syntax for a simple pointer declarator is as follows: - -> __\*__ \[*cv-qualifiers*] *identifier* \[**=** *expression*] - -1. The declaration specifiers: - - - An optional storage class specifier. For more information, see [Specifiers](../cpp/specifiers.md). - - - An optional **const** or **volatile** keyword applying to the type of the object to be pointed to. - - - The type specifier: the name of a type representing the type of the object to be pointed to. - -1. The declarator: - - - An optional Microsoft-specific modifier. For more information, see [Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md). - - - The __\*__ operator. - - - An optional **const** or **volatile** keyword applying to the pointer itself. - - - The identifier. - - - An optional initializer. - -The declarator for a pointer to function looks like this: - -> __(\*__ \[*cv-qualifiers*] *identifier* **)(** *argument-list* **)** \[*cv-qualifers*] \[*exception-specification*] \[**=** *expression*] **;** - -For an array of pointers, the syntax looks like this: - -> __\*__ *identifier* **\[** \[*constant-expression*] **]** - -Multiple declarators and their initializers may appear together in a single declaration in a comma separated list following the declaration specifier. - -A simple example of a pointer declaration is: - -```cpp -char *pch; -``` - -The preceding declaration specifies that `pch` points to an object of type **char**. - -A more complex example is - -```cpp -static unsigned int * const ptr; -``` -The preceding declaration specifies that `ptr` is a constant pointer to an object of type **unsigned** **int** with static storage duration. - -The next example shows how multiple pointers are declared and initialized: - -```cpp -static int *p = &i, *q = &j; -``` - -In the preceding example, pointers p and q both point to objects of type **int** and are initialized to the addresses of i and j respectively. The storage class specifier **static** applies to both pointers. - -## Example - -```cpp -// pointer.cpp -// compile with: /EHsc -#include -int main() { - int i = 1, j = 2; // local variables on the stack - int *p; - - // a pointer may be assigned to "point to" the value of - // another variable using the & (address of) operator - p = & j; - - // since j was on the stack, this address will be somewhere - // on the stack. Pointers are printed in hex format using - // %p and conventionally marked with 0x. - printf_s("0x%p\n", p); - - // The * (indirection operator) can be read as "the value - // pointed to by". - // Since p is pointing to j, this should print "2" - printf_s("0x%p %d\n", p, *p); - - // changing j will change the result of the indirection - // operator on p. - j = 7; - printf_s("0x%p %d\n", p, *p ); - - // The value of j can also be changed through the pointer - // by making an assignment to the dereferenced pointer - *p = 10; - printf_s("j is %d\n", j); // j is now 10 - - // allocate memory on the heap for an integer, - // initialize to 5 - p = new int(5); - - // print the pointer and the object pointed to - // the address will be somewhere on the heap - printf_s("0x%p %d\n", p, *p); - - // free the memory pointed to by p - delete p; - - // At this point, dereferencing p with *p would trigger - // a runtime access violation. - - // Pointer arithmetic may be done with an array declared - // on the stack or allocated on the heap with new. - // The increment operator takes into account the size - // of the objects pointed to. - p = new int[5]; - for (i = 0; i < 5; i++, p++) { - *p = i * 10; - printf_s("0x%p %d\n", p, *p); - } - - // A common expression seen is dereferencing in combination - // with increment or decrement operators, as shown here. - // The indirection operator * takes precedence over the - // increment operator ++. - // These are particularly useful in manipulating char arrays. - char s1[4] = "cat"; - char s2[4] = "dog"; - char* p1 = s1; - char* p2 = s2; - - // the following is a string copy operation - while (*p1++ = *p2++); - - // s2 was copied into s1, so now they are both equal to "dog" - printf_s("%s %s", s1, s2); -} -``` - -```Output -0x0012FEC8 -0x0012FEC8 2 -0x0012FEC8 7 -j is 10 -0x00320850 5 -0x00320850 0 -0x00320854 10 -0x00320858 20 -0x0032085C 30 -0x00320860 40 -dog dog -``` - -## Example - -Another example illustrates the use of pointers in data structures; in this case, a linked list. - -```cpp -// pointer_linkedlist.cpp -// compile with: /EHsc -#include -using namespace std; - -struct NewNode { - NewNode() : node(0){} - int i; - NewNode * node; -}; - -void WalkList(NewNode * ptr) { - if (ptr != 0) { - int i = 1; - while (ptr->node != 0 ) { - cout << "node " << i++ << " = " << ptr->i << endl; - ptr = ptr->node; - } - cout << "node " << i++ << " = " << ptr->i << endl; - } -} +# Pointers (C++) -void AddNode(NewNode ** ptr) { - NewNode * walker = 0; - NewNode * MyNewNode = new NewNode; - cout << "enter a number: " << endl; - cin >> MyNewNode->i; +A pointer is a variable that stores the memory address of an object. Pointers are used extensively in both C and C++ for three main purposes: - if (*ptr == 0) - *ptr = MyNewNode; - else { - walker = *ptr; - while (walker->node != 0) - walker = walker->node; +- to allocate new objects on the heap, +- to pass functions to other functions +- to iterate over elements in arrays or other data structures. - walker->node = MyNewNode; - } -} +In C-style programming, *raw pointers* are used for all these scenarios. However, raw pointers are the source of many serious programming errors. Therefore, their use is strongly discouraged except where they provide a significant performance benefit and there is no ambiguity as to which pointer is the *owning pointer* that is responsible for deleting the object. Modern C++ provides *smart pointers* for allocating objects, *iterators* for traversing data structures, and *lambda expressions* for passing functions. By using these language and library facilities instead of raw pointers, you will make your program safer, easier to debug, and simpler to understand and maintain. See [Smart pointers](smart-pointers-modern-cpp.md), [Iterators](../standard-library/iterators.md), and [Lambda expressions](lambda-expressions-in-cpp.md) for more information. -int main() { - char ans = ' '; - NewNode * ptr = 0; - do { - cout << "a (add node) d (display list) q (quit)" << endl; - cin >> ans; - switch (ans) { - case 'a': - AddNode(&ptr); - break; - case 'd': - WalkList(ptr); - break; - } - } while (ans != 'q'); -} -``` +## In this section -```Output -a -45 -d -a -789 -d -qa (add node) d (display list) q (quit) -enter a number: -a (add node) d (display list) q (quit) -node 1 = 45 -a (add node) d (display list) q (quit) -enter a number: -a (add node) d (display list) q (quit) -node 1 = 45 -node 2 = 789 -a (add node) d (display list) q (quit) -``` +- [Raw pointers](raw-pointers.md) +- [Const and volatile pointers](const-and-volatile-pointers.md) +- [new and delete operators](new-and-delete-operators.md) +- [Smart pointers](smart-pointers-modern-cpp.md) +- [How to: Create and use unique_ptr instances](how-to-create-and-use-unique-ptr-instances.md) +- [How to: Create and use shared_ptr instances](how-to-create-and-use-shared-ptr-instances.md) +- [How to: Create and use weak_ptr instances](how-to-create-and-use-weak-ptr-instances.md) +- [How to: Create and use CComPtr and CComQIPtr instances](how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md) ## See also -[Indirection Operator: *](../cpp/indirection-operator-star.md)
-[Address-of Operator: &](../cpp/address-of-operator-amp.md) +[Iterators](../standard-library/iterators.md)
+[Lambda expressions](lambda-expressions-in-cpp.md) diff --git a/docs/cpp/pointers-to-members.md b/docs/cpp/pointers-to-members.md index d9721f1427..df1c40d950 100644 --- a/docs/cpp/pointers-to-members.md +++ b/docs/cpp/pointers-to-members.md @@ -23,7 +23,7 @@ Declarations of pointers to members are special cases of pointer declarations. 1. The declarator: - - An optional Microsoft specific modifier. For more information, see [Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md). + - An optional Microsoft-specific modifier. For more information, see [Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md). - The qualified name of the class containing the members to be pointed to. diff --git a/docs/cpp/portability-at-abi-boundaries-modern-cpp.md b/docs/cpp/portability-at-abi-boundaries-modern-cpp.md index 5b840deb0a..28caf182d0 100644 --- a/docs/cpp/portability-at-abi-boundaries-modern-cpp.md +++ b/docs/cpp/portability-at-abi-boundaries-modern-cpp.md @@ -1,16 +1,17 @@ --- -title: "Portability At ABI Boundaries (Modern C++)" -ms.date: "11/04/2016" +title: "Portability at ABI boundaries" +description: "Flatten C++ interfaces to C calling conventions at binary interface boundaries." +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: abbd405e-3038-427c-8c24-e00598f0936a --- -# Portability At ABI Boundaries (Modern C++) +# Portability at ABI boundaries -Use sufficiently portable types and conventions at binary interface boundaries. A “portable type” is a C built-in type or a struct that contains only C built-in types. Class types can only be used when caller and callee agree on layout, calling convention, etc. This is only possible when both are compiled with the same compiler and compiler settings. +Use sufficiently portable types and conventions at binary interface boundaries. A "portable type" is a C built-in type or a struct that contains only C built-in types. Class types can only be used when caller and callee agree on layout, calling convention, etc. That's only possible when both are compiled with the same compiler and compiler settings. ## How to flatten a class for C portability -When callers may be compiled with another compiler/language, then “flatten” to an **extern "C"** API with a specific calling convention: +When callers may be compiled with another compiler/language, then "flatten" to an **extern "C"** API with a specific calling convention: ```cpp // class widget { @@ -28,6 +29,6 @@ extern "C" { // functions using explicit "this" ## 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/program-and-linkage-cpp.md b/docs/cpp/program-and-linkage-cpp.md index 0e01d997d2..da853ca8b5 100644 --- a/docs/cpp/program-and-linkage-cpp.md +++ b/docs/cpp/program-and-linkage-cpp.md @@ -1,41 +1,44 @@ --- -title: "Programs and Linkage (C++)" -ms.date: "04/09/2018" +title: "Translation units and linkage (C++)" +ms.date: "12/11/2019" ms.assetid: a6493ba0-24e2-4c89-956e-9da1dea660cb --- -# Program and Linkage (C++) +# Translation units and linkage -In a C++ program, a *symbol*, for example a variable or function name, can be declared any number of times within its scope, but it can only be defined once. This is the One Definition Rule (ODR). A *declaration* introduces (or re-introduces) a name into the program. A *definition* introduces a name and, in the case of a variable, explicitly initializes it. A *function definition* consists of the signature plus the function body. +In a C++ program, a *symbol*, for example a variable or function name, can be declared any number of times within its scope, but it can only be defined once. This rule is the "One Definition Rule" (ODR). A *declaration* introduces (or re-introduces) a name into the program. A *definition* introduces a name. If the name represents a variable, a definition explicitly initializes it. A *function definition* consists of the signature plus the function body. A class definition consists of the class name followed by a block that lists all the class members. (The bodies of member functions may optionally be defined separately in another file.) -These are declarations: +The following example shows some declarations: ```cpp int i; int f(int x); +class C; ``` -These are definitions: +The following example shows some definitions: ```cpp int i{42}; int f(int x){ return x * i; } +class C { +public: + void DoSomething(); +}; ``` -A program consists of one or more *translation units*. A translation unit consists of an implementation file (.cpp, .cxx, etc.) and all the headers (.h, .hpp, etc.) that it includes directly or indirectly. Each translation unit is compiled independently by the compiler, after which the linker merges the compiled translation units into a single *program*. Violations of the ODR rule typically show up as linker errors when the same name has two different definitions in different translation units. +A program consists of one or more *translation units*. A translation unit consists of an implementation file and all the headers that it includes directly or indirectly. Implementation files typically have a file extension of *cpp* or *cxx*. Header files typically have an extension of *h* or *hpp*. Each translation unit is compiled independently by the compiler. After the compilation is complete, the linker merges the compiled translation units into a single *program*. Violations of the ODR rule typically show up as linker errors. Linker errors occur when the same name has two different definitions in different translation units. -In general, the best way to make a variable visible across multiple files is to put it in a header file and add an #include directive in every .cpp file that requires the declaration. By adding *include guards* around the header contents, you ensure that the names it declares are only defined once. +In general, the best way to make a variable visible across multiple files is to put it in a header file. Then add an #include directive in every *cpp* file that requires the declaration. By adding *include guards* around the header contents, you ensure that the names it declares are only defined once. -However, in some cases it may be necessary to declare a global variable or class in a .cpp file. In those cases, you need a way to tell the compiler and linker whether the name of the object applies just to the one file, or to all files. +In C++20, [modules](modules-cpp.md) are introduced as an improved alternative to header files. -## Linkage vs. scope - -The concept of *linkage* refers to the visibility of global symbols (such as variables, type names and function names) within the program as a whole across translation units. The concept of *scope* refers to symbols that are declared within a block such as a namespace, class, or function body. Such symbols are visible only within the scope in which they are defined; the concept of linkage does not apply to them. +In some cases it may be necessary to declare a global variable or class in a *cpp* file. In those cases, you need a way to tell the compiler and linker what kind of *linkage* the name has. The type of linkage specifies whether the name of the object applies just to the one file, or to all files. The concept of linkage applies only to global names. The concept of linkage does not apply to names that are declared within a scope. A scope is specified by a set of enclosing braces such as in function or class definitions. ## External vs. internal linkage -A *free function* is a function that is defined at global or namespace scope. Non-const global variables and free functions by default have *external linkage*; they are visible from any translation unit in the program. Therefore, no other global object (variable, class definition, etc.) can have that name. A symbol with *internal linkage* or *no linkage* is visible only within the translation unit in which it is declared. When a name has internal linkage, the same name may exist in another translation unit. Variables declared with class definitions or function bodies have no linkage. +A *free function* is a function that is defined at global or namespace scope. Non-const global variables and free functions by default have *external linkage*; they are visible from any translation unit in the program. Therefore, no other global object can have that name. A symbol with *internal linkage* or *no linkage* is visible only within the translation unit in which it is declared. When a name has internal linkage, the same name may exist in another translation unit. Variables declared with class definitions or function bodies have no linkage. -You can force a global name to have internal linkage by explicitly declaring it as **static**. This limits its visiblity to the same translation unit in which it is declared. Note that in this context, **static** means something different than when applied to local variables. +You can force a global name to have internal linkage by explicitly declaring it as **static**. This limits its visibility to the same translation unit in which it is declared. In this context, **static** means something different than when applied to local variables. The following objects have internal linkage by default: - const objects diff --git a/docs/cpp/program-termination.md b/docs/cpp/program-termination.md index 38da9edefa..da273ff287 100644 --- a/docs/cpp/program-termination.md +++ b/docs/cpp/program-termination.md @@ -1,19 +1,104 @@ --- -title: "Program Termination" -ms.date: "11/04/2016" +title: "C++ program termination" +description: "Describes the ways to exit a C++-language program." +ms.date: "01/15/2020" helpviewer_keywords: ["terminating execution", "quitting applications", "exiting applications", "programs [C++], terminating"] ms.assetid: fa0ba9de-b5f1-4e7b-aa65-e7932068b48c +no-loc: [exit, abort, return, main, atexit, void] --- -# Program Termination +# C++ program termination -In C++, there are several ways to exit a program: +In C++, you can exit a program in these ways: -- Call the [exit](../cpp/exit-function.md) function. +- Call the [exit](exit-function.md) function. +- Call the [abort](abort-function.md) function. +- Execute a [return](return-statement-cpp.md) statement from `main`. -- Call the [abort](../cpp/abort-function.md) function. +## exit function -- Execute a [return](../cpp/return-statement-in-program-termination-cpp.md) statement from `main`. +The [exit](../c-runtime-library/reference/exit-exit-exit.md) function, declared in \, terminates a C++ program. The value supplied as an argument to `exit` is returned to the operating system as the program's return code or exit code. By convention, a return code of zero means that the program completed successfully. You can use the constants EXIT_FAILURE and EXIT_SUCCESS, also defined in \, to indicate success or failure of your program. + +Issuing a **return** statement from the `main` function is equivalent to calling the `exit` function with the return value as its argument. + +## abort function + +The [abort](../c-runtime-library/reference/abort.md) 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. The `abort` function bypasses the normal destruction process for initialized global static objects. It also bypasses any special processing that was specified using the [atexit](../c-runtime-library/reference/atexit.md) function. + +## atexit function + +Use the [atexit](../c-runtime-library/reference/atexit.md) function to specify actions that execute prior to program termination. No global static objects initialized prior to the call to **atexit** are destroyed prior to execution of the exit-processing function. + +## return statement in main + +Issuing a [return](return-statement-cpp.md) statement from `main` is functionally equivalent to calling the `exit` function. Consider the following example: + +```cpp +// return_statement.cpp +#include +int main() +{ + exit( 3 ); + return 3; +} +``` + +The `exit` and **return** statements in the preceding example are functionally identical. However, C++ requires that functions that have return types other than **void** return a value. The **return** statement allows you to return a value from `main`. + +## Destruction of static objects + +When you call `exit` or execute a **return** statement from `main`, static objects are destroyed in the reverse order of their initialization (after the call to `atexit` if one exists). The following example shows how such initialization and cleanup works. + +### Example + +In the following example, the static objects `sd1` and `sd2` are created and initialized before entry to `main`. After this program terminates using the **return** statement, first `sd2` is destroyed and then `sd1`. The destructor for the `ShowData` class closes the files associated with these static objects. + +```cpp +// using_exit_or_return1.cpp +#include +class ShowData { +public: + // Constructor opens a file. + ShowData( const char *szDev ) { + errno_t err; + err = fopen_s(&OutputDev, szDev, "w" ); + } + + // Destructor closes the file. + ~ShowData() { fclose( OutputDev ); } + + // Disp function shows a string on the output device. + void Disp( char *szData ) { + fputs( szData, OutputDev ); + } +private: + FILE *OutputDev; +}; + +// Define a static object of type ShowData. The output device +// selected is "CON" -- the standard output device. +ShowData sd1 = "CON"; + +// Define another static object of type ShowData. The output +// is directed to a file called "HELLO.DAT" +ShowData sd2 = "hello.dat"; + +int main() { + sd1.Disp( "hello to default device\n" ); + sd2.Disp( "hello to file hello.dat\n" ); +} +``` + +Another way to write this code is to declare the `ShowData` objects with block scope, allowing them to be destroyed when they go out of scope: + +```cpp +int main() { + ShowData sd1, sd2( "hello.dat" ); + + sd1.Disp( "hello to default device\n" ); + sd2.Disp( "hello to file hello.dat\n" ); +} +``` ## See also -[main: Program Startup](../cpp/main-program-startup.md) \ No newline at end of file +[main function and command-line arguments](main-function-command-line-args.md) diff --git a/docs/cpp/ptr32-ptr64.md b/docs/cpp/ptr32-ptr64.md index bc9dca89ce..47a9d4c418 100644 --- a/docs/cpp/ptr32-ptr64.md +++ b/docs/cpp/ptr32-ptr64.md @@ -59,4 +59,4 @@ int main() ## See also -[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/raising-software-exceptions.md b/docs/cpp/raising-software-exceptions.md index a429e8a5b0..f9f0ad69ad 100644 --- a/docs/cpp/raising-software-exceptions.md +++ b/docs/cpp/raising-software-exceptions.md @@ -1,10 +1,10 @@ --- -title: "Raising Software Exceptions" +title: "Raising software exceptions" ms.date: "11/04/2016" helpviewer_keywords: ["run-time errors, treating as exceptions", "exception handling [C++], errors as exceptions", "exceptions [C++], flagging errors as exceptions", "errors [C++], treating as exceptions", "exception handling [C++], detecting errors", "structured exception handling [C++], errors as exceptions", "exceptions [C++], software", "RaiseException function", "software exceptions [C++]", "formats [C++], exception codes"] ms.assetid: be1376c3-c46a-4f52-ad1d-c2362840746a --- -# Raising Software Exceptions +# Raising software exceptions Some of the most common sources of program errors are not flagged as exceptions by the system. For example, if you attempt to allocate a memory block but there is insufficient memory, the run-time or API function does not raise an exception but returns an error code. @@ -57,5 +57,5 @@ __except (GetExceptionCode() == STATUS_INSUFFICIENT_MEM || ## See also -[Writing an Exception Handler](../cpp/writing-an-exception-handler.md)
-[Structured Exception Handling (C/C++)](../cpp/structured-exception-handling-c-cpp.md) \ No newline at end of file +[Writing an exception handler](../cpp/writing-an-exception-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/raw-pointers.md b/docs/cpp/raw-pointers.md new file mode 100644 index 0000000000..49fbdcb96f --- /dev/null +++ b/docs/cpp/raw-pointers.md @@ -0,0 +1,344 @@ +--- +title: "Raw pointers (C++)" +description: "How to use raw pointers in C++" +ms.date: "11/19/2019" +helpviewer_keywords: ["pointers [C++]"] +--- + +# Raw pointers (C++) + +A pointer is a type of variable that stores the address of an object in memory and is used to access that object. A *raw pointer* is a pointer whose lifetime is not controlled by an encapsulating object such as a [smart pointer](smart-pointers-modern-cpp.md). A raw pointer can be assigned the address of another non-pointer variable, or it can be assigned a value of [nullptr](nullptr.md). A pointer that has not been assigned a value contains random data. + +A pointer can also be *dereferenced* to retrieve the value of the object that it points at. The *member access operator* provides access to an object's members. + +```cpp + int* p = nullptr; // declare pointer and initialize it + // so that it doesn't store a random address + int i = 5; + p = &i; // assign pointer to address of object + int j = *p; // dereference p to retrieve the value at its address + +``` + +A pointer can point to a typed object or to **void**. When a program allocates a new object on the [heap](https://wikipedia.org/wiki/Heap) in memory, it receives the address of that object in the form of a pointer. Such pointers are called *owning pointers*; an owning pointer (or a copy of it) must be used to explicitly delete the heap-allocated object when it is no longer needed. Failure to delete the memory results in a *memory leak* and renders that memory location unavailable to any other program on the machine. For more information, see [new and delete operators](new-and-delete-operators.md). + +```cpp + + MyClass* mc = new MyClass(); // allocate object on the heap + mc->print(); // access class member + delete mc; // delete object (please don't forget!) +``` + +A pointer (if it isn't declared as **const**) can be incremented or decremented so that it points to a new location in memory. This is called *pointer arithmetic* and is used in C-style programming to iterate over elements in arrays or other data structures. A **const** pointer can't be made to point to a different memory location, and in that sense is very similar to a [reference](references-cpp.md). For more information, see [const and volatile pointers](const-and-volatile-pointers.md). + +```cpp + // declare a C-style string. Compiler adds terminating '\0'. + const char* str = "Hello world"; + + const int c = 1; + const int* pconst = &c; // declare a non-const pointer to const int + const int c2 = 2; + pconst = &c2; // OK pconst itself isn't const + const int* const pconst2 = &c; + // pconst2 = &c2; // Error! pconst2 is const. +``` + +On 64-bit operating systems, a pointer has a size of 64 bits; a system's pointer size determines how much addressable memory it can have. All copies of a pointer point to the same memory location. Pointers (along with references) are used extensively in C++ to pass larger objects to and from functions because it is usually far more efficient to copy an object's 64-bit address than to copy an entire object. When defining a function, specify pointer parameters as **const** unless you intend for the function to modify the object. In general, **const** references are the preferred way to pass objects to functions unless the value of the object can possibly be **nullptr**. + +[Pointers to functions](#pointers_to_functions) enable functions to be passed to other functions and are used for "callbacks" in C-style programming. Modern C++ uses [lambda expressions](lambda-expressions-in-cpp.md) for this purpose. + +## Initialization and member access + +The following example shows how to declare a raw pointer and initialize it with an object allocated on the heap, and then how to use it. It also shows a few of the dangers associated with raw pointers. (Remember, this is C-style programming and not modern C++!) + +```cpp +#include +#include + +class MyClass +{ +public: + int num; + std::string name; + void print() { std::cout << name << ":" << num << std::endl; } +}; + +// Accepts a MyClass pointer +void func_A(MyClass* mc) +{ + // Modify the object that mc points to. + // All copies of the pointer will point to + // the same modified object. + mc->num = 3; +} + +// Accepts a MyClass object +void func_B(MyClass mc) +{ + // mc here is a regular object, not a pointer. + // Use the "." operator to access members. + // This statement modifies only the local copy of mc. + mc.num = 21; + std::cout << "Local copy of mc:"; + mc.print(); // "Erika, 21" +} + + +int main() +{ + // Use the * operator to declare a pointer type + // Use new to allocate and initialize memory + MyClass* pmc = new MyClass{ 108, "Nick" }; + + // Prints the memory address. Usually not what you want. + std:: cout << pmc << std::endl; + + // Copy the pointed-to object by dereferencing the pointer + // to access the contents of the memory location. + // mc is a separate object, allocated here on the stack + MyClass mc = *pmc; + + // Declare a pointer that points to mc using the addressof operator + MyClass* pcopy = &mc; + + // Use the -> operator to access the object's public members + pmc->print(); // "Nick, 108" + + // Copy the pointer. Now pmc and pmc2 point to same object! + MyClass* pmc2 = pmc; + + // Use copied pointer to modify the original object + pmc2->name = "Erika"; + pmc->print(); // "Erika, 108" + pmc2->print(); // "Erika, 108" + + // Pass the pointer to a function. + func_A(mc); + pmc->print(); // "Erika, 3" + pmc2->print(); // "Erika, 3" + + // Dereference the pointer and pass a copy + // of the pointed-to object to a function + func_B(*mc); + pmc->print(); // "Erika, 3" (original not modified by function) + + delete(pmc); // don't forget to give memory back to operating system! + // delete(pmc2); //crash! memory location was already deleted +} +``` + +## Pointer arithmetic and arrays + +Pointers and arrays are closely related. When an array is passed by-value to a function, it is passed as a pointer to the first element. The following example demonstrates the following important properties of pointers and arrays: + +- the `sizeof` operator returns the total size in bytes of an array +- to determine the number of elements, divide total bytes by the size of one element +- when an array is passed to a function, it *decays* to a pointer type +- the `sizeof` operator when applied to a pointer returns the pointer size, 4 bytes on x86 or 8 bytes on x64 + +```cpp +#include + +void func(int arr[], int length) +{ + // returns pointer size. not useful here. + size_t test = sizeof(arr); + + for(int i = 0; i < length; ++i) + { + std::cout << arr[i] << " "; + } +} + +int main() +{ + + int i[5]{ 1,2,3,4,5 }; + // sizeof(i) = total bytes + int j = sizeof(i) / sizeof(i[0]); + func(i,j); +} +``` + +Certain arithmetic operations can be performed on non-const pointers to make them point to a new memory location. A pointer can be incremented and decremented using the **++**, **+=**, **-=** and **--** operators. This technique can be used in arrays and is especially useful in buffers of untyped data. A **void\*** increments by the size of a **char** (1 byte). A typed pointer increments by size of the type it points to. + +The following example demonstrates how pointer arithmetic can be used to access individual pixels in a bitmap on Windows. Note the use of **new** and **delete**, and the dereference operator. + +```cpp +#include +#include + +using namespace std; + +int main() +{ + + BITMAPINFOHEADER header; + header.biHeight = 100; // Multiple of 4 for simplicity. + header.biWidth = 100; + header.biBitCount = 24; + header.biPlanes = 1; + header.biCompression = BI_RGB; + header.biSize = sizeof(BITMAPINFOHEADER); + + constexpr int bufferSize = 30000; + unsigned char* buffer = new unsigned char[bufferSize]; + + BITMAPFILEHEADER bf; + bf.bfType = 0x4D42; + bf.bfSize = header.biSize + 14 + bufferSize; + bf.bfReserved1 = 0; + bf.bfReserved2 = 0; + bf.bfOffBits = sizeof(BITMAPFILEHEADER) + sizeof(BITMAPINFOHEADER); //54 + + // Create a gray square with a 2-pixel wide outline. + unsigned char* begin = &buffer[0]; + unsigned char* end = &buffer[0] + bufferSize; + unsigned char* p = begin; + constexpr int pixelWidth = 3; + constexpr int borderWidth = 2; + + while (p < end) + { + // Is top or bottom edge? + if ((p < begin + header.biWidth * pixelWidth * borderWidth) + || (p > end - header.biWidth * pixelWidth * borderWidth) + // Is left or right edge? + || (p - begin) % (header.biWidth * pixelWidth) < (borderWidth * pixelWidth) + || (p - begin) % (header.biWidth * pixelWidth) > ((header.biWidth - borderWidth) * pixelWidth)) + { + *p = 0x0; // Black + } + else + { + *p = 0xC3; // Gray + } + p++; // Increment one byte sizeof(unsigned char). + } + + ofstream wf(R"(box.bmp)", ios::out | ios::binary); + + wf.write(reinterpret_cast(&bf), sizeof(bf)); + wf.write(reinterpret_cast(&header), sizeof(header)); + wf.write(reinterpret_cast(begin), bufferSize); + + delete[] buffer; // Return memory to the OS. + wf.close(); +} +``` + +## void* pointers + +A pointer to **void** simply points to a raw memory location. Sometimes it is necessary to use **void\*** pointers, for example when passing between C++ code and C functions. + +When a typed pointer is cast to a void pointer, the contents of the memory location are not changed, but the type information is lost, so that you can't perform increment or decrement operations. A memory location can be cast, for example, from MyClass* to void* and back again to MyClass*. Such operations are inherently error-prone and require great care to avoid errors. Modern C++ discourages the use of void pointers unless absolutely necessary. + +```cpp + +//func.c +void func(void* data, int length) +{ + char* c = (char*)(data); + + // fill in the buffer with data + for (int i = 0; i < length; ++i) + { + *c = 0x41; + ++c; + } +} + +// main.cpp +#include + +extern "C" +{ + void func(void* data, int length); +} + +class MyClass +{ +public: + int num; + std::string name; + void print() { std::cout << name << ":" << num << std::endl; } +}; + +int main() +{ + MyClass* mc = new MyClass{10, "Marian"}; + void* p = static_cast(mc); + MyClass* mc2 = static_cast(p); + std::cout << mc2->name << std::endl; // "Marian" + + // use operator new to allocate untyped memory block + void* pvoid = operator new(1000); + for(char* c = static_cast(pvoid); pvoid < &pvoid + 1000; ++c) + { + *c = 0x00; + } + func(pvoid, 1000); + char ch = static_cast(pvoid)[0]; + std::cout << ch << std::endl; // 'A' + operator delete(p); +} +``` + +## Pointers to functions + +In C-style programming, function pointers are used primarily to pass functions to other functions. In this scenario, the caller can customize the behavior of a function without modifying it. In modern C++, [lambda expressions](lambda-expressions-in-cpp.md) provide the same capability with greater type safety and other advantages. + +A function pointer declaration specifies the signature that the pointed-to function must have: + +```cpp +// Declare pointer to any function that... + +// ...accepts a string and returns a string +string (*g)(string a); + +// has no return value and no parameters +void (*x)(); + +// ...returns an int and takes three parameters +// of the specified types +int (*i)(int i, string s, double d); +``` + +The following example shows a function `combine` that takes as a parameter any function that accepts a `std::string` and returns a `std::string`. Depending on the function that is passed to `combine` it will either prepend or append a string. + +```cpp +#include +#include + +using namespace std; + +string base {"hello world"}; + +string append(string s) +{ + return base.append(" ").append(s); +} + +string prepend(string s) +{ + return s.append(" ").append(base); +} + +string combine(string s, string(*g)(string a)) +{ + return (*g)(s); +} + +int main() +{ + cout << combine("from MSVC", append) << "\n"; + cout << combine("Good morning and", prepend) << "\n"; +} +``` + +## See also + +[Smart pointers](smart-pointers-modern-cpp.md) +[Indirection Operator: *](indirection-operator-star.md)
+[Address-of Operator: &](address-of-operator-amp.md)
+[Welcome back to C++](welcome-back-to-cpp-modern-cpp.md) diff --git a/docs/cpp/references-cpp.md b/docs/cpp/references-cpp.md index a39ae19e4a..c3e119f935 100644 --- a/docs/cpp/references-cpp.md +++ b/docs/cpp/references-cpp.md @@ -28,7 +28,7 @@ References are declared using the following sequence: 1. The declarator: - - An optional Microsoft specific modifier. For more information, see [Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md). + - An optional Microsoft-specific modifier. For more information, see [Microsoft-Specific Modifiers](../cpp/microsoft-specific-modifiers.md). - The **&** operator or **&&** operator. diff --git a/docs/cpp/resolving-ambiguous-declarations-cpp.md b/docs/cpp/resolving-ambiguous-declarations-cpp.md deleted file mode 100644 index 16fcc90593..0000000000 --- a/docs/cpp/resolving-ambiguous-declarations-cpp.md +++ /dev/null @@ -1,28 +0,0 @@ ---- -title: "Resolving ambiguous declarations (C++)" -ms.date: "11/04/2016" -ms.assetid: 3d773ee7-bbea-47de-80c2-cb0a9d4ec0b9 ---- -# Resolving ambiguous declarations (C++) - -To perform explicit conversions from one type to another, you must use casts, specifying the desired type name. Some type casts result in syntactic ambiguity. The following function-style type cast is ambiguous: - -```cpp -char *aName( String( s ) ); -``` - -It is unclear whether it is a function declaration or an object declaration with a function-style cast as the initializer: It could declare a function returning type `char *` that takes one argument of type `String`, or it could declare the object `aName` and initialize it with the value of `s` cast to type `String`. - -If a declaration can be considered a valid function declaration, it is treated as such. Only if it cannot possibly be a function declaration — that is, if it would be syntactically incorrect — is a statement examined to see if it is a function-style type cast. Therefore, the compiler considers the statement to be a declaration of a function and ignores the parentheses around the identifier `s`. On the other hand, the statements: - -```cpp -char *aName( (String)s ); -``` - -and - -```cpp -char *aName = String( s ); -``` - -are clearly declarations of objects, and a user-defined conversion from type `String` to type `char *` is invoked to perform the initialization of `aName`. \ No newline at end of file diff --git a/docs/cpp/restrictions-on-exception-handlers.md b/docs/cpp/restrictions-on-exception-handlers.md index 6c3f3aaefb..c1b6922339 100644 --- a/docs/cpp/restrictions-on-exception-handlers.md +++ b/docs/cpp/restrictions-on-exception-handlers.md @@ -1,10 +1,10 @@ --- -title: "Restrictions on Exception Handlers" +title: "Restrictions on exception handlers" ms.date: "11/04/2016" helpviewer_keywords: ["restrictions, exception handlers", "exception handling [C++], exception handlers"] ms.assetid: 31d63524-0e8c-419f-b87c-061f4c0ea470 --- -# Restrictions on Exception Handlers +# Restrictions on exception handlers The principal limitation to using exception handlers in code is that you cannot use a **goto** statement to jump into a **__try** statement block. Instead, you must enter the statement block through normal flow of control. You can jump out of a **__try** statement block and nest exception handlers as you choose. diff --git a/docs/cpp/restrictions-on-termination-handlers.md b/docs/cpp/restrictions-on-termination-handlers.md index 3debab7b12..29de53a414 100644 --- a/docs/cpp/restrictions-on-termination-handlers.md +++ b/docs/cpp/restrictions-on-termination-handlers.md @@ -14,5 +14,5 @@ A **return** statement inside a **__finally** statement block presents roughly t ## 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/return-statement-in-program-termination-cpp.md b/docs/cpp/return-statement-in-program-termination-cpp.md deleted file mode 100644 index 1795bae75c..0000000000 --- a/docs/cpp/return-statement-in-program-termination-cpp.md +++ /dev/null @@ -1,25 +0,0 @@ ---- -title: "return Statement in Program Termination (C++)" -ms.date: "11/04/2016" -helpviewer_keywords: ["data types [C++], function return types", "function return types [C++], return statement", "return keyword [C++], syntax"] -ms.assetid: 66d002ab-5625-4b68-8446-71e1b8fcdbd8 ---- -# return Statement in Program Termination (C++) - -Issuing a **return** statement from `main` is functionally equivalent to calling the `exit` function. Consider the following example: - -```cpp -// return_statement.cpp -#include -int main() -{ - exit( 3 ); - return 3; -} -``` - -The `exit` and **return** statements in the preceding example are functionally identical. However, C++ requires that functions that have return types other than **void** return a value. The **return** statement allows you to return a value from `main`. - -## See also - -[Program Termination](../cpp/program-termination.md) \ No newline at end of file diff --git a/docs/cpp/rules-and-limitations-for-naked-functions.md b/docs/cpp/rules-and-limitations-for-naked-functions.md index b01a8334dd..93c1420556 100644 --- a/docs/cpp/rules-and-limitations-for-naked-functions.md +++ b/docs/cpp/rules-and-limitations-for-naked-functions.md @@ -6,7 +6,7 @@ ms.assetid: ff203858-2dd3-4a76-8a57-d0d06817adef --- # Rules and Limitations for Naked Functions -## Microsoft Specific +**Microsoft Specific** The following rules and limitations apply to naked functions: diff --git a/docs/cpp/semantics-of-expressions.md b/docs/cpp/semantics-of-expressions.md index d8e0eb6f90..7c52f82bf8 100644 --- a/docs/cpp/semantics-of-expressions.md +++ b/docs/cpp/semantics-of-expressions.md @@ -78,7 +78,7 @@ func( i, ++i ); The C++ language does not guarantee the order in which arguments to a function call are evaluated. Therefore, in the preceding example, `func` could receive the values 7 and 8, or 8 and 8 for its parameters, depending on whether the parameters are evaluated from left to right or from right to left. -## C++ sequence points (Microsoft Specific) +## C++ sequence points (Microsoft-specific) An expression can modify an object's value only once between consecutive "sequence points." diff --git a/docs/cpp/set-com-error-handler.md b/docs/cpp/set-com-error-handler.md index 8150d02bfe..34220ddff4 100644 --- a/docs/cpp/set-com-error-handler.md +++ b/docs/cpp/set-com-error-handler.md @@ -6,9 +6,7 @@ ms.assetid: 49fe4fca-5e37-4d83-abaf-15be5ce37f94 --- # _set_com_error_handler -**Microsoft Specific** - -Replaces the default function that is used for COM error-handling. +Replaces the default function that is used for COM error-handling. **_set_com_error_handler** is Microsoft-specific. ## Syntax diff --git a/docs/cpp/smart-pointers-modern-cpp.md b/docs/cpp/smart-pointers-modern-cpp.md index d4bc8513fe..837c315a42 100644 --- a/docs/cpp/smart-pointers-modern-cpp.md +++ b/docs/cpp/smart-pointers-modern-cpp.md @@ -1,22 +1,22 @@ --- -title: "Smart Pointers (Modern C++)" -ms.date: "11/04/2016" +title: "Smart pointers (Modern C++)" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: 909ef870-904c-49b6-b8cd-e9d0b7dc9435 --- -# Smart Pointers (Modern C++) +# Smart pointers (Modern C++) In modern C++ programming, the Standard Library includes *smart pointers*, which are used to help ensure that programs are free of memory and resource leaks and are exception-safe. ## Uses for smart pointers -Smart pointers are defined in the `std` namespace in the [\](../standard-library/memory.md) header file. They are crucial to the [RAII](../cpp/objects-own-resources-raii.md) or *Resource Acquisition Is Initialization* programming idiom. The main goal of this idiom is to ensure that resource acquisition occurs at the same time that the object is initialized, so that all resources for the object are created and made ready in one line of code. In practical terms, the main principle of RAII is to give ownership of any heap-allocated resource—for example, dynamically-allocated memory or system object handles—to a stack-allocated object whose destructor contains the code to delete or free the resource and also any associated cleanup code. +Smart pointers are defined in the `std` namespace in the [\](../standard-library/memory.md) header file. They are crucial to the [RAII](objects-own-resources-raii.md) or *Resource Acquisition Is Initialization* programming idiom. The main goal of this idiom is to ensure that resource acquisition occurs at the same time that the object is initialized, so that all resources for the object are created and made ready in one line of code. In practical terms, the main principle of RAII is to give ownership of any heap-allocated resource—for example, dynamically-allocated memory or system object handles—to a stack-allocated object whose destructor contains the code to delete or free the resource and also any associated cleanup code. In most cases, when you initialize a raw pointer or resource handle to point to an actual resource, pass the pointer to a smart pointer immediately. In modern C++, raw pointers are only used in small code blocks of limited scope, loops, or helper functions where performance is critical and there is no chance of confusion about ownership. The following example compares a raw pointer declaration to a smart pointer declaration. -[!code-cpp[smart_pointers_intro#1](../cpp/codesnippet/CPP/smart-pointers-modern-cpp_1.cpp)] +[!code-cpp[smart_pointers_intro#1](codesnippet/CPP/smart-pointers-modern-cpp_1.cpp)] As shown in the example, a smart pointer is a class template that you declare on the stack, and initialize by using a raw pointer that points to a heap-allocated object. After the smart pointer is initialized, it owns the raw pointer. This means that the smart pointer is responsible for deleting the memory that the raw pointer specifies. The smart pointer destructor contains the call to delete, and because the smart pointer is declared on the stack, its destructor is invoked when the smart pointer goes out of scope, even if an exception is thrown somewhere further up the stack. @@ -29,7 +29,7 @@ The C++ smart pointer idiom resembles object creation in languages such as C#: y The following example shows how a `unique_ptr` smart pointer type from the C++ Standard Library could be used to encapsulate a pointer to a large object. -[!code-cpp[smart_pointers_intro#2](../cpp/codesnippet/CPP/smart-pointers-modern-cpp_2.cpp)] +[!code-cpp[smart_pointers_intro#2](codesnippet/CPP/smart-pointers-modern-cpp_2.cpp)] The example demonstrates the following essential steps for using smart pointers. @@ -45,40 +45,40 @@ The example demonstrates the following essential steps for using smart pointers. Smart pointers are designed to be as efficient as possible both in terms of memory and performance. For example, the only data member in `unique_ptr` is the encapsulated pointer. This means that `unique_ptr` is exactly the same size as that pointer, either four bytes or eight bytes. Accessing the encapsulated pointer by using the smart pointer overloaded * and -> operators is not significantly slower than accessing the raw pointers directly. -Smart pointers have their own member functions, which are accessed by using “dot” notation. For example, some C++ Standard Library smart pointers have a reset member function that releases ownership of the pointer. This is useful when you want to free the memory owned by the smart pointer before the smart pointer goes out of scope, as shown in the following example. +Smart pointers have their own member functions, which are accessed by using "dot" notation. For example, some C++ Standard Library smart pointers have a reset member function that releases ownership of the pointer. This is useful when you want to free the memory owned by the smart pointer before the smart pointer goes out of scope, as shown in the following example. -[!code-cpp[smart_pointers_intro#3](../cpp/codesnippet/CPP/smart-pointers-modern-cpp_3.cpp)] +[!code-cpp[smart_pointers_intro#3](codesnippet/CPP/smart-pointers-modern-cpp_3.cpp)] Smart pointers usually provide a way to access their raw pointer directly. C++ Standard Library smart pointers have a `get` member function for this purpose, and `CComPtr` has a public `p` class member. By providing direct access to the underlying pointer, you can use the smart pointer to manage memory in your own code and still pass the raw pointer to code that does not support smart pointers. -[!code-cpp[smart_pointers_intro#4](../cpp/codesnippet/CPP/smart-pointers-modern-cpp_4.cpp)] +[!code-cpp[smart_pointers_intro#4](codesnippet/CPP/smart-pointers-modern-cpp_4.cpp)] -## Kinds of Smart Pointers +## Kinds of smart pointers The following section summarizes the different kinds of smart pointers that are available in the Windows programming environment and describes when to use them. -### C++ Standard Library Smart Pointers +### C++ Standard Library smart pointers Use these smart pointers as a first choice for encapsulating pointers to plain old C++ objects (POCO). - `unique_ptr`
- Allows exactly one owner of the underlying pointer. Use as the default choice for POCO unless you know for certain that you require a `shared_ptr`. Can be moved to a new owner, but not copied or shared. Replaces `auto_ptr`, which is deprecated. Compare to `boost::scoped_ptr`. `unique_ptr` is small and efficient; the size is one pointer and it supports rvalue references for fast insertion and retrieval from C++ Standard Library collections. Header file: ``. For more information, see [How to: Create and Use unique_ptr Instances](../cpp/how-to-create-and-use-unique-ptr-instances.md) and [unique_ptr Class](../standard-library/unique-ptr-class.md). + Allows exactly one owner of the underlying pointer. Use as the default choice for POCO unless you know for certain that you require a `shared_ptr`. Can be moved to a new owner, but not copied or shared. Replaces `auto_ptr`, which is deprecated. Compare to `boost::scoped_ptr`. `unique_ptr` is small and efficient; the size is one pointer and it supports rvalue references for fast insertion and retrieval from C++ Standard Library collections. Header file: ``. For more information, see [How to: Create and Use unique_ptr Instances](how-to-create-and-use-unique-ptr-instances.md) and [unique_ptr Class](../standard-library/unique-ptr-class.md). - `shared_ptr`
- Reference-counted smart pointer. Use when you want to assign one raw pointer to multiple owners, for example, when you return a copy of a pointer from a container but want to keep the original. The raw pointer is not deleted until all `shared_ptr` owners have gone out of scope or have otherwise given up ownership. The size is two pointers; one for the object and one for the shared control block that contains the reference count. Header file: ``. For more information, see [How to: Create and Use shared_ptr Instances](../cpp/how-to-create-and-use-shared-ptr-instances.md) and [shared_ptr Class](../standard-library/shared-ptr-class.md). + Reference-counted smart pointer. Use when you want to assign one raw pointer to multiple owners, for example, when you return a copy of a pointer from a container but want to keep the original. The raw pointer is not deleted until all `shared_ptr` owners have gone out of scope or have otherwise given up ownership. The size is two pointers; one for the object and one for the shared control block that contains the reference count. Header file: ``. For more information, see [How to: Create and Use shared_ptr Instances](how-to-create-and-use-shared-ptr-instances.md) and [shared_ptr Class](../standard-library/shared-ptr-class.md). - `weak_ptr`
- Special-case smart pointer for use in conjunction with `shared_ptr`. A `weak_ptr` provides access to an object that is owned by one or more `shared_ptr` instances, but does not participate in reference counting. Use when you want to observe an object, but do not require it to remain alive. Required in some cases to break circular references between `shared_ptr` instances. Header file: ``. For more information, see [How to: Create and Use weak_ptr Instances](../cpp/how-to-create-and-use-weak-ptr-instances.md) and [weak_ptr Class](../standard-library/weak-ptr-class.md). + Special-case smart pointer for use in conjunction with `shared_ptr`. A `weak_ptr` provides access to an object that is owned by one or more `shared_ptr` instances, but does not participate in reference counting. Use when you want to observe an object, but do not require it to remain alive. Required in some cases to break circular references between `shared_ptr` instances. Header file: ``. For more information, see [How to: Create and Use weak_ptr Instances](how-to-create-and-use-weak-ptr-instances.md) and [weak_ptr Class](../standard-library/weak-ptr-class.md). -### Smart Pointers for COM Objects (Classic Windows Programming) +### Smart pointers for COM objects (classic Windows programming) When you work with COM objects, wrap the interface pointers in an appropriate smart pointer type. The Active Template Library (ATL) defines several smart pointers for various purposes. You can also use the `_com_ptr_t` smart pointer type, which the compiler uses when it creates wrapper classes from .tlb files. It's the best choice when you do not want to include the ATL header files. [CComPtr Class](../atl/reference/ccomptr-class.md)
-Use this unless you cannot use ATL. Performs reference counting by using the `AddRef` and `Release` methods. For more information, see [How to: Create and Use CComPtr and CComQIPtr Instances](../cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). +Use this unless you cannot use ATL. Performs reference counting by using the `AddRef` and `Release` methods. For more information, see [How to: Create and Use CComPtr and CComQIPtr Instances](how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). [CComQIPtr Class](../atl/reference/ccomqiptr-class.md)
-Resembles `CComPtr` but also provides simplified syntax for calling `QueryInterface` on COM objects. For more information, see [How to: Create and Use CComPtr and CComQIPtr Instances](../cpp/how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). +Resembles `CComPtr` but also provides simplified syntax for calling `QueryInterface` on COM objects. For more information, see [How to: Create and Use CComPtr and CComQIPtr Instances](how-to-create-and-use-ccomptr-and-ccomqiptr-instances.md). [CComHeapPtr Class](../atl/reference/ccomheapptr-class.md)
Smart pointer to objects that use `CoTaskMemFree` to free memory. @@ -86,12 +86,12 @@ Smart pointer to objects that use `CoTaskMemFree` to free memory. [CComGITPtr Class](../atl/reference/ccomgitptr-class.md)
Smart pointer for interfaces that are obtained from the global interface table (GIT). -[_com_ptr_t Class](../cpp/com-ptr-t-class.md)
+[_com_ptr_t Class](com-ptr-t-class.md)
Resembles `CComQIPtr` in functionality but does not depend on ATL headers. -### ATL Smart Pointers for POCO Objects +### ATL smart pointers for POCO objects -In addition to smart pointers for COM objects, ATL also defines smart pointers, and collections of smart pointers, for plain old C++ objects. In classic Windows programming, these types are useful alternatives to the C++ Standard Library collections, especially when code portability is not required or when you do not want to mix the programming models of the C++ Standard Library and ATL. +In addition to smart pointers for COM objects, ATL also defines smart pointers, and collections of smart pointers, for plain old C++ objects (POCO). In classic Windows programming, these types are useful alternatives to the C++ Standard Library collections, especially when code portability is not required or when you do not want to mix the programming models of the C++ Standard Library and ATL. [CAutoPtr Class](../atl/reference/cautoptr-class.md)
Smart pointer that enforces unique ownership by transferring ownership on copy. Comparable to the deprecated `std::auto_ptr` Class. @@ -110,6 +110,6 @@ Class that encapsulates methods for manipulating a list of `CAutoPtr` nodes. ## See also -[Welcome Back to C++ (Modern C++)](../cpp/welcome-back-to-cpp-modern-cpp.md)
+[Pointers](pointers-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/specifiers.md b/docs/cpp/specifiers.md deleted file mode 100644 index 536fad8440..0000000000 --- a/docs/cpp/specifiers.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "Specifiers" -ms.date: "11/04/2016" -helpviewer_keywords: ["declaration specifiers", "declarations, specifiers", "specifiers, in declarations"] -ms.assetid: 8b14e844-9880-4571-8779-28c8efe44633 ---- -# Specifiers - -This topic describes the *decl-specifiers* (declaration specifiers) component of a [declaration](declarations-and-definitions-cpp.md). - -The following placeholders and language keywords are declaration specifiers: - -*storage-class-specifier* - -*type-specifier* - -*function-specifier* - -[friend](friend-cpp.md) - -[typedef](aliases-and-typedefs-cpp.md) `(` *extended-decl-modifier-seq* `)` - -[__declspec](declspec.md) `(` *extended-decl-modifier-seq* `)` - -## Remarks - -The *decl-specifiers* part of a declaration is the longest sequence of *decl-specifiers* that can be taken to mean a type name, not including the pointer or reference modifiers. The remainder of the declaration is the *declarator*, which includes the name introduced. - -The following table lists four declarations, and then lists each declaration's *decl-specifers* and *declarator* component separately. - -|Declaration|*decl-specifiers*|`declarator`| -|-----------------|------------------------|------------------| -|`char *lpszAppName;`|**char**|`*lpszAppName`| -|`typedef char * LPSTR;`|**char**|`*LPSTR`| -|`const int func1();`|**const int**|`func1`| -|`volatile void *pvvObj;`|**volatile void**|`*pvvObj`| - -Because **signed**, **unsigned**, **long**, and **short** all imply **int**, a **typedef** name following one of these keywords is taken to be a member of *declarator-list,* not of *decl-specifiers*. - -> [!NOTE] -> Because a name can be redeclared, its interpretation is subject to the most recent declaration in the current scope. Redeclaration can affect how names are interpreted by the compiler, especially **typedef** names. - -## See also - -[Declarations and Definitions](declarations-and-definitions-cpp.md) diff --git a/docs/cpp/spectre.md b/docs/cpp/spectre.md index cc8edaca57..cbe4c2af96 100644 --- a/docs/cpp/spectre.md +++ b/docs/cpp/spectre.md @@ -1,6 +1,6 @@ --- title: "spectre" -ms.date: "1/23/2018" +ms.date: "01/23/2018" f1_keywords: ["spectre_cpp", "spectre", "nomitigation"] helpviewer_keywords: ["__declspec keyword (C++), spectre", "spectre __declspec keyword"] --- @@ -16,7 +16,7 @@ Tells the compiler not to insert Spectre variant 1 speculative execution barrier ## Remarks -The [/Qspectre](../build/reference/qspectre.md) compiler option causes the compiler to insert speculative execution barrier instructions where analysis indicates that a Spectre variant 1 security vulnerability exists. The specific instructions emitted depend on the processor. While these instructions should have a minimal impact on code size or performance, there may be cases where your code is not affected by the vulnerability, and requires maximum performance. +The [/Qspectre](../build/reference/qspectre.md) compiler option causes the compiler to insert speculative execution barrier instructions. They're inserted where analysis indicates that a Spectre variant 1 security vulnerability exists. The specific instructions emitted depend on the processor. While these instructions should have a minimal impact on code size or performance, there may be cases where your code is not affected by the vulnerability, and requires maximum performance. Expert analysis might determine that a function is safe from a Spectre variant 1 bounds check bypass defect. In that case, you can suppress the generation of mitigation code within a function by applying `__declspec(spectre(nomitigation))` to the function declaration. diff --git a/docs/cpp/standard-conversions.md b/docs/cpp/standard-conversions.md index 6123493285..c7722c650b 100644 --- a/docs/cpp/standard-conversions.md +++ b/docs/cpp/standard-conversions.md @@ -1,10 +1,10 @@ --- -title: "Standard Conversions" -ms.date: "11/19/2018" +title: "Standard conversions" +ms.date: "10/02/2019" helpviewer_keywords: ["standard conversions, categories of", "L-values [C++]", "conversions, standard"] ms.assetid: ce7ac8d3-5c99-4674-8229-0672de05528d --- -# Standard Conversions +# Standard conversions The C++ language defines conversions between its fundamental types. It also defines conversions for pointer, reference, and pointer-to-member derived types. These conversions are called *standard conversions*. @@ -26,8 +26,8 @@ This section discusses the following standard conversions: - Pointer-to-member conversions - > [!NOTE] - > User-defined types can specify their own conversions. Conversion of user-defined types is covered in [Constructors](../cpp/constructors-cpp.md) and [Conversions](../cpp/user-defined-type-conversions-cpp.md). + > [!NOTE] + > User-defined types can specify their own conversions. Conversion of user-defined types is covered in [Constructors](../cpp/constructors-cpp.md) and [Conversions](../cpp/user-defined-type-conversions-cpp.md). The following code causes conversions (in this example, integral promotions): @@ -42,11 +42,11 @@ long_num1 = int_num; long_num2 = int_num * long_num2; ``` -The result of a conversion is an l-value only if it produces a reference type. For example, a user-defined conversion declared as `operator int&()` returns a reference and is an l-value. However, a conversion declared as `operator int()`returns an object and is not an l-value. +The result of a conversion is an l-value only if it produces a reference type. For example, a user-defined conversion declared as `operator int&()` returns a reference and is an l-value. However, a conversion declared as `operator int()` returns an object and isn't an l-value. ## Integral promotions -Objects of an integral type can be converted to another wider integral type (that is, a type that can represent a larger set of values). This widening type of conversion is called "integral promotion." With integral promotion, you can use the following in an expression wherever another integral type can be used: +Objects of an integral type can be converted to another wider integral type, that is, a type that can represent a larger set of values. This widening type of conversion is called *integral promotion*. With integral promotion, you can use the following types in an expression wherever another integral type can be used: - Objects, literals, and constants of type **char** and **short int** @@ -56,27 +56,27 @@ Objects of an integral type can be converted to another wider integral type (tha - Enumerators -C++ promotions are "value-preserving." That is, the value after the promotion is guaranteed to be the same as the value before the promotion. In value-preserving promotions, objects of shorter integral types (such as bit fields or objects of type **char**) are promoted to type **int** if **int** can represent the full range of the original type. If **int** cannot represent the full range of values, then the object is promoted to type **unsigned int**. Although this strategy is the same as that used by ANSI C, value-preserving conversions do not preserve the "signedness" of the object. +C++ promotions are "value-preserving," as the value after the promotion is guaranteed to be the same as the value before the promotion. In value-preserving promotions, objects of shorter integral types (such as bit fields or objects of type **char**) are promoted to type **int** if **int** can represent the full range of the original type. If **int** can't represent the full range of values, then the object is promoted to type **unsigned int**. Although this strategy is the same as the one used by Standard C, value-preserving conversions don't preserve the "signedness" of the object. -Value-preserving promotions and promotions that preserve signedness normally produce the same results. However, they can produce different results if the promoted object is one of the following: +Value-preserving promotions and promotions that preserve signedness normally produce the same results. However, they can produce different results if the promoted object appears as: -- An operand of **/**, `%`, `/=`, `%=`, **<**, **\<=**, **>**, or **>=** +- An operand of `/`, `%`, `/=`, `%=`, `<`, `<=`, `>`, or `>=` - These operators rely on sign for determining the result. Therefore, value-preserving and sign-preserving promotions produce different results when applied to these operands. + These operators rely on sign for determining the result. Value-preserving and sign-preserving promotions produce different results when applied to these operands. -- The left operand of **>>** or **>>=** +- The left operand of `>>` or `>>=` - These operators treat signed and unsigned quantities differently when performing a shift operation. For signed quantities, shifting a quantity right causes the sign bit to be propagated into the vacated bit positions. For unsigned quantities, the vacated bit positions are zero-filled. + These operators treat signed and unsigned quantities differently in a shift operation. For signed quantities, a right shift operation propagates the sign bit into the vacated bit positions, while the vacated bit positions are zero-filled in unsigned quantities. -- An argument to an overloaded function or operand of an overloaded operator that depends on the signedness of the type of that operand for argument matching. (See [Overloaded Operators](../cpp/operator-overloading.md) for more about defining overloaded operators.) +- An argument to an overloaded function, or the operand of an overloaded operator, that depends on the signedness of the operand type for argument matching. For more information about defining overloaded operators, see [Overloaded operators](../cpp/operator-overloading.md). ## Integral conversions -Integral conversions are performed between integral types. The integral types are **char**, **int**, and **long** (and the **short**, **signed**, and **unsigned** versions of these types). +*Integral conversions* are conversions between integral types. The integral types are **char**, **short** (or **short int**), **int**, **long**, and **long long**. These types may be qualified with **signed** or **unsigned**, and **unsigned** can be used as shorthand for **unsigned int**. -**Signed to unsigned** +### Signed to unsigned -Objects of signed integral types can be converted to corresponding unsigned types. When these conversions occur, the actual bit pattern does not change; however, the interpretation of the data changes. Consider this code: +Objects of signed integral types can be converted to corresponding unsigned types. When these conversions occur, the actual bit pattern doesn't change. However, the interpretation of the data changes. Consider this code: ```cpp #include @@ -92,11 +92,11 @@ int main() // Output: 65533 ``` -In the preceding example, a **signed short**, `i`, is defined and initialized to a negative number. The expression `(u = i)` causes `i` to be converted to an **unsigned short** prior to the assignment to `u`. +In the preceding example, a **signed short**, `i`, is defined and initialized to a negative number. The expression `(u = i)` causes `i` to be converted to an **unsigned short** before the assignment to `u`. -**Unsigned to signed** +### Unsigned to signed -Objects of unsigned integral types can be converted to corresponding signed types. However, such a conversion can cause misinterpretation of data if the value of the unsigned object is outside the range representable by the signed type, as demonstrated in the following example: +Objects of unsigned integral types can be converted to corresponding signed types. However, if the unsigned value is outside the representable range of the signed type, the result won't have the correct value, as demonstrated in the following example: ```cpp #include @@ -112,13 +112,13 @@ cout << (i = u) << "\n"; //Output: -3 ``` -In the preceding example, `u` is an **unsigned short** integral object that must be converted to a signed quantity to evaluate the expression `(i = u)`. Because its value cannot be properly represented in a **signed short**, the data is misinterpreted as shown. +In the preceding example, `u` is an **unsigned short** integral object that must be converted to a signed quantity to evaluate the expression `(i = u)`. Because its value can't be properly represented in a **signed short**, the data is misinterpreted as shown. ## Floating point conversions An object of a floating type can be safely converted to a more precise floating type — that is, the conversion causes no loss of significance. For example, conversions from **float** to **double** or from **double** to **long double** are safe, and the value is unchanged. -An object of a floating type can also be converted to a less precise type, if it is in a range representable by that type. (See [Floating Limits](../cpp/floating-limits.md) for the ranges of floating types.) If the original value cannot be represented precisely, it can be converted to either the next higher or the next lower representable value. If no such value exists, the result is undefined. Consider the following example: +An object of a floating type can also be converted to a less precise type, if it's in a range representable by that type. (See [Floating Limits](../cpp/floating-limits.md) for the ranges of floating types.) If the original value isn't representable precisely, it can be converted to either the next higher or the next lower representable value. The result is undefined if no such value exists. Consider the following example: ```cpp cout << (float)1E300 << endl; @@ -128,22 +128,22 @@ The maximum value representable by type **float** is 3.402823466E38 — a much s ## Conversions between integral and floating point types -Certain expressions can cause objects of floating type to be converted to integral types, or vice versa. When an object of integral type is converted to a floating type and the original value cannot be represented exactly, the result is either the next higher or the next lower representable value. +Certain expressions can cause objects of floating type to be converted to integral types, or vice versa. When an object of integral type is converted to a floating type, and the original value isn't representable exactly, the result is either the next higher or the next lower representable value. -When an object of floating type is converted to an integral type, the fractional part is truncated. No rounding takes place in the conversion process. Truncation means that a number like 1.3 is converted to 1, and -1.3 is converted to -1. +When an object of floating type is converted to an integral type, the fractional part is *truncated*, or rounded toward zero. A number like 1.3 is converted to 1, and -1.3 is converted to -1. If the truncated value is higher than the highest representable value, or lower than the lowest representable value, the result is undefined. ## Arithmetic conversions -Many binary operators (discussed in [Expressions with Binary Operators](../cpp/expressions-with-binary-operators.md)) cause conversions of operands and yield results the same way. The way these operators cause conversions is called "usual arithmetic conversions." Arithmetic conversions of operands of different native types are performed as shown in the following table. Typedef types behave according to their underlying native types. +Many binary operators (discussed in [Expressions with binary operators](../cpp/expressions-with-binary-operators.md)) cause conversions of operands, and yield results the same way. The conversions these operators cause are called *usual arithmetic conversions*. Arithmetic conversions of operands that have different native types are done as shown in the following table. Typedef types behave according to their underlying native types. -### Conditions for Type Conversion +### Conditions for type conversion |Conditions Met|Conversion| |--------------------|----------------| |Either operand is of type **long double**.|Other operand is converted to type **long double**.| |Preceding condition not met and either operand is of type **double**.|Other operand is converted to type **double**.| |Preceding conditions not met and either operand is of type **float**.|Other operand is converted to type **float**.| -|Preceding conditions not met (none of the operands are of floating types).|Integral promotions are performed on the operands as follows:

- If either operand is of type **unsigned long**, the other operand is converted to type **unsigned long**.
- If preceding condition not met, and if either operand is of type **long** and the other of type **unsigned int**, both operands are converted to type **unsigned long**.
- If the preceding two conditions are not met, and if either operand is of type **long**, the other operand is converted to type **long**.
- If the preceding three conditions are not met, and if either operand is of type **unsigned int**, the other operand is converted to type **unsigned int**.
- If none of the preceding conditions are met, both operands are converted to type **int**.| +|Preceding conditions not met (none of the operands are of floating types).|Operands get integral promotions as follows:

- If either operand is of type **unsigned long**, the other operand is converted to type **unsigned long**.
- If preceding condition not met, and if either operand is of type **long** and the other of type **unsigned int**, both operands are converted to type **unsigned long**.
- If the preceding two conditions aren't met, and if either operand is of type **long**, the other operand is converted to type **long**.
- If the preceding three conditions aren't met, and if either operand is of type **unsigned int**, the other operand is converted to type **unsigned int**.
- If none of the preceding conditions are met, both operands are converted to type **int**.| The following code illustrates the conversion rules described in the table: @@ -164,9 +164,9 @@ int main() { } ``` -The first statement in the preceding example shows multiplication of two integral types, `iVal` and `ulVal`. The condition met is that neither operand is of floating type and one operand is of type **unsigned int**. Therefore, the other operand, `iVal`, is converted to type **unsigned int**. The result is assigned to `dVal`. The condition met is that one operand is of type **double**; therefore, the **unsigned int** result of the multiplication is converted to type **double**. +The first statement in the preceding example shows multiplication of two integral types, `iVal` and `ulVal`. The condition met is that neither operand is of floating type, and one operand is of type **unsigned int**. So, the other operand, `iVal`, is converted to type **unsigned int**. The result is then assigned to `dVal`. The condition met here is that one operand is of type **double**, so the **unsigned int** result of the multiplication is converted to type **double**. -The second statement in the preceding example shows addition of a **float** and an integral type, `fVal` and `ulVal`. The `ulVal` variable is converted to type **float** (third condition in the table). The result of the addition is converted to type **double** (second condition in the table) and assigned to `dVal`. +The second statement in the preceding example shows addition of a **float** and an integral type: `fVal` and `ulVal`. The `ulVal` variable is converted to type **float** (third condition in the table). The result of the addition is converted to type **double** (second condition in the table) and assigned to `dVal`. ## Pointer conversions @@ -176,7 +176,7 @@ Pointers can be converted during assignment, initialization, comparison, and oth There are two cases in which a pointer to a class can be converted to a pointer to a base class. -The first case is when the specified base class is accessible and the conversion is unambiguous. (See [Multiple Base Classes](../cpp/multiple-base-classes.md) for more information about ambiguous base-class references.) +The first case is when the specified base class is accessible and the conversion is unambiguous. For more information about ambiguous base-class references, see [Multiple base classes](../cpp/multiple-base-classes.md). Whether a base class is accessible depends on the kind of inheritance used in derivation. Consider the inheritance illustrated in the following figure. @@ -185,8 +185,6 @@ Inheritance Graph for Illustration of Base-Class Accessibility The following table shows the base-class accessibility for the situation illustrated in the figure. -### Base-Class Accessibility - |Type of Function|Derivation|Conversion from

B* to A\* Legal?| |----------------------|----------------|-------------------------------------------| |External (not class-scoped) function|Private|No| @@ -199,9 +197,9 @@ The following table shows the base-class accessibility for the situation illustr ||Protected|Yes| ||Public|Yes| -The second case in which a pointer to a class can be converted to a pointer to a base class is when you use an explicit type conversion. (See [Explicit Type Conversion Operator](explicit-type-conversion-operator-parens.md) for more information about explicit type conversions.) +The second case in which a pointer to a class can be converted to a pointer to a base class is when you use an explicit type conversion. For more information about explicit type conversions, see [Explicit type conversion operator](explicit-type-conversion-operator-parens.md). -The result of such a conversion is a pointer to the "subobject," the portion of the object that is completely described by the base class. +The result of such a conversion is a pointer to the *subobject*, the portion of the object that is completely described by the base class. The following code defines two classes, `A` and `B`, where `B` is derived from `A`. (For more information on inheritance, see [Derived Classes](../cpp/inheritance-cpp.md).) It then defines `bObject`, an object of type `B`, and two pointers (`pA` and `pB`) that point to the object. @@ -232,7 +230,7 @@ int main() } ``` -The pointer `pA` is of type `A *`, which can be interpreted as meaning "pointer to an object of type `A`." Members of `bObject` `(`such as `BComponent` and `BMemberFunc`) are unique to type `B` and are therefore inaccessible through `pA`. The `pA` pointer allows access only to those characteristics (member functions and data) of the object that are defined in class `A`. +The pointer `pA` is of type `A *`, which can be interpreted as meaning "pointer to an object of type `A`." Members of `bObject` (such as `BComponent` and `BMemberFunc`) are unique to type `B` and are therefore inaccessible through `pA`. The `pA` pointer allows access only to those characteristics (member functions and data) of the object that are defined in class `A`. ### Pointer to function @@ -240,22 +238,22 @@ A pointer to a function can be converted to type `void *`, if type `void *` is l ### Pointer to void -Pointers to type **void** can be converted to pointers to any other type, but only with an explicit type cast (unlike in C). A pointer to any type can be converted implicitly to a pointer to type **void**.A pointer to an incomplete object of a type can be converted to a pointer to **void** (implicitly) and back (explicitly). The result of such a conversion is equal to the value of the original pointer. An object is considered incomplete if it is declared, but there is insufficient information available to determine its size or base class. +Pointers to type **void** can be converted to pointers to any other type, but only with an explicit type cast (unlike in C). A pointer to any type can be converted implicitly to a pointer to type **void**. A pointer to an incomplete object of a type can be converted to a pointer to **void** (implicitly) and back (explicitly). The result of such a conversion is equal to the value of the original pointer. An object is considered incomplete if it's declared, but there's insufficient information available to determine its size or base class. A pointer to any object that is not **const** or **volatile** can be implicitly converted to a pointer of type `void *`. ### const and volatile pointers -C++ does not supply a standard conversion from a **const** or **volatile** type to a type that is not **const** or **volatile**. However, any sort of conversion can be specified using explicit type casts (including conversions that are unsafe). +C++ doesn't supply a standard conversion from a **const** or **volatile** type to a type that's not **const** or **volatile**. However, any sort of conversion can be specified using explicit type casts (including conversions that are unsafe). > [!NOTE] -> C++ pointers to members, except pointers to static members, are different from normal pointers and do not have the same standard conversions. Pointers to static members are normal pointers and have the same conversions as normal pointers. +> C++ pointers to members, except pointers to static members, are different from normal pointers and don't have the same standard conversions. Pointers to static members are normal pointers and have the same conversions as normal pointers. ### null pointer conversions -An integral constant expression that evaluates to zero, or such an expression cast to a pointer type, is converted to a pointer called the "null pointer." This pointer is guaranteed to compare unequal to a pointer to any valid object or function (except for pointers to based objects, which can have the same offset and still point to different objects). +An integral constant expression that evaluates to zero, or such an expression cast to a pointer type, is converted to a pointer called the *null pointer*. This pointer always compares unequal to a pointer to any valid object or function. An exception is pointers to based objects, which can have the same offset and still point to different objects. -In C++11 the [nullptr](../cpp/nullptr.md) type should be preferred to the C-style null pointer. +In C++11, the [nullptr](../cpp/nullptr.md) type should be preferred to the C-style null pointer. ### Pointer expression conversions @@ -274,11 +272,11 @@ An expression that results in a function returning a particular type is converte ## Reference conversions -A reference to a class can be converted to a reference to a base class in the following cases: +A reference to a class can be converted to a reference to a base class in these cases: - The specified base class is accessible. -- The conversion is unambiguous. (See [Multiple Base Classes](../cpp/multiple-base-classes.md) for more information about ambiguous base-class references.) +- The conversion is unambiguous. (For more information about ambiguous base-class references, see [Multiple base classes](../cpp/multiple-base-classes.md).) The result of the conversion is a pointer to the subobject that represents the base class. @@ -286,7 +284,7 @@ The result of the conversion is a pointer to the subobject that represents the b Pointers to class members can be converted during assignment, initialization, comparison, and other expressions. This section describes the following pointer-to-member conversions: -## Pointer to base class member +### Pointer to base class member A pointer to a member of a base class can be converted to a pointer to a member of a class derived from it, when the following conditions are met: @@ -300,9 +298,9 @@ When the left operand is a pointer to member, the right operand must be of point - The left operand is a pointer to a member of a class derived publicly and unambiguously from the class of the right operand. -## Integral constant conversions +### null pointer to member conversions -An integral constant expression that evaluates to zero is converted to a pointer called the "null pointer." This pointer is guaranteed to compare unequal to a pointer to any valid object or function (except for pointers to based objects, which can have the same offset and still point to different objects). +An integral constant expression that evaluates to zero is converted to a null pointer. This pointer always compares unequal to a pointer to any valid object or function. An exception is pointers to based objects, which can have the same offset and still point to different objects. The following code illustrates the definition of a pointer to member `i` in class `A`. The pointer, `pai`, is initialized to 0, which is the null pointer. @@ -322,4 +320,4 @@ int main() ## See also -[C++ Language Reference](../cpp/cpp-language-reference.md) \ No newline at end of file +[C++ language reference](../cpp/cpp-language-reference.md) \ No newline at end of file diff --git a/docs/cpp/startup-and-termination-cpp.md b/docs/cpp/startup-and-termination-cpp.md deleted file mode 100644 index 56c07ccf5e..0000000000 --- a/docs/cpp/startup-and-termination-cpp.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -title: "Startup and Termination (C++)" -ms.date: "11/04/2016" -ms.assetid: c6568ee6-40ab-4ae8-aa44-c99e232f64ac ---- -# Startup and Termination (C++) - -Program startup and termination are facilitated by using two functions: [main](../cpp/main-program-startup.md) and [exit](../cpp/program-termination.md). Other startup and termination code may be executed. - -## See also - -[Basic Concepts](../cpp/basic-concepts-cpp.md) \ No newline at end of file diff --git a/docs/cpp/stdcall.md b/docs/cpp/stdcall.md index 8dd279171c..c60f1b8836 100644 --- a/docs/cpp/stdcall.md +++ b/docs/cpp/stdcall.md @@ -7,9 +7,7 @@ ms.assetid: e212594b-1827-4d07-9527-7d412b300df8 --- # __stdcall -**Microsoft Specific** - -The **__stdcall** calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes `vararg` functions **__cdecl**. Functions that use this calling convention require a function prototype. +The **__stdcall** calling convention is used to call Win32 API functions. The callee cleans the stack, so the compiler makes `vararg` functions **__cdecl**. Functions that use this calling convention require a function prototype. The **__stdcall** modifier is Microsoft-specific. ## Syntax diff --git a/docs/cpp/storage-classes-cpp.md b/docs/cpp/storage-classes-cpp.md index 45981ef988..aced44b071 100644 --- a/docs/cpp/storage-classes-cpp.md +++ b/docs/cpp/storage-classes-cpp.md @@ -1,13 +1,14 @@ --- title: "Storage classes (C++)" -ms.date: "11/04/2016" -f1_keywords: ["thread_local_cpp", "external_cpp", "static_cpp", "register_cpp"] +description: "In C++, the static, extern and thread_local keywords specify the lifetime, linkage, and memory location of a variable or function." +ms.date: "12/11/2019" +f1_keywords: ["thread_local_cpp", "extern_cpp", "static_cpp", "register_cpp"] helpviewer_keywords: ["storage classes [C++], basic concepts"] ms.assetid: f10e1c56-6249-4eb6-b08f-09ab1eef1992 --- -# Storage classes (C++) +# Storage classes -A *storage class* in the context of C++ variable declarations is a type specifier that governs the lifetime, linkage, and memory location of objects. A given object can have only one storage class. Variables defined within a block have automatic storage unless otherwise specified using the **extern**, **static**, or `thread_local` specifiers. Automatic objects and variables have no linkage; they are not visible to code outside the block. +A *storage class* in the context of C++ variable declarations is a type specifier that governs the lifetime, linkage, and memory location of objects. A given object can have only one storage class. Variables defined within a block have automatic storage unless otherwise specified using the **extern**, **static**, or **thread_local** specifiers. Automatic objects and variables have no linkage; they are not visible to code outside the block. Memory is allocated for them automatically when execution enters the block and de-allocated when the block is exited. **Notes** @@ -19,12 +20,6 @@ A *storage class* in the context of C++ variable declarations is a type specifie register int val; // warning C5033: 'register' is no longer a supported storage class ``` -## In this section: - -- [static](#static) -- [extern](#extern) -- [thread_local](#thread_local) - ## static The **static** keyword can be used to declare variables and functions at global scope, namespace scope, and class scope. Static variables can also be declared at local scope. @@ -152,30 +147,11 @@ Starting in C++11, a static local variable initialization is guaranteed to be th ## extern -Objects and variables declared as **extern** declare an object that is defined in another translation unit or in an enclosing scope as having external linkage. - -Declaration of **const** variables with the **extern** storage class forces the variable to have external linkage. An initialization of an **extern const** variable is allowed in the defining translation unit. Initializations in translation units other than the defining translation unit produce undefined results. For more information, see [Using extern to Specify Linkage](../cpp/using-extern-to-specify-linkage.md) - -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 following code shows two **extern** declarations, `DefinedElsewhere` (which refers to a name defined in a different translation unit) and `DefinedHere` (which refers to a name defined in an enclosing scope): - -```cpp -// external.cpp -// DefinedElsewhere is defined in another translation unit -extern int DefinedElsewhere; -int main() { - int DefinedHere; - { - // refers to DefinedHere in the enclosing scope - extern int DefinedHere; - } -} -``` +Objects and variables declared as **extern** declare an object that is defined in another translation unit or in an enclosing scope as having external linkage. For more information, see [extern](extern-cpp.md) and [Translation units and linkage](program-and-linkage-cpp.md). ## thread_local (C++11) -A variable declared with the `thread_local` specifier is accessible only on the thread on which it is created. The variable is created when the thread is created, and destroyed when the thread is destroyed. Each thread has its own copy of the variable. On Windows, `thread_local` is functionally equivalent to the Microsoft-specific [__declspec( thread )](../cpp/thread.md) attribute. +A variable declared with the **thread_local** specifier is accessible only on the thread on which it is created. The variable is created when the thread is created, and destroyed when the thread is destroyed. Each thread has its own copy of the variable. On Windows, **thread_local** is functionally equivalent to the Microsoft-specific [__declspec( thread )](../cpp/thread.md) attribute. ```cpp thread_local float f = 42.0; // Global namespace. Not implicitly static. @@ -194,19 +170,19 @@ void DoSomething() } ``` -Things to note about the `thread_local` specifier: +Things to note about the **thread_local** specifier: - Dynamically initialized thread-local variables in DLLs may not be correctly initialized on all calling threads. For more information, see [thread](thread.md). -- The `thread_local` specifier may be combined with **static** or **extern**. +- The **thread_local** specifier may be combined with **static** or **extern**. -- You can apply `thread_local` only to data declarations and definitions; `thread_local` cannot be used on function declarations or definitions. +- You can apply **thread_local** only to data declarations and definitions; **thread_local** cannot be used on function declarations or definitions. -- You can specify `thread_local` only on data items with static storage duration. This includes global data objects (both **static** and **extern**), local static objects, and static data members of classes. Any local variable declared `thread_local` is implicitly static if no other storage class is provided; in other words, at block scope `thread_local` is equivalent to `thread_local static`. +- You can specify **thread_local** only on data items with static storage duration. This includes global data objects (both **static** and **extern**), local static objects, and static data members of classes. Any local variable declared **thread_local** is implicitly static if no other storage class is provided; in other words, at block scope **thread_local** is equivalent to `thread_local static`. -- You must specify `thread_local` for both the declaration and the definition of a thread local object, whether the declaration and definition occur in the same file or separate files. +- You must specify **thread_local** for both the declaration and the definition of a thread local object, whether the declaration and definition occur in the same file or separate files. -On Windows, `thread_local` is functionally equivalent to [__declspec(thread)](../cpp/thread.md) except that **__declspec(thread)** can be applied to a type definition and is valid in C code. Whenever possible, use `thread_local` because it is part of the C++ standard and is therefore more portable. +On Windows, **thread_local** is functionally equivalent to [__declspec(thread)](../cpp/thread.md) except that **__declspec(thread)** can be applied to a type definition and is valid in C code. Whenever possible, use **thread_local** because it is part of the C++ standard and is therefore more portable. ## register diff --git a/docs/cpp/structured-exception-handling-c-cpp.md b/docs/cpp/structured-exception-handling-c-cpp.md index 1e38946d61..ab18c9dd8e 100644 --- a/docs/cpp/structured-exception-handling-c-cpp.md +++ b/docs/cpp/structured-exception-handling-c-cpp.md @@ -8,7 +8,7 @@ ms.assetid: dd3b647d-c269-43a8-aab9-ad1458712976 Structured exception handling (SEH) is a Microsoft extension to C to handle certain exceptional code situations, such as hardware faults, gracefully. Although Windows and Microsoft C++ support SEH, we recommend that you use ISO-standard C++ exception handling because it makes your code more portable and flexible. Nevertheless, to maintain existing code or for particular kinds of programs, you still might have to use SEH. -**Microsoft specific:** +**Microsoft-specific:** ## Grammar @@ -46,9 +46,9 @@ As it unwinds the stack, the operating system calls any termination handlers tha ## Next steps -- [Writing an Exception Handler](../cpp/writing-an-exception-handler.md) +- [Writing an exception handler](../cpp/writing-an-exception-handler.md) -- [Writing a Termination Handler](../cpp/writing-a-termination-handler.md) +- [Writing a termination handler](../cpp/writing-a-termination-handler.md) - [Handle structured exceptions in C++](../cpp/exception-handling-differences.md) @@ -128,7 +128,7 @@ Executing SEH __except block For more information, see [/EH (Exception Handling Model)](../build/reference/eh-exception-handling-model.md). -**END Microsoft Specific** +**END Microsoft-specific** ## See also diff --git a/docs/cpp/templates-cpp.md b/docs/cpp/templates-cpp.md index 6615ed7309..0e7d4fa620 100644 --- a/docs/cpp/templates-cpp.md +++ b/docs/cpp/templates-cpp.md @@ -1,6 +1,6 @@ --- title: "Templates (C++)" -ms.date: "11/04/2016" +ms.date: "12/27/2019" f1_keywords: ["template_cpp"] helpviewer_keywords: ["templates, C++", "templates [C++]"] ms.assetid: 90fcc14a-2092-47af-9d2e-dba26d25b872 @@ -74,7 +74,7 @@ vtclass vtinstance2; vtclass vtinstance3; ``` -Any built-in or user-defined type can be used as a type argument. For example, you can use std::vector in the Standard Library to store ints, doubles, strings, MyClass, const MyClass*, MyClass&. The primary restriction when using templates is that a type argument must support any operations that are applied to the type parameters. For example, if we call minimum using MyClass as in this example: +Any built-in or user-defined type can be used as a type argument. For example, you can use [std::vector](../standard-library/vector-class.md) in the Standard Library to store variables of type **int**, **double**, [std::string](../standard-library/basic-string-class.md), `MyClass`, **const** `MyClass`*, `MyClass&`, and so on. The primary restriction when using templates is that a type argument must support any operations that are applied to the type parameters. For example, if we call `minimum` using `MyClass` as in this example: ```cpp class MyClass @@ -92,7 +92,7 @@ int main() } ``` -A compiler error will be generated because MyClass does not provide an overload for the < operator. +A compiler error will be generated because `MyClass` does not provide an overload for the **<** operator. There is no inherent requirement that the type arguments for any particular template all belong to the same object hierarchy, although you can define a template that enforces such a restriction. You can combine object-oriented techniques with templates; for example, you can store a Derived* in a vector\. Note that the arguments must be pointers @@ -106,11 +106,11 @@ vector vec; vec2.push_back(make_shared()); ``` -The basic requirements that vector and other standard library containers impose on elements of `T` is that `T` be copy-assignable and copy-constructible. +The basic requirements that `std::vector` and other standard library containers impose on elements of `T` is that `T` be copy-assignable and copy-constructible. ## Non-type parameters -Unlike generic types in other languages such as C# and Java, C++ templates support non-type parameters, also called value parameters. For example, you can provide a constant integral value to specify the length of an array, as with this example that is similar to the std::array class in the Standard Library: +Unlike generic types in other languages such as C# and Java, C++ templates support *non-type parameters*, also called value parameters. For example, you can provide a constant integral value to specify the length of an array, as with this example that is similar to the [std::array](../standard-library/array-class-stl.md) class in the Standard Library: ```cpp template @@ -122,7 +122,7 @@ public: }; ``` -Note the syntax in the template declaration. The size_t value is passed in as a template argument at compile time and must be constant or a constexpr expression. You use it like this: +Note the syntax in the template declaration. The `size_t` value is passed in as a template argument at compile time and must be **const** or a **constexpr** expression. You use it like this: ```cpp MyArray arr; @@ -130,6 +130,18 @@ MyArray arr; Other kinds of values including pointers and references can be passed in as non-type parameters. For example, you can pass in a pointer to a function or function object to customize some operation inside the template code. +### Type deduction for non-type template parameters + +In Visual Studio 2017 and later, in **/std:c++17** mode the compiler deduces the type of a non-type template argument that is declared with **auto**: + +```cpp +template constexpr auto constant = x; + +auto v1 = constant<5>; // v1 == 5, decltype(v1) is int +auto v2 = constant; // v2 == true, decltype(v2) is bool +auto v3 = constant<'a'>; // v3 == 'a', decltype(v3) is char +``` + ## Templates as template parameters A template can be a template parameter. In this example, MyClass2 has two template parameters: a typename parameter *T* and a template parameter *Arr*: diff --git a/docs/cpp/this-pointer.md b/docs/cpp/this-pointer.md index cfdf70f9d8..95263ec5a4 100644 --- a/docs/cpp/this-pointer.md +++ b/docs/cpp/this-pointer.md @@ -1,13 +1,15 @@ --- -title: "this Pointer" -ms.date: "11/04/2016" +title: "this pointer" +description: "The this pointer is a compiler-generated pointer to the current object in nonstatic member functions." +ms.date: "01/22/2020" f1_keywords: ["this_cpp"] helpviewer_keywords: ["nonstatic member functions [C++]", "pointers, to class instance", "this pointer"] ms.assetid: 92e3256a-4ad9-4d46-8be1-d77fad90791f +no-loc: [this, class, struct, union, sizeof, const, volatile] --- -# this Pointer +# this pointer -The **this** pointer is a pointer accessible only within the nonstatic member functions of a **class**, **struct**, or **union** type. It points to the object for which the member function is called. Static member functions do not have a **this** pointer. +The **this** pointer is a pointer accessible only within the nonstatic member functions of a **class**, **struct**, or **union** type. It points to the object for which the member function is called. Static member functions don't have a **this** pointer. ## Syntax @@ -18,19 +20,19 @@ this->member-identifier ## Remarks -An object's **this** pointer is not part of the object itself; it is not reflected in the result of a **sizeof** statement on the object. Instead, when a nonstatic member function is called for an object, the address of the object is passed by the compiler as a hidden argument to the function. For example, the following function call: +An object's **this** pointer isn't part of the object itself. It's not reflected in the result of a **sizeof** statement on the object. When a nonstatic member function is called for an object, the compiler passes the object's address to the function as a hidden argument. For example, the following function call: ```cpp myDate.setMonth( 3 ); ``` -can be interpreted this way: +can be interpreted as: ```cpp setMonth( &myDate, 3 ); ``` -The object's address is available from within the member function as the **this** pointer. Most uses of **this** are implicit. It is legal, though unnecessary, to explicitly use **this** when referring to members of the class. For example: +The object's address is available from within the member function as the **this** pointer. Most **this** pointer uses are implicit. It's legal, though unnecessary, to use an explicit **this** when referring to members of the class. For example: ```cpp void Date::setMonth( int mn ) @@ -55,7 +57,7 @@ if (&Object != this) { ``` > [!NOTE] -> Because the **this** pointer is nonmodifiable, assignments to **this** are not allowed. Earlier implementations of C++ allowed assignments to **this**. +> Because the **this** pointer is nonmodifiable, assignments to the **this** pointer are not allowed. Earlier implementations of C++ allowed assignment to **this**. Occasionally, the **this** pointer is used directly — for example, to manipulate self-referential data structures, where the address of the current object is required. @@ -131,9 +133,9 @@ your buffer ## Type of the this pointer -The **this** pointer's type can be modified in the function declaration by the **const** and **volatile** keywords. To declare a function as having the attributes of one or more of these keywords, add the keyword(s) after the function argument list. +The **this** pointer's type can be modified in the function declaration by the **const** and **volatile** keywords. To declare a function that has either of these attributes, add the keyword(s) after the function argument list. -Consider this example: +Consider an example: ```cpp // type_of_this_pointer1.cpp @@ -146,7 +148,7 @@ int main() } ``` -The preceding code declares a member function, `X`, in which the **this** pointer is treated as a **const** pointer to a **const** object. Combinations of *cv-mod-list* options can be used, but they always modify the object pointed to by **this**, not the **this** pointer itself. Therefore, the following declaration declares function `X`; the **this** pointer is a **const** pointer to a **const** object: +The preceding code declares a member function, `X`, in which the **this** pointer is treated as a **const** pointer to a **const** object. Combinations of *cv-mod-list* options can be used, but they always modify the object pointed to by the **this** pointer, not the pointer itself. The following declaration declares function `X`, where the **this** pointer is a **const** pointer to a **const** object: ```cpp // type_of_this_pointer2.cpp @@ -159,28 +161,30 @@ int main() } ``` -The type of **this** in a member function is described by the following syntax, where *cv-qualifier-list* is determined from the member functions declarator and can be **const** or **volatile** (or both), and *class-type* is the name of the class: +The type of **this** in a member function is described by the following syntax. The *cv-qualifier-list* is determined from the member function's declarator. It can be **const** or **volatile** (or both). *class-type* is the name of the class: -*[cv-qualifier-list] class-type* *** const this** +[*cv-qualifier-list*] *class-type* **\* const this** -In other words, **this** is always a const pointer; it cannot be reassigned. The **const** or **volatile** qualifiers used in the member function declaration apply to the class instance pointed to by **this** in the scope of that function. +In other words, the **this** pointer is always a const pointer. It can't be reassigned. The **const** or **volatile** qualifiers used in the member function declaration apply to the class instance the **this** pointer points at, in the scope of that function. The following table explains more about how these modifiers work. -### Semantics of this Modifiers +### Semantics of this modifiers |Modifier|Meaning| |--------------|-------------| -|**const**|Cannot change member data; cannot invoke member functions that are not **const**.| -|**volatile**|Member data is loaded from memory each time it is accessed; disables certain optimizations.| +|**const**|Can't change member data; can't invoke member functions that aren't **const**.| +|**volatile**|Member data is loaded from memory each time it's accessed; disables certain optimizations.| -It is an error to pass a **const** object to a member function that is not **const**. Similarly, it is an error to pass a **volatile** object to a member function that is not **volatile**. +It's an error to pass a **const** object to a member function that isn't **const**. -Member functions declared as **const** cannot change member data — in such functions, the **this** pointer is a pointer to a **const** object. +Similarly, it's also an error to pass a **volatile** object to a member function that isn't **volatile**. + +Member functions declared as **const** can't change member data — in such functions, the **this** pointer is a pointer to a **const** object. > [!NOTE] -> Constructors and destructors cannot be declared as **const** or **volatile**. They can, however, be invoked on **const** or **volatile** objects. +> Constructors and destructors can't be declared as **const** or **volatile**. They can, however, be invoked on **const** or **volatile** objects. ## See also -[Keywords](../cpp/keywords-cpp.md) \ No newline at end of file +[Keywords](../cpp/keywords-cpp.md) diff --git a/docs/cpp/thread.md b/docs/cpp/thread.md index e198720e06..003fa42b9e 100644 --- a/docs/cpp/thread.md +++ b/docs/cpp/thread.md @@ -9,11 +9,11 @@ ms.assetid: 667f2a77-6d1f-4b41-bee8-05e67324fab8 **Microsoft Specific** -The **thread** extended storage-class modifier is used to declare a thread local variable. For the portable equivalent in C++11 and later, use the [thread_local](../cpp/storage-classes-cpp.md#thread_local) storage class specifier for portable code. On Windows `thread_local` is implemented with **__declspec(thread)**. +The **thread** extended storage-class modifier is used to declare a thread local variable. For the portable equivalent in C++11 and later, use the [thread_local](../cpp/storage-classes-cpp.md#thread_local) storage class specifier for portable code. On Windows **thread_local** is implemented with **__declspec(thread)**. ## Syntax -> **__declspec( thread )** *declarator* +**__declspec(thread)** *declarator* ## Remarks @@ -29,19 +29,19 @@ When using thread-local variables in dynamically-loaded libraries, you need to b 1. If the variable is initialized with a function call (including constructors), this function will only be called for the thread that caused the binary/DLL to load into the process, and for those threads that started after the binary/DLL was loaded. The initialization functions are not called for any other thread that was already running when the DLL was loaded. Dynamic initialization occurs on the DllMain call for DLL_THREAD_ATTACH, but the DLL never gets that message if the DLL isn't in the process when the thread starts. -1. Thread-local variables that are initialized statically with constant values are generally initialized properly on all threads. However, as of December 2017 there is a known conformance issue in the Microsoft C++ compiler whereby constexpr variables receive dynamic rather than static initialization. +1. Thread-local variables that are initialized statically with constant values are generally initialized properly on all threads. However, as of December 2017 there is a known conformance issue in the Microsoft C++ compiler whereby **constexpr** variables receive dynamic rather than static initialization. Note: Both of these issues are expected to be fixed in future updates of the compiler. Additionally, you must observe these guidelines when declaring thread local objects and variables: -- You can apply the **thread** attribute only to class and data declarations and definitions; **thread** cannot be used on function declarations or definitions. +- You can apply the **thread** attribute only to class and data declarations and definitions; **thread** can't be used on function declarations or definitions. -- You can specify the **thread** attribute only on data items with static storage duration. This includes global data objects (both **static** and **extern**), local static objects, and static data members of classes. You cannot declare automatic data objects with the **thread** attribute. +- You can specify the **thread** attribute only on data items with static storage duration. This includes global data objects (both **static** and **extern**), local static objects, and static data members of classes. You can't declare automatic data objects with the **thread** attribute. - You must use the **thread** attribute for the declaration and the definition of a thread local object, whether the declaration and definition occur in the same file or separate files. -- You cannot use the **thread** attribute as a type modifier. +- You can't use the **thread** attribute as a type modifier. - Because the declaration of objects that use the **thread** attribute is permitted, these two examples are semantically equivalent: @@ -60,7 +60,7 @@ Additionally, you must observe these guidelines when declaring thread local obje __declspec( thread ) B2 BObject2; // BObject2 declared thread local. ``` -- Standard C permits initialization of an object or variable with an expression involving a reference to itself, but only for objects of nonstatic extent. Although C++ normally permits such dynamic initialization of an object with an expression involving a reference to itself, this type of initialization is not permitted with thread local objects. For example: +- Standard C permits initialization of an object or variable with an expression involving a reference to itself, but only for nonstatic objects. Although C++ normally permits such dynamic initialization of an object with an expression involving a reference to itself, this type of initialization isn't permitted with thread local objects. For example: ```cpp // declspec_thread_3.cpp @@ -70,7 +70,7 @@ Additionally, you must observe these guidelines when declaring thread local obje Thread int tls_i = sizeof( tls_i ); // Okay in C and C++ ``` - Note that a **sizeof** expression that includes the object being initialized does not constitute a reference to itself and is allowed in C and C++. + A **sizeof** expression that includes the object being initialized does not constitute a reference to itself and is allowed in C and C++. **END Microsoft Specific** diff --git a/docs/cpp/timing-of-exception-handling-a-summary.md b/docs/cpp/timing-of-exception-handling-a-summary.md index 293cbabe7c..026af05df7 100644 --- a/docs/cpp/timing-of-exception-handling-a-summary.md +++ b/docs/cpp/timing-of-exception-handling-a-summary.md @@ -1,10 +1,10 @@ --- -title: "Timing of Exception Handling: A Summary" +title: "Timing of exception handling: A summary" ms.date: "05/07/2019" helpviewer_keywords: ["sequence [C++]", "sequence, of handlers", "exception handling [C++], timing", "setjmpex.h", "termination handlers [C++], timing", "setjmp.h", "handlers [C++], order of exception", "structured exception handling [C++], timing"] ms.assetid: 5d1da546-73fd-4673-aa1a-7ac0f776c420 --- -# Timing of Exception Handling: A Summary +# Timing of exception handling: A summary A termination handler is executed no matter how the **__try** statement block is terminated. Causes include jumping out of the **__try** block, a `longjmp` statement that transfers control out of the block, and unwinding the stack due to exception handling. @@ -35,5 +35,5 @@ When the cause for interruption is an exception, the system must first execute t ## 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/tokens-cpp.md b/docs/cpp/tokens-cpp.md deleted file mode 100644 index 8f579c8c47..0000000000 --- a/docs/cpp/tokens-cpp.md +++ /dev/null @@ -1,45 +0,0 @@ ---- -title: "Tokens (C++)" -ms.date: "11/04/2016" -helpviewer_keywords: ["tokens [C++]", "parsing, C++ tokens", "translation units", "white space, in C++ tokens"] -ms.assetid: aa812fd0-6d47-4f3f-aee0-db002ee4d8b9 ---- -# Tokens (C++) - -A token is the smallest element of a C++ program that is meaningful to the compiler. The C++ parser recognizes these kinds of tokens: identifiers, keywords, literals, operators, punctuators, and other separators. A stream of these tokens makes up a translation unit. - -Tokens are usually separated by *white space*. White space can be one or more: - -- Blanks - -- Horizontal or vertical tabs - -- New lines - -- Form feeds - -- Comments - -The parser recognizes keywords, identifiers, literals, operators, and punctuators. For information on specific token types, see [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), [C++ Built-in Operators, Precedence and Associativity](../cpp/cpp-built-in-operators-precedence-and-associativity.md), and [Punctuators](../cpp/punctuators-cpp.md). White space is ignored, except as required to separate tokens. - -Preprocessing tokens are used in the preprocessing phases to generate the token stream passed to the compiler. The preprocessing token categories are header names, identifiers, preprocessing numbers, character literals, string literals, preprocessing operators and punctuators, and single non-white-space characters that do not match one of the other categories. Character and string literals can be user-defined literals. Preprocessing tokens can be separated by white space or comments. - -The parser separates tokens from the input stream by creating the longest token possible using the input characters in a left-to-right scan. Consider this code fragment: - -```cpp -a = i+++j; -``` - -The programmer who wrote the code might have intended either of these two statements: - -```cpp -a = i + (++j) - -a = (i++) + j -``` - -Because the parser creates the longest token possible from the input stream, it chooses the second interpretation, making the tokens `i++`, `+`, and `j`. - -## See also - -[Lexical Conventions](../cpp/lexical-conventions.md) \ No newline at end of file diff --git a/docs/cpp/transporting-exceptions-between-threads.md b/docs/cpp/transporting-exceptions-between-threads.md index c1ca334106..c187a3295f 100644 --- a/docs/cpp/transporting-exceptions-between-threads.md +++ b/docs/cpp/transporting-exceptions-between-threads.md @@ -30,7 +30,7 @@ namespace std |*E*|A class that represents an exception.| |*e*|An instance of the parameter `E` class.| -## Return Value +## Return value The `current_exception` function returns an `exception_ptr` object that references the exception that is currently in progress. If no exception is in progress, the function returns an `exception_ptr` object that is not associated with any exception. @@ -58,7 +58,7 @@ Most applications do not have to transport exceptions between threads. However, For more information about the C++ Standards committee proposal, search the Internet for document number N2179, titled "Language Support for Transporting Exceptions between Threads". -### Exception-Handling Models and Compiler Options +### Exception-handling models and compiler options Your application's exception-handling model determines whether it can catch and transport an exception. Visual C++ supports three models that can handle C++ exceptions, structured exception handling (SEH) exceptions, and common language runtime (CLR) exceptions. Use the [/EH](../build/reference/eh-exception-handling-model.md) and [/clr](../build/reference/clr-common-language-runtime-compilation.md) compiler options to specify your application's exception-handling model. @@ -77,7 +77,7 @@ Only the following combination of compiler options and programming statements ca The following sections describe how to transport exceptions by using the `exception_ptr` type, and the `current_exception`, `rethrow_exception`, and `make_exception_ptr` functions. -## exception_ptr Type +## exception_ptr type Use an `exception_ptr` object to reference the current exception or an instance of a user-specified exception. In the Microsoft implementation, an exception is represented by an [EXCEPTION_RECORD](/windows/win32/api/winnt/ns-winnt-exception_record) structure. Each `exception_ptr` object includes an exception reference field that points to a copy of the `EXCEPTION_RECORD` structure that represents the exception. @@ -91,7 +91,7 @@ Despite its name, an `exception_ptr` object is not itself a pointer. It does not You can use the equal (`==`) and not-equal (`!=`) operators to compare two `exception_ptr` objects. The operators do not compare the binary value (bit pattern) of the `EXCEPTION_RECORD` structures that represent the exceptions. Instead, the operators compare the addresses in the exception reference field of the `exception_ptr` objects. Consequently, a null `exception_ptr` and the NULL value compare as equal. -## current_exception Function +## current_exception function Call the `current_exception` function in a **catch** block. If an exception is in flight and the **catch** block can catch the exception, the `current_exception` function returns an `exception_ptr` object that references the exception. Otherwise, the function returns a null `exception_ptr` object. @@ -103,7 +103,7 @@ The destructor for the current exception is called at the end of the **catch** b Successive calls to the `current_exception` function return `exception_ptr` objects that refer to different copies of the current exception. Consequently, the objects compare as unequal because they refer to different copies, even though the copies have the same binary value. -### SEH Exceptions +### SEH exceptions If you use the **/EHa** compiler option, you can catch an SEH exception in a C++ **catch** block. The `current_exception` function returns an `exception_ptr` object that references the SEH exception. And the `rethrow_exception` function throws the SEH exception if you call it with thetransported `exception_ptr` object as its argument. @@ -115,13 +115,13 @@ If you catch an SEH exception, you must manage the memory referenced by any poin You can use structured exception (SE) translator functions together with the transport exceptions feature. If an SEH exception is translated to a C++ exception, the `current_exception` function returns an `exception_ptr` that references the translated exception instead of the original SEH exception. The `rethrow_exception` function subsequently throws the translated exception, not the original exception. For more information about SE translator functions, see [_set_se_translator](../c-runtime-library/reference/set-se-translator.md). -## rethrow_exception Function +## rethrow_exception function After you store a caught exception in an `exception_ptr` object, the primary thread can process the object. In your primary thread, call the `rethrow_exception` function together with the `exception_ptr` object as its argument. The `rethrow_exception` function extracts the exception from the `exception_ptr` object and then throws the exception in the context of the primary thread. If the *p* parameter of the `rethrow_exception` function is a null `exception_ptr`, the function throws [std::bad_exception](../standard-library/bad-exception-class.md). The extracted exception is now the current exception in the primary thread, and you can handle it as you would any other exception. If you catch the exception, you can handle it immediately or use a **throw** statement to send it to a higher level exception handler. Otherwise, do nothing and let the default system exception handler terminate your process. -## make_exception_ptr Function +## make_exception_ptr function The `make_exception_ptr` function takes an instance of a class as its argument and then returns an `exception_ptr` that references the instance. Usually, you specify an [exception class](../standard-library/exception-class.md) object as the argument to the `make_exception_ptr` function, although any class object can be the argument. diff --git a/docs/cpp/try-except-statement.md b/docs/cpp/try-except-statement.md index 89abb475c3..47b0430cea 100644 --- a/docs/cpp/try-except-statement.md +++ b/docs/cpp/try-except-statement.md @@ -158,6 +158,6 @@ world ## See also -[Writing an Exception Handler](../cpp/writing-an-exception-handler.md)
+[Writing an exception handler](../cpp/writing-an-exception-handler.md)
[Structured Exception Handling (C/C++)](../cpp/structured-exception-handling-c-cpp.md)
[Keywords](../cpp/keywords-cpp.md) diff --git a/docs/cpp/try-finally-statement.md b/docs/cpp/try-finally-statement.md index 9b53813b6c..296239dd84 100644 --- a/docs/cpp/try-finally-statement.md +++ b/docs/cpp/try-finally-statement.md @@ -72,7 +72,7 @@ The termination handler is not called if a process is killed in the middle of ex ## 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)
[Keywords](../cpp/keywords-cpp.md)
[Termination-Handler Syntax](/windows/win32/Debug/termination-handler-syntax) \ No newline at end of file diff --git a/docs/cpp/try-throw-and-catch-statements-cpp.md b/docs/cpp/try-throw-and-catch-statements-cpp.md index b35363032c..5d500565e6 100644 --- a/docs/cpp/try-throw-and-catch-statements-cpp.md +++ b/docs/cpp/try-throw-and-catch-statements-cpp.md @@ -72,7 +72,7 @@ catch(...) { ## See also -[C++ Exception Handling](../cpp/cpp-exception-handling.md)
+[Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md)
[Keywords](../cpp/keywords-cpp.md)
[Unhandled C++ Exceptions](../cpp/unhandled-cpp-exceptions.md)
[__uncaught_exception](../c-runtime-library/reference/uncaught-exception.md) \ No newline at end of file diff --git a/docs/cpp/type-conversions-and-type-safety-modern-cpp.md b/docs/cpp/type-conversions-and-type-safety-modern-cpp.md index 531f992b4d..81c4df9bd2 100644 --- a/docs/cpp/type-conversions-and-type-safety-modern-cpp.md +++ b/docs/cpp/type-conversions-and-type-safety-modern-cpp.md @@ -1,10 +1,10 @@ --- -title: "Type Conversions and Type Safety (Modern C++)" -ms.date: "05/07/2019" +title: "Type conversions and type safety" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: 629b361a-2ce1-4700-8b5d-ab4f57b245d5 --- -# Type Conversions and Type Safety (Modern C++) +# Type conversions and type safety This document identifies common type conversion problems and describes how you can avoid them in your C++ code. @@ -172,7 +172,7 @@ The C-style cast operator is identical to the call operator () and is therefore ## See also -[C++ Type System (Modern C++)](../cpp/cpp-type-system-modern-cpp.md)
-[Welcome Back to C++ (Modern C++)](../cpp/welcome-back-to-cpp-modern-cpp.md)
+[C++ type system](../cpp/cpp-type-system-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/typeid-operator.md b/docs/cpp/typeid-operator.md index 4c4968e22e..988341a972 100644 --- a/docs/cpp/typeid-operator.md +++ b/docs/cpp/typeid-operator.md @@ -1,6 +1,6 @@ --- title: "typeid Operator" -ms.date: "11/04/2016" +ms.date: "10/04/2019" helpviewer_keywords: ["typeid operator"] ms.assetid: 8871cee6-d6b9-4301-a5cb-bf3dc9798d61 --- @@ -17,25 +17,25 @@ typeid(expression) The **typeid** operator allows the type of an object to be determined at run time. -The result of **typeid** is a `const type_info&`. The value is a reference to a `type_info` object that represents either the *type-id* or the type of the *expression*, depending on which form of **typeid** is used. See [type_info Class](../cpp/type-info-class.md) for more information. +The result of **typeid** is a `const type_info&`. The value is a reference to a `type_info` object that represents either the *type-id* or the type of the *expression*, depending on which form of **typeid** is used. For more information, see [type_info Class](../cpp/type-info-class.md). -The **typeid** operator does not work with managed types (abstract declarators or instances), see [typeid](../extensions/typeid-cpp-component-extensions.md) for information on getting the of a specified type. +The **typeid** operator doesn't work with managed types (abstract declarators or instances). For information on getting the of a specified type, see [typeid](../extensions/typeid-cpp-component-extensions.md). -The **typeid** operator does a run-time check when applied to an l-value of a polymorphic class type, where the true type of the object cannot be determined by the static information provided. Such cases are: +The **typeid** operator does a run-time check when applied to an l-value of a polymorphic class type, where the true type of the object can't be determined by the static information provided. Such cases are: - A reference to a class -- A pointer, dereferenced with \* +- A pointer, dereferenced with `*` -- A subscripted pointer (i.e. [ ]). (Note that it is generally not safe to use a subscript with a pointer to a polymorphic type.) +- A subscripted pointer (`[ ]`). (It's not safe to use a subscript with a pointer to a polymorphic type.) -If the *expression* points to a base class type, yet the object is actually of a type derived from that base class, a `type_info` reference for the derived class is the result. The *expression* must point to a polymorphic type (a class with virtual functions). Otherwise, the result is the `type_info` for the static class referred to in the *expression*. Further, the pointer must be dereferenced so that the object it points to is used. Without dereferencing the pointer, the result will be the `type_info` for the pointer, not what it points to. For example: +If the *expression* points to a base class type, yet the object is actually of a type derived from that base class, a `type_info` reference for the derived class is the result. The *expression* must point to a polymorphic type (a class with virtual functions). Otherwise, the result is the `type_info` for the static class referred to in the *expression*. Further, the pointer must be dereferenced so that the object used is the one it points to. Without dereferencing the pointer, the result will be the `type_info` for the pointer, not what it points to. For example: ```cpp // expre_typeid_Operator.cpp // compile with: /GR /EHsc #include -#include +#include class Base { public: @@ -56,9 +56,9 @@ int main() { } ``` -If the *expression* is dereferencing a pointer, and that pointer's value is zero, **typeid** throws a [bad_typeid exception](../cpp/bad-typeid-exception.md). If the pointer does not point to a valid object, a `__non_rtti_object` exception is thrown, indicating an attempt to analyze the RTTI that triggered a fault (like access violation), because the object is somehow invalid (bad pointer or the code wasn't compiled with [/GR](../build/reference/gr-enable-run-time-type-information.md)). +If the *expression* is dereferencing a pointer, and that pointer's value is zero, **typeid** throws a [bad_typeid exception](../cpp/bad-typeid-exception.md). If the pointer doesn't point to a valid object, a `__non_rtti_object` exception is thrown. It indicates an attempt to analyze the RTTI that triggered a fault because the object is somehow invalid. (For example, it's a bad pointer, or the code wasn't compiled with [/GR](../build/reference/gr-enable-run-time-type-information.md)). -If the *expression* is neither a pointer nor a reference to a base class of the object, the result is a `type_info` reference representing the static type of the *expression*. The *static type* of an expression refers to the type of an expression as it is known at compile time. Execution semantics are ignored when evaluating the static type of an expression. Furthermore, references are ignored when possible when determining the static type of an expression: +If the *expression* is not a pointer, and not a reference to a base class of the object, the result is a `type_info` reference representing the static type of the *expression*. The *static type* of an expression refers to the type of an expression as it is known at compile time. Execution semantics are ignored when evaluating the static type of an expression. Furthermore, references are ignored when possible when determining the static type of an expression: ```cpp // expre_typeid_Operator_2.cpp @@ -85,5 +85,5 @@ T max( T arg1, T arg2 ) { ## 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/unaligned.md b/docs/cpp/unaligned.md index cc787323b6..a8d2d45aa8 100644 --- a/docs/cpp/unaligned.md +++ b/docs/cpp/unaligned.md @@ -7,7 +7,7 @@ ms.assetid: 0cd83aad-1840-47e3-ad33-59bfcbe6375b --- # __unaligned -**Microsoft specific**. When you declare a pointer with the **__unaligned** modifier, the compiler assumes that the pointer addresses data that is not aligned. Consequently, platform-appropriate code is generated to handle unaligned reads and writes through the pointer. +**Microsoft-specific**. When you declare a pointer with the **__unaligned** modifier, the compiler assumes that the pointer addresses data that is not aligned. Consequently, platform-appropriate code is generated to handle unaligned reads and writes through the pointer. ## Remarks diff --git a/docs/cpp/unary-plus-and-negation-operators-plus-and.md b/docs/cpp/unary-plus-and-negation-operators-plus-and.md index effaddc58e..2f4c8e35aa 100644 --- a/docs/cpp/unary-plus-and-negation-operators-plus-and.md +++ b/docs/cpp/unary-plus-and-negation-operators-plus-and.md @@ -26,10 +26,12 @@ The unary negation operator (**-**) produces the negative of its operand. The op Integral promotion is performed on integral operands, and the resultant type is the type to which the operand is promoted. See [Standard Conversions](standard-conversions.md) for more information about how the promotion is performed. -## Microsoft specific +**Microsoft Specific** Unary negation of unsigned quantities is performed by subtracting the value of the operand from 2^n, where n is the number of bits in an object of the given unsigned type. +**END Microsoft Specific** + ## See also [Expressions with Unary Operators](../cpp/expressions-with-unary-operators.md)
diff --git a/docs/cpp/unhandled-cpp-exceptions.md b/docs/cpp/unhandled-cpp-exceptions.md index a50638a341..2042839b3e 100644 --- a/docs/cpp/unhandled-cpp-exceptions.md +++ b/docs/cpp/unhandled-cpp-exceptions.md @@ -1,10 +1,10 @@ --- -title: "Unhandled C++ Exceptions" +title: "Unhandled C++ exceptions" ms.date: "11/04/2016" helpviewer_keywords: ["event handlers [C++], unhandled exceptions", "catch keyword [C++], handler not found", "exceptions [C++], unhandled", "C++ exception handling, unhandled exceptions", "unhandled exceptions [C++]"] ms.assetid: 13f09c53-9254-4407-9db9-14e730e047cc --- -# Unhandled C++ Exceptions +# Unhandled C++ exceptions If a matching handler (or ellipsis **catch** handler) cannot be found for the current exception, the predefined `terminate` run-time function is called. (You can also explicitly call `terminate` in any of your handlers.) The default action of `terminate` is to call `abort`. If you want `terminate` to call some other function in your program before exiting the application, call the `set_terminate` function with the name of the function to be called as its single argument. You can call `set_terminate` at any point in your program. The `terminate` routine always calls the last function given as an argument to `set_terminate`. @@ -45,4 +45,4 @@ The `term_func` function should terminate the program or current thread, ideally ## See also -[C++ Exception Handling](../cpp/cpp-exception-handling.md) \ No newline at end of file +[Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md) \ No newline at end of file diff --git a/docs/cpp/uniform-initialization-and-delegating-constructors.md b/docs/cpp/uniform-initialization-and-delegating-constructors.md deleted file mode 100644 index 4823cdaea2..0000000000 --- a/docs/cpp/uniform-initialization-and-delegating-constructors.md +++ /dev/null @@ -1,220 +0,0 @@ ---- -title: "Uniform Initialization and Delegating Constructors" -ms.date: "11/04/2016" -ms.assetid: aa4daa64-eaec-4a3c-ade4-d9325e31e9d4 ---- -# Uniform Initialization and Delegating Constructors - -In modern C++, you can use *brace initialization* for any type, without the equals sign. Also, you can use delegating constructors to simplify your code when you have multiple constructors that perform similar work. - -## Brace Initialization - -You can use brace initialization for any class, struct, or union. If a type has a default constructor, either implicitly or explicitly declared, you can use default brace initialization (with empty braces). For example, the following class may be initialized by using both default and non-default brace initialization: - -```cpp -#include -using namespace std; - -class class_a { -public: - class_a() {} - class_a(string str) : m_string{ str } {} - class_a(string str, double dbl) : m_string{ str }, m_double{ dbl } {} -double m_double; -string m_string; -}; - -int main() -{ - class_a c1{}; - class_a c1_1; - - class_a c2{ "ww" }; - class_a c2_1("xx"); - - // order of parameters is the same as the constructor - class_a c3{ "yy", 4.4 }; - class_a c3_1("zz", 5.5); -} -``` - -If a class has non-default constructors, the order in which class members appear in the brace initializer is the order in which the corresponding parameters appear in the constructor, not the order in which the members are declared (as with `class_a` in the previous example). Otherwise, if the type has no declared constructor, the order in which the members appear in the brace initializer is the same as the order in which they are declared; in this case, you can initialize as many of the public members as you wish, but you cannot skip any member. The following example shows the order that's used in brace initialization when there is no declared constructor: - -```cpp -class class_d { -public: - float m_float; - string m_string; - wchar_t m_char; -}; - -int main() -{ - class_d d1{}; - class_d d1{ 4.5 }; - class_d d2{ 4.5, "string" }; - class_d d3{ 4.5, "string", 'c' }; - - class_d d4{ "string", 'c' }; // compiler error - class_d d5("string", 'c', 2.0 }; // compiler error -} -``` - -If the default constructor is explicitly declared but marked as deleted, default brace initialization cannot be used: - -```cpp -class class_f { -public: - class_f() = delete; - class_f(string x): m_string { x } {} - string m_string; -}; -int main() -{ - class_f cf{ "hello" }; - class_f cf1{}; // compiler error C2280: attempting to reference a deleted function -} -``` - -You can use brace initialization anywhere you would typically do initialization—for example, as a function parameter or a return value, or with the **new** keyword: - -```cpp -class_d* cf = new class_d{4.5}; -kr->add_d({ 4.5 }); -return { 4.5 }; -``` - -## initializer_list Constructors - -The [initializer_list Class](../standard-library/initializer-list-class.md) represents a list of objects of a specified type that can be used in a constructor, and in other contexts. You can construct an initializer_list by using brace initialization: - -```cpp -initializer_list int_list{5, 6, 7}; -``` - -> [!IMPORTANT] -> To use this class, you must include the [\](../standard-library/initializer-list.md) header. - -An `initializer_list` can be copied. In this case, the members of the new list are references to the members of the original list: - -```cpp -initializer_list ilist1{ 5, 6, 7 }; -initializer_list ilist2( ilist1 ); -if (ilist1.begin() == ilist2.begin()) - cout << "yes" << endl; // expect "yes" -``` - -The standard library container classes, and also `string`, `wstring`, and `regex`, have `initializer_list` constructors. The following examples show how to do brace initialization with these constructors: - -```cpp -vector v1{ 9, 10, 11 }; -map m1{ {1, "a"}, {2, "b"} }; -string s{ 'a', 'b', 'c' }; -regex rgx{'x', 'y', 'z'}; -``` - -## Delegating Constructors - -Many classes have multiple constructors that do similar things—for example, validate parameters: - -```cpp -class class_c { -public: - int max; - int min; - int middle; - - class_c() {} - class_c(int my_max) { - max = my_max > 0 ? my_max : 10; - } - class_c(int my_max, int my_min) { - max = my_max > 0 ? my_max : 10; - min = my_min > 0 && my_min < max ? my_min : 1; - } - class_c(int my_max, int my_min, int my_middle) { - max = my_max > 0 ? my_max : 10; - min = my_min > 0 && my_min < max ? my_min : 1; - middle = my_middle < max && my_middle > min ? my_middle : 5; - } -}; -``` - -You could reduce the repetitive code by adding a function that does all of the validation, but the code for `class_c` would be easier to understand and maintain if one constructor could delegate some of the work to another one. To add delegating constructors, use the `constructor (. . .) : constructor (. . .)` syntax: - -```cpp -class class_c { -public: - int max; - int min; - int middle; - - class_c(int my_max) { - max = my_max > 0 ? my_max : 10; - } - class_c(int my_max, int my_min) : class_c(my_max) { - min = my_min > 0 && my_min < max ? my_min : 1; - } - class_c(int my_max, int my_min, int my_middle) : class_c (my_max, my_min){ - middle = my_middle < max && my_middle > min ? my_middle : 5; -} -}; -int main() { - - class_c c1{ 1, 3, 2 }; -} -``` - -As you step through the previous example, notice that the constructor `class_c(int, int, int)` first calls the constructor `class_c(int, int)`, which in turn calls `class_c(int)`. Each of the constructors performs only the work that is not performed by the other constructors. - -The first constructor that's called initializes the object so that all of its members are initialized at that point. You can’t do member initialization in a constructor that delegates to another constructor, as shown here: - -```cpp -class class_a { -public: - class_a() {} - // member initialization here, no delegate - class_a(string str) : m_string{ str } {} - - //can’t do member initialization here - // error C3511: a call to a delegating constructor shall be the only member-initializer - class_a(string str, double dbl) : class_a(str) , m_double{ dbl } {} - - // only member assignment - class_a(string str, double dbl) : class_a(str) { m_double = dbl; } - double m_double{ 1.0 }; - string m_string; -}; -``` - -The next example shows the use of non-static data-member initializers. Notice that if a constructor also initializes a given data member, the member initializer is overridden: - -```cpp -class class_a { -public: - class_a() {} - class_a(string str) : m_string{ str } {} - class_a(string str, double dbl) : class_a(str) { m_double = dbl; } - double m_double{ 1.0 }; - string m_string{ m_double < 10.0 ? "alpha" : "beta" }; -}; - -int main() { - class_a a{ "hello", 2.0 }; //expect a.m_double == 2.0, a.m_string == "hello" - int y = 4; -} -``` - -The constructor delegation syntax doesn't prevent the accidental creation of constructor recursion—Constructor1 calls Constructor2 which calls Constructor1—and no errors are thrown until there is a stack overflow. It's your responsibility to avoid cycles. - -```cpp -class class_f{ -public: - int max; - int min; - - // don't do this - class_f() : class_f(6, 3){ } - class_f(int my_max, int my_min) : class_f() { } -}; -``` \ No newline at end of file diff --git a/docs/cpp/unions.md b/docs/cpp/unions.md index 69453e3ee9..8465f8aea3 100644 --- a/docs/cpp/unions.md +++ b/docs/cpp/unions.md @@ -49,7 +49,7 @@ int main() { RecordType t; t.i = 5; // t holds an int - t.f = 7.25 // t now holds a float + t.f = 7.25; // t now holds a float } ``` diff --git a/docs/cpp/user-defined-literals-cpp.md b/docs/cpp/user-defined-literals-cpp.md index 0eb5b5e121..a93c743ed4 100644 --- a/docs/cpp/user-defined-literals-cpp.md +++ b/docs/cpp/user-defined-literals-cpp.md @@ -1,18 +1,18 @@ --- -title: "User-Defined Literals (C++)" -ms.date: "11/04/2016" +title: "User-defined literals (C++)" +ms.date: "12/10/2019" ms.assetid: ff4a5bec-f795-4705-a2c0-53788fd57609 --- -# User-Defined Literals (C++) +# User-defined literals -There are five major categories of literals: integer, character, floating-point, string, boolean and pointer. Starting in C++ 11 you can define your own literals based on these categories to provide syntactic shortcuts for common idioms and increase type safety. For example, let's say you have a Distance class. You could define a literal for kilometers and another one for miles, and encourage the user to be explicit about the units of measure by simply writing: auto d = 42.0_km or auto d = 42.0_mi. There is no performance advantage or disadvantage to user-defined literals; they are primarily for convenience or for compile-time type deduction. The Standard Library has user-defined literals for std:string, for std::complex, and for units in time and duration operations in the \ header: +There are five major categories of literals in C++: integer, character, floating-point, string, boolean and pointer. Starting in C++ 11 you can define your own literals based on these categories to provide syntactic shortcuts for common idioms and increase type safety. For example, let's say you have a Distance class. You could define a literal for kilometers and another one for miles, and encourage the user to be explicit about the units of measure by simply writing: auto d = 42.0_km or auto d = 42.0_mi. There is no performance advantage or disadvantage to user-defined literals; they are primarily for convenience or for compile-time type deduction. The Standard Library has user-defined literals for std:string, for std::complex, and for units in time and duration operations in the \ header: ```cpp Distance d = 36.0_mi + 42.0_km; // Custom UDL (see below) - std::string str = "hello"s + "World"s; // Standard Library UDL - complex num = - (2.0 + 3.01i) * (5.0 + 4.3i); // Standard Library UDL - auto duration = 15ms + 42h; // Standard Library UDLs +std::string str = "hello"s + "World"s; // Standard Library UDL +complex num = + (2.0 + 3.01i) * (5.0 + 4.3i); // Standard Library UDL +auto duration = 15ms + 42h; // Standard Library UDLs ``` ## User-defined literal operator signatures @@ -26,8 +26,8 @@ ReturnType operator "" _c(char); // Literal operator for use ReturnType operator "" _d(wchar_t); // Literal operator for user-defined CHARACTER literal ReturnType operator "" _e(char16_t); // Literal operator for user-defined CHARACTER literal ReturnType operator "" _f(char32_t); // Literal operator for user-defined CHARACTER literal -ReturnType operator "" _g(const char*, size_t); // Literal operator for user-defined STRING literal -ReturnType operator "" _h(const wchar_t*, size_t); // Literal operator for user-defined STRING literal +ReturnType operator "" _g(const char*, size_t); // Literal operator for user-defined STRING literal +ReturnType operator "" _h(const wchar_t*, size_t); // Literal operator for user-defined STRING literal ReturnType operator "" _i(const char16_t*, size_t); // Literal operator for user-defined STRING literal ReturnType operator "" _g(const char32_t*, size_t); // Literal operator for user-defined STRING literal ReturnType operator "" _r(const char*); // Raw literal operator @@ -220,4 +220,4 @@ operator "" _dump(const char32_t*, size_t): operator "" _dump_raw(const char*) : ===>42<=== operator "" _dump_raw(const char*) : ===>3.1415926<=== operator "" _dump_raw(const char*) : ===>3.14e+25<=== -``` \ No newline at end of file +``` diff --git a/docs/cpp/using-arrays-cpp.md b/docs/cpp/using-arrays-cpp.md deleted file mode 100644 index ce90cfba5d..0000000000 --- a/docs/cpp/using-arrays-cpp.md +++ /dev/null @@ -1,46 +0,0 @@ ---- -title: "Using Arrays (C++)" -ms.date: "11/04/2016" -helpviewer_keywords: ["arrays [C++]"] -ms.assetid: 7818a7fe-7e82-4881-a3d1-7d25162b7fc7 ---- -# Using Arrays (C++) - -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`. - -## See also - -[Arrays](../cpp/arrays-cpp.md) \ No newline at end of file diff --git a/docs/cpp/using-atexit.md b/docs/cpp/using-atexit.md deleted file mode 100644 index eff96153d0..0000000000 --- a/docs/cpp/using-atexit.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: "Using atexit" -ms.date: "11/04/2016" -f1_keywords: ["atexit"] -helpviewer_keywords: ["atexit function"] -ms.assetid: d28fda17-c3d4-4af6-ba44-f44886bbb237 ---- -# Using atexit - -With the [atexit](../c-runtime-library/reference/atexit.md) function, you can specify an exit-processing function that executes prior to program termination. No global static objects initialized prior to the call to **atexit** are destroyed prior to execution of the exit-processing function. - -## See also - -[Additional Termination Considerations](../cpp/additional-termination-considerations.md) \ No newline at end of file diff --git a/docs/cpp/using-declaration.md b/docs/cpp/using-declaration.md index 4351848316..6e20d8157d 100644 --- a/docs/cpp/using-declaration.md +++ b/docs/cpp/using-declaration.md @@ -1,12 +1,12 @@ --- -title: "using Declaration" +title: "using declaration" ms.date: "11/04/2016" -helpviewer_keywords: ["using declaration", "declaring namespaces, unqualified names in namespaces", "declarations [C++], using-declaration", "namespaces [C++], unqualified names in", "using keyword [C++]", "declarations [C++], namespaces"] +helpviewer_keywords: ["using declaration", "declarations [C++], using-declaration", "namespaces [C++], unqualified names in", "using keyword [C++]"] ms.assetid: 4184e2b1-3adc-408e-b5f3-0b3f8b554723 --- -# using Declaration +# using declaration -The using declaration introduces a name into the declarative region in which the using declaration appears. +The **using** declaration introduces a name into the declarative region in which the using declaration appears. ## Syntax diff --git a/docs/cpp/using-dllimport-and-dllexport-in-cpp-classes.md b/docs/cpp/using-dllimport-and-dllexport-in-cpp-classes.md index a0810bd0ad..56faa6ac13 100644 --- a/docs/cpp/using-dllimport-and-dllexport-in-cpp-classes.md +++ b/docs/cpp/using-dllimport-and-dllexport-in-cpp-classes.md @@ -6,7 +6,7 @@ ms.assetid: 8d7d1303-b9e9-47ca-96cc-67bf444a08a9 --- # Using dllimport and dllexport in C++ Classes -## Microsoft Specific +**Microsoft Specific** You can declare C++ classes with the **dllimport** or **dllexport** attribute. These forms imply that the entire class is imported or exported. Classes exported this way are called exportable classes. diff --git a/docs/cpp/using-exit-or-return.md b/docs/cpp/using-exit-or-return.md deleted file mode 100644 index e6acccc91a..0000000000 --- a/docs/cpp/using-exit-or-return.md +++ /dev/null @@ -1,65 +0,0 @@ ---- -title: "Using exit or return" -ms.date: "11/04/2016" -f1_keywords: ["Exit"] -helpviewer_keywords: ["exit function", "return keyword [C++], using for program termination"] -ms.assetid: b5136c5c-2505-4229-8691-2a1d6a98760b ---- -# Using exit or return - -When you call **exit** or execute a **return** statement from `main`, static objects are destroyed in the reverse order of their initialization. The following example shows how such initialization and cleanup works. - -## Example - -```cpp -// using_exit_or_return1.cpp -#include -class ShowData { -public: - // Constructor opens a file. - ShowData( const char *szDev ) { - errno_t err; - err = fopen_s(&OutputDev, szDev, "w" ); - } - - // Destructor closes the file. - ~ShowData() { fclose( OutputDev ); } - - // Disp function shows a string on the output device. - void Disp( char *szData ) { - fputs( szData, OutputDev ); - } -private: - FILE *OutputDev; -}; - -// Define a static object of type ShowData. The output device -// selected is "CON" -- the standard output device. -ShowData sd1 = "CON"; - -// Define another static object of type ShowData. The output -// is directed to a file called "HELLO.DAT" -ShowData sd2 = "hello.dat"; - -int main() { - sd1.Disp( "hello to default device\n" ); - sd2.Disp( "hello to file hello.dat\n" ); -} -``` - -In the preceding example, the static objects `sd1` and `sd2` are created and initialized before entry to `main`. After this program terminates using the **return** statement, first `sd2` is destroyed and then `sd1`. The destructor for the `ShowData` class closes the files associated with these static objects. - -Another way to write this code is to declare the `ShowData` objects with block scope, allowing them to be destroyed when they go out of scope: - -```cpp -int main() { - ShowData sd1, sd2( "hello.dat" ); - - sd1.Disp( "hello to default device\n" ); - sd2.Disp( "hello to file hello.dat\n" ); -} -``` - -## See also - -[Additional Termination Considerations](../cpp/additional-termination-considerations.md) \ No newline at end of file diff --git a/docs/cpp/using-wmain-instead-of-main.md b/docs/cpp/using-wmain-instead-of-main.md deleted file mode 100644 index 57a46b9d42..0000000000 --- a/docs/cpp/using-wmain-instead-of-main.md +++ /dev/null @@ -1,26 +0,0 @@ ---- -title: "Using wmain Instead of main" -ms.date: "11/04/2016" -f1_keywords: ["wmain"] -helpviewer_keywords: ["main function, vs. wmain", "wmain function"] -ms.assetid: 7abb1257-b85c-413a-b913-d45b1582a71d ---- -# Using wmain Instead of main - -## Microsoft Specific - -In the Unicode programming model, you can define a wide-character version of the `main` function. Use **wmain** instead of `main` if you want to write portable code that adheres to the Unicode specification. - -You declare formal parameters to **wmain** using a similar format to `main`. You can then pass wide-character arguments and, optionally, a wide-character environment pointer to the program. The *argv* and *envp* parameters to **wmain** are of type `wchar_t*`. - -If your program uses a `main` function, the multibyte-character environment is created by the operating system at program startup. A wide-character copy of the environment is created only when needed (for example, by a call to the [_wgetenv](../c-runtime-library/reference/getenv-wgetenv.md) or [_wputenv](../c-runtime-library/reference/putenv-wputenv.md) functions). On the first call to `_wputenv`, or on the first call to `_wgetenv` if an MBCS environment already exists, a corresponding wide-character string environment is created and is then pointed to by the `_wenviron` global variable, which is a wide-character version of the `_environ` global variable. At this point, two copies of the environment (MBCS and Unicode) exist simultaneously and are maintained by the operating system throughout the life of the program. - -Similarly, if your program uses a **wmain** function, an MBCS (ASCII) environment is created on the first call to `_putenv` or `getenv`, and is pointed to by the `_environ` global variable. - -For more information on the MBCS environment, see [Single-byte and Multibyte Character Sets](../c-runtime-library/single-byte-and-multibyte-character-sets.md) in the *Run-Time Library Reference.* - -**END Microsoft Specific** - -## See also - -[main: Program Startup](../cpp/main-program-startup.md) \ No newline at end of file diff --git a/docs/cpp/value-types-modern-cpp.md b/docs/cpp/value-types-modern-cpp.md index 9a2a5c9476..8bfbe8688d 100644 --- a/docs/cpp/value-types-modern-cpp.md +++ b/docs/cpp/value-types-modern-cpp.md @@ -1,16 +1,12 @@ --- -title: "Value Types (Modern C++)" -ms.date: "05/07/2019" +title: "C++ classes as value types" +ms.date: "11/19/2019" ms.topic: "conceptual" ms.assetid: f63bb62c-60da-40d5-ac14-4366608fe260 --- -# Value Types (Modern C++) +# C++ classes as value types -C++ classes are by default value types. This topic provides an introductory overview of value types and issues relating to their use. - -## Value vs. reference types - -As previously stated, C++ classes are by default value types. They can be specified as reference types, which enable polymorphic behavior to support object-oriented programming. Value types are sometimes viewed from the perspective of memory and layout control, whereas reference types are about base classes and virtual functions for polymorphic purposes. By default, value types are copyable, which means there is always a copy constructor and a copy assignment operator. For reference types, you make the class non-copyable (disable the copy constructor and copy assignment operator) and use a virtual destructor, which supports their intended polymorphism. Value types are also about the contents, which, when they are copied, always give you two independent values that can be modified separately. Reference types are about identity - what kind of object is it? For this reason, "reference types" are also referred to as "polymorphic types". +C++ classes are by default value types. They can be specified as reference types, which enable polymorphic behavior to support object-oriented programming. Value types are sometimes viewed from the perspective of memory and layout control, whereas reference types are about base classes and virtual functions for polymorphic purposes. By default, value types are copyable, which means there is always a copy constructor and a copy assignment operator. For reference types, you make the class non-copyable (disable the copy constructor and copy assignment operator) and use a virtual destructor, which supports their intended polymorphism. Value types are also about the contents, which, when they are copied, always give you two independent values that can be modified separately. Reference types are about identity - what kind of object is it? For this reason, "reference types" are also referred to as "polymorphic types". If you really want a reference-like type (base class, virtual functions), you need to explicitly disable copying, as shown in the `MyRefType` class in the following code. @@ -104,13 +100,9 @@ If you enable copy construction/assignment, also enable move construction/assign Some *non-value* types are move-only, such as when you can’t clone a resource, only transfer ownership. Example: `unique_ptr`. -## Section - -Content - ## See also -[C++ Type System (Modern C++)](../cpp/cpp-type-system-modern-cpp.md)
-[Welcome Back to C++ (Modern C++)](../cpp/welcome-back-to-cpp-modern-cpp.md)
+[C++ type system](../cpp/cpp-type-system-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/virtual-functions.md b/docs/cpp/virtual-functions.md index b68f8880a0..a9140f4cc1 100644 --- a/docs/cpp/virtual-functions.md +++ b/docs/cpp/virtual-functions.md @@ -1,6 +1,6 @@ --- title: "Virtual Functions" -ms.date: "11/04/2016" +ms.date: "09/10/2019" helpviewer_keywords: ["functions [C++], virtual functions", "derived classes [C++], virtual functions", "virtual functions"] ms.assetid: b3e1ed88-2a90-4af8-960a-16f47deb3452 --- @@ -21,6 +21,7 @@ using namespace std; class Account { public: Account( double d ) { _balance = d; } + virtual ~Account() {} virtual double GetBalance() { return _balance; } virtual void PrintBalance() { cerr << "Error. Balance not available for base type." << endl; } private: @@ -41,15 +42,15 @@ public: int main() { // Create objects of type CheckingAccount and SavingsAccount. - CheckingAccount *pChecking = new CheckingAccount( 100.00 ) ; - SavingsAccount *pSavings = new SavingsAccount( 1000.00 ); + CheckingAccount checking( 100.00 ); + SavingsAccount savings( 1000.00 ); // Call PrintBalance using a pointer to Account. - Account *pAccount = pChecking; + Account *pAccount = &checking; pAccount->PrintBalance(); // Call PrintBalance using a pointer to Account. - pAccount = pSavings; + pAccount = &savings; pAccount->PrintBalance(); } ``` @@ -121,8 +122,6 @@ int main() { } ``` -### Output - ```Output Derived::NameOf Invoked by Base @@ -150,4 +149,4 @@ Account *pAccount = pChecking; // Call Account::PrintBalance pAccount->Account::PrintBalance(); // Explicit qualification. ``` -Both calls to `PrintBalance` in the preceding example suppress the virtual function-call mechanism. \ No newline at end of file +Both calls to `PrintBalance` in the preceding example suppress the virtual function-call mechanism. diff --git a/docs/cpp/void-cpp.md b/docs/cpp/void-cpp.md index 88816c97d2..b84169adee 100644 --- a/docs/cpp/void-cpp.md +++ b/docs/cpp/void-cpp.md @@ -7,13 +7,13 @@ ms.assetid: d203edba-38e6-4056-8b89-011437351057 --- # void (C++) -When used as a function return type, the **void** keyword specifies that the function does not return a value. When used for a function's parameter list, void specifies that the function takes no parameters. When used in the declaration of a pointer, void specifies that the pointer is "universal." +When used as a function return type, the **void** keyword specifies that the function does not return a value. When used for a function's parameter list, **void** specifies that the function takes no parameters. When used in the declaration of a pointer, **void** specifies that the pointer is "universal." -If a pointer's type is `void *`, the pointer can point to any variable that is not declared with the **const** or **volatile** keyword. A void pointer cannot be dereferenced unless it is cast to another type. A void pointer can be converted into any other type of data pointer. +If a pointer's type is **void\***, the pointer can point to any variable that is not declared with the **const** or **volatile** keyword. A **void\*** pointer cannot be dereferenced unless it is cast to another type. A **void\*** pointer can be converted into any other type of data pointer. -A void pointer can point to a function, but not to a class member in C++. +A **void** pointer can point to a function, but not to a class member in C++. -You cannot declare a variable of type void. +You cannot declare a variable of type **void**. ## Example @@ -32,4 +32,4 @@ int main() { ## 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/volatile-cpp.md b/docs/cpp/volatile-cpp.md index 2bd508304d..1f9184a484 100644 --- a/docs/cpp/volatile-cpp.md +++ b/docs/cpp/volatile-cpp.md @@ -43,7 +43,7 @@ If you are familiar with the C# volatile keyword, or familiar with the behavior ## End of ISO Compliant -## Microsoft Specific +**Microsoft Specific** When the **/volatile:ms** compiler option is used—by default when architectures other than ARM are targeted—the compiler generates extra code to maintain ordering among references to volatile objects in addition to maintaining ordering to references to other global objects. In particular: diff --git a/docs/cpp/w64.md b/docs/cpp/w64.md index 46fdecdedf..bfb34dc06a 100644 --- a/docs/cpp/w64.md +++ b/docs/cpp/w64.md @@ -7,9 +7,7 @@ ms.assetid: b9d0c820-e132-40bc-b532-56edca132a6c --- # __w64 -**Microsoft Specific** - -This keyword is obsolete. In versions of Visual Studio earlier than Visual Studio 2013, this lets you mark variables, so that when you compile with [/Wp64](../build/reference/wp64-detect-64-bit-portability-issues.md) the compiler will report any warnings that would be reported if you were compiling with a 64-bit compiler. +This Microsoft-specific keyword is obsolete. In versions of Visual Studio earlier than Visual Studio 2013, this lets you mark variables, so that when you compile with [/Wp64](../build/reference/wp64-detect-64-bit-portability-issues.md) the compiler will report any warnings that would be reported if you were compiling with a 64-bit compiler. ## Syntax diff --git a/docs/cpp/welcome-back-to-cpp-modern-cpp.md b/docs/cpp/welcome-back-to-cpp-modern-cpp.md index e44b538d38..b22ad7a3e8 100644 --- a/docs/cpp/welcome-back-to-cpp-modern-cpp.md +++ b/docs/cpp/welcome-back-to-cpp-modern-cpp.md @@ -1,129 +1,216 @@ --- -title: "Welcome Back to C++ (Modern C++)" -ms.date: "11/04/2016" +title: "Welcome back to C++ - Modern C++" +description: "Describes the new programming idioms in Modern C++ and their rationale." +ms.date: "01/10/2020" ms.topic: "conceptual" ms.assetid: 1cb1b849-ed9c-4721-a972-fd8f3dab42e2 --- -# Welcome Back to C++ (Modern C++) +# Welcome back to C++ - Modern C++ -C++ is one of the most widely used programming languages in the world. Well-written C++ programs are fast and efficient. The language is more flexible than other languages because you can use it to create a wide range of apps—from fun and exciting games, to high-performance scientific software, to device drivers, embedded programs, and Windows client apps. For more than 20 years, C++ has been used to solve problems like these and many others. What you might not know is that an increasing number of C++ programmers have folded up the dowdy C-style programming of yesterday and have donned modern C++ instead. +Since its creation, C++ has become one of the most widely used programming languages in the world. Well-written C++ programs are fast and efficient. The language is more flexible than other languages: It can work at the highest levels of abstraction, and down at the level of the silicon. C++ supplies highly optimized standard libraries. It enables access to low-level hardware features, to maximize speed and minimize memory requirements. Using C++, you can create a wide range of apps. Games, device drivers, and high-performance scientific software. Embedded programs. Windows client apps. Even libraries and compilers for other programming languages get written in C++. -One of the original requirements for C++ was backward compatibility with the C language. Since then, C++ has evolved through several iterations—C with Classes, then the original C++ language specification, and then the many subsequent enhancements. Because of this heritage, C++ is often referred to as a multi-paradigm programming language. In C++, you can do purely procedural C-style programming that involves raw pointers, arrays, null-terminated character strings, custom data structures, and other features that may enable great performance but can also spawn bugs and complexity. Because C-style programming is fraught with perils like these, one of the founding goals for C++ was to make programs both type-safe and easier to write, extend, and maintain. Early on, C++ embraced programming paradigms such as object-oriented programming. Over the years, features have been added to the language, together with highly-tested standard libraries of data structures and algorithms. It's these additions that have made the modern C++ style possible. +One of the original requirements for C++ was backward compatibility with the C language. As a result, C++ has always permitted C-style programming, with raw pointers, arrays, null-terminated character strings, and other features. They may enable great performance, but can also spawn bugs and complexity. The evolution of C++ has emphasized features that greatly reduce the need to use C-style idioms. The old C-programming facilities are there when you need them, but with modern C++ code you should need them less and less. Modern C++ code is simpler, safer, more elegant, and still as fast as ever. -Modern C++ emphasizes: +The following sections provide an overview of the main features of modern C++. Unless noted otherwise, the features listed here are available in C++11 and later. In the Microsoft C++ compiler, you can set the [/std](../build/reference/std-specify-language-standard-version.md) compiler option to specify which version of the standard to use for your project. -- Stack-based scope instead of heap or static global scope. +## Resources and smart pointers -- Auto type inference instead of explicit type names. +One of the major classes of bugs in C-style programming is the *memory leak*. Leaks are often caused by a failure to call **delete** for memory that was allocated with **new**. Modern C++ emphasizes the principle of *resource acquisition is initialization* (RAII). The idea is simple. Resources (heap memory, file handles, sockets, and so on) should be *owned* by an object. That object creates, or receives, the newly allocated resource in its constructor, and deletes it in its destructor. The principle of RAII guarantees that all resources get properly returned to the operating system when the owning object goes out of scope. -- Smart pointers instead of raw pointers. +To support easy adoption of RAII principles, the C++ Standard Library provides three smart pointer types: [std::unique_ptr](../standard-library/unique-ptr-class.md), [std::shared_ptr](../standard-library/shared-ptr-class.md), and [std::weak_ptr](../standard-library/weak-ptr-class.md). A smart pointer handles the allocation and deletion of the memory it owns. The following example shows a class with an array member that is allocated on the heap in the call to `make_unique()`. The calls to **new** and **delete** are encapsulated by the `unique_ptr` class. When a `widget` object goes out of scope, the unique_ptr destructor will be invoked and it will release the memory that was allocated for the array. -- `std::string` and `std::wstring` types (see [\](../standard-library/string.md)) instead of raw `char[]` arrays. +```cpp +#include +class widget +{ +private: + std::unique_ptr data; +public: + widget(const int size) { data = std::make_unique(size); } + void do_something() {} +}; + +void functionUsingWidget() { + widget w(1000000); // lifetime automatically tied to enclosing scope + // constructs w, including the w.data gadget member + // ... + w.do_something(); + // ... +} // automatic destruction and deallocation for w and w.data + +``` -- [C++ Standard Library](../standard-library/cpp-standard-library-header-files.md) containers like `vector`, `list`, and `map` instead of raw arrays or custom containers. See [\](../standard-library/vector.md), [\](../standard-library/list.md), and [\](../standard-library/map.md). +Whenever possible, use a smart pointer when allocating heap memory. If you must use the new and delete operators explicitly, follow the principle of RAII. For more information, see [Object lifetime and resource management (RAII)](object-lifetime-and-resource-management-modern-cpp.md). -- C++ Standard Library [algorithms](../standard-library/algorithm.md) instead of manually coded ones. +## std::string and std::string_view -- Exceptions, to report and handle error conditions. +C-style strings are another major source of bugs. By using [std::string and std::wstring](../standard-library/basic-string-class.md), you can eliminate virtually all the errors associated with C-style strings. You also gain the benefit of member functions for searching, appending, prepending, and so on. Both are highly optimized for speed. When passing a string to a function that requires only read-only access, in C++17 you can use [std::string_view](../standard-library/basic-string-view-class.md) for even greater performance benefit. -- Lock-free inter-thread communication using C++ Standard Library `std::atomic<>` (see [\](../standard-library/atomic.md)) instead of other inter-thread communication mechanisms. +## std::vector and other Standard Library containers -- Inline [lambda functions](../cpp/lambda-expressions-in-cpp.md) instead of small functions implemented separately. +The Standard Library containers all follow the principle of RAII. They provide iterators for safe traversal of elements. And, they're highly optimized for performance and have been thoroughly tested for correctness. By using these containers, you eliminate the potential for bugs or inefficiencies that might be introduced in custom data structures. Instead of raw arrays, use [vector](../standard-library/vector-class.md) as a sequential container in C++. -- Range-based for loops to write more robust loops that work with arrays, C++ Standard Library containers, and Windows Runtime collections in the form `for ( for-range-declaration : expression )`. This is part of the Core Language support. For more information, see [Range-based for Statement (C++)](../cpp/range-based-for-statement-cpp.md). +```cpp +vector apples; +apples.push_back("Granny Smith"); +``` -The C++ language itself has also evolved. Compare the following code snippets. This one shows how things used to be in C++: +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 and multi cases. ```cpp -#include +map apple_color; +// ... +apple_color["Granny Smith"] = "Green"; +``` -void f() -{ - // Assume circle and shape are user-defined types - circle* p = new circle( 42 ); - vector v = load_shapes(); +When performance optimization is needed, consider using: - for( vector::iterator i = v.begin(); i != v.end(); ++i ) { - if( *i && **i == *p ) - cout << **i << " is a match\n"; - } +- The [array](../standard-library/array-class-stl.md) type when embedding is important, for example, as a class member. - // CAUTION: If v's pointers own the objects, then you - // must delete them all before v goes out of scope. - // If v's pointers do not own the objects, and you delete - // them here, any code that tries to dereference copies - // of the pointers will cause null pointer exceptions. - for( vector::iterator i = v.begin(); - i != v.end(); ++i ) { - delete *i; // not exception safe - } +- 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. - // Don't forget to delete this, too. - delete p; -} // end f() +- 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). + +## Standard Library algorithms + +Before you assume that you need to write a custom algorithm for your program, first review the C++ Standard Library [algorithms](../standard-library/algorithm.md). The Standard Library contains an ever-growing assortment of algorithms for many common operations such as searching, sorting, filtering, and randomizing. The math library is extensive. Starting in C++17, parallel versions of many algorithms are provided. + +Here are some important examples: + +- **for_each**, the default traversal algorithm (along with range-based for loops). + +- **transform**, for not-in-place modification of container elements + +- **find_if**, 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 ); ``` -Here's how the same thing is accomplished in modern C++: +## auto instead of explicit type names + +C++11 introduced the [auto](auto-cpp.md) keyword for use in variable, function, and template declarations. **auto** tells the compiler to deduce the type of the object so that you don't have to type it explicitly. **auto** is especially useful when the deduced type is a nested template: ```cpp -#include +map>::iterator i = m.begin(); // C-style +auto i = m.begin(); // modern C++ +``` + +## Range-based for loops + +C-style iteration over arrays and containers is prone to indexing errors and is also tedious to type. To eliminate these errors, and make your code more readable, use range-based for loops with both Standard Library containers and raw arrays. For more information, see [Range-based for statement](../cpp/range-based-for-statement-cpp.md). + +```cpp +#include #include -void f() +int main() { - // ... - auto p = make_shared( 42 ); - vector> v = load_shapes(); + std::vector v {1,2,3}; - for( auto& s : v ) + // C-style + for(int i = 0; i < v.size(); ++i) { - if( s && *s == *p ) - { - cout << *s << " is a match\n"; - } + std::cout << v[i]; + } + + // Modern C++: + for(auto& num : v) + { + std::cout << num; } } ``` -In modern C++, you don't have to use new/delete or explicit exception handling because you can use smart pointers instead. When you use the **auto** type deduction and [lambda function](../cpp/lambda-expressions-in-cpp.md), you can write code quicker, tighten it, and understand it better. And a range-based **for** loop is cleaner, easier to use, and less prone to unintended errors than a C-style **for** loop. You can use boilerplate together with minimal lines of code to write your app. And you can make that code exception-safe and memory-safe, and have no allocation/deallocation or error codes to deal with. +## constexpr expressions instead of macros -Modern C++ incorporates two kinds of polymorphism: compile-time, through templates, and run-time, through inheritance and virtualization. You can mix the two kinds of polymorphism to great effect. The C++ Standard Library template `shared_ptr` uses internal virtual methods to accomplish its apparently effortless type erasure. But don't over-use virtualization for polymorphism when a template is the better choice. Templates can be very powerful. +Macros in C and C++ are tokens that are processed by the preprocessor before compilation. Each instance of a macro token is replaced with its defined value or expression before the file is compiled. Macros are commonly used in C-style programming to define compile-time constant values. However, macros are error-prone and difficult to debug. In modern C++, you should prefer [constexpr](constexpr-cpp.md) variables for compile-time constants: -If you're coming to C++ from another language, especially from a managed language in which most of the types are reference types and very few are value types, know that C++ classes are value types by default. But you can specify them as reference types to enable polymorphic behavior that supports object-oriented programming. A helpful perspective: value types are more about memory and layout control, reference types are more about base classes and virtual functions to support polymorphism. By default, value types are copyable—they each have a copy constructor and a copy assignment operator. When you specify a reference type, make the class non-copyable—disable the copy constructor and copy assignment operator—and use a virtual destructor, which supports the polymorphism. Value types are also about the contents, which, when they are copied, give you two independent values that you can modify separately. But reference types are about identity—what kind of object it is—and for this reason are sometimes referred to as polymorphic types. +```cpp +#define SIZE 10 / C-style +constexpr int size = 10; // modern C++ +``` -C++ is experiencing a renaissance because power is king again. Languages like Java and C# are good when programmer productivity is important, but they show their limitations when power and performance are paramount. For high efficiency and power, especially on devices that have limited hardware, nothing beats modern C++. +### Uniform initialization -Not only the language is modern, the development tools are, too. Visual Studio makes all parts of the development cycle robust and efficient. It includes Application Lifecycle Management (ALM) tools, IDE enhancements like IntelliSense, tool-friendly mechanisms like XAML, and building, debugging, and many other tools. +In modern C++, you can use brace initialization for any type. This form of initialization is especially convenient when initializing arrays, vectors, or other containers. In the following example, `v2` is initialized with three instances of `S`. `v3` is initialized with three instances of `S` that are themselves initialized using braces. The compiler infers the type of each element based on the declared type of `v3`. -The articles in this part of the documentation provide high-level guidelines and best practices for the most important features and techniques for writing modern C++ programs. +```cpp +#include -- [C++ Type System](../cpp/cpp-type-system-modern-cpp.md) +struct S +{ + std::string name; + float num; + S(std::string s, float f) : name(s), num(f) {} +}; + +int main() +{ + // C-style initialization + std::vector v; + S s1("Norah", 2.7); + S s2("Frank", 3.5); + S s3("Jeri", 85.9); + + v.push_back(s1); + v.push_back(s2); + v.push_back(s3); -- [Uniform Initialization and Delegating Constructors](../cpp/uniform-initialization-and-delegating-constructors.md) + // Modern C++: + std::vector v2 {s1, s2, s3}; -- [Object Lifetime And Resource Management](../cpp/object-lifetime-and-resource-management-modern-cpp.md) + // or... + std::vector v3{ {"Norah", 2.7}, {"Frank", 3.5}, {"Jeri", 85.9} }; + +} +``` -- [Objects Own Resources (RAII)](../cpp/objects-own-resources-raii.md) +For more information, see [Brace initialization](initializing-classes-and-structs-without-constructors-cpp.md). -- [Smart Pointers](../cpp/smart-pointers-modern-cpp.md) +## Move semantics + +Modern C++ provides *move semantics*, which make it possible to eliminate unnecessary memory copies. In earlier versions of the language, copies were unavoidable in certain situations. A *move* operation transfers ownership of a resource from one object to the next without making a copy. When implementing a class that owns a resource (such as heap memory, file handles, and so on), you can define a *move constructor* and *move assignment operator* for it. The compiler will choose these special members during overload resolution in situations where a copy isn't needed. The Standard Library container types invoke the move constructor on objects if one is defined. For more information, see [Move Constructors and Move Assignment Operators (C++)](move-constructors-and-move-assignment-operators-cpp.md). + +## Lambda expressions + +In C-style programming, a function can be passed to another function by using a *function pointer*. Function pointers are inconvenient to maintain and understand. The function they refer to may be defined elsewhere in the source code, far away from the point at which it's invoked. Also, they're not type-safe. Modern C++ provides *function objects*, classes that override the [()](function-call-operator-parens.md) operator, which enables them to be called like a function. The most convenient way to create function objects is with inline [lambda expressions](../cpp/lambda-expressions-in-cpp.md). The following example shows how to use a lambda expression to pass a function object, that the `for_each` function will invoke on each element in the vector: + +```cpp + std::vector v {1,2,3,4,5}; + int x = 2; + int y = 4; + auto result = find_if(begin(v), end(v), [=](int i) { return i > x && i < y; }); +``` -- [Pimpl For Compile-Time Encapsulation](../cpp/pimpl-for-compile-time-encapsulation-modern-cpp.md) +The lambda expression `[=](int i) { return i > x && i < y; }` can be read as "function that takes a single argument of type `int` and returns a boolean that indicates whether the argument is greater than `x` and less than `y`." Notice that the variables `x` and `y` from the surrounding context can be used in the lambda. The `[=]` specifies that those variables are *captured* by value; in other words, the lambda expression has its own copies of those values. -- [Containers](../cpp/containers-modern-cpp.md) +## Exceptions -- [Algorithms](../cpp/algorithms-modern-cpp.md) +Modern C++ emphasizes exceptions rather than error codes as the best way to report and handle error conditions. For more information, see [Modern C++ best practices for exceptions and error handling](errors-and-exception-handling-modern-cpp.md). -- [String and I/O Formatting (Modern C++)](../cpp/string-and-i-o-formatting-modern-cpp.md) +## std::atomic -- [Errors and Exception Handling](../cpp/errors-and-exception-handling-modern-cpp.md) +Use the C++ Standard Library [std::atomic](../standard-library/atomic-structure.md) struct and related types for inter-thread communication mechanisms. -- [Portability At ABI Boundaries](../cpp/portability-at-abi-boundaries-modern-cpp.md) +## std::variant (C++17) -For more information, see the Stack Overflow article [Which C++ idioms are deprecated in C++11](https://stackoverflow.com/questions/9299101/which-c-idioms-are-deprecated-in-c11). +Unions are commonly used in C-style programming to conserve memory by enabling members of different types to occupy the same memory location. However, unions aren't type-safe and are prone to programming errors. C++17 introduces the [std::variant](../standard-library/variant-class.md) class as a more robust and safe alternative to unions. The [std::visit](../standard-library/variant-functions.md#visit) function can be used to access the members of a `variant` type in a type-safe manner. ## See also -[C++ Language Reference](../cpp/cpp-language-reference.md)
-[Lambda Expressions](../cpp/lambda-expressions-in-cpp.md)
-[C++ Standard Library](../standard-library/cpp-standard-library-reference.md)
-[Visual C++ language conformance](../overview/visual-cpp-language-conformance.md) \ No newline at end of file +[C++ Language Reference](../cpp/cpp-language-reference.md)\ +[Lambda Expressions](../cpp/lambda-expressions-in-cpp.md)\ +[C++ Standard Library](../standard-library/cpp-standard-library-reference.md)\ +[Microsoft C++ language conformance table](../overview/visual-cpp-language-conformance.md) diff --git a/docs/cpp/wildcard-expansion.md b/docs/cpp/wildcard-expansion.md deleted file mode 100644 index 523479fffd..0000000000 --- a/docs/cpp/wildcard-expansion.md +++ /dev/null @@ -1,20 +0,0 @@ ---- -title: "Wildcard Expansion" -ms.date: "11/04/2016" -f1_keywords: ["_setargv"] -helpviewer_keywords: ["asterisk wildcard", "_setargv function", "command line [C++], processing arguments", "command line [C++], wildcards", "command-line wildcards", "question mark, wildcard"] -ms.assetid: 1a543398-607b-4404-93d1-45d290bde638 ---- -# Wildcard Expansion - -## Microsoft Specific - -You can use wildcards — the question mark (?) and asterisk (*) — to specify filename and path arguments on the command-line. - -Command-line arguments are handled by a routine called `_setargv` (or `_wsetargv` in the wide-character environment), which by default does not expand wildcards into separate strings in the `argv` string array. For more information on enabling wildcard expansion, refer to [Expanding Wildcard Arguments](../c-language/expanding-wildcard-arguments.md). - -**END Microsoft Specific** - -## See also - -[main: Program Startup](../cpp/main-program-startup.md) \ No newline at end of file diff --git a/docs/cpp/writing-an-exception-filter.md b/docs/cpp/writing-an-exception-filter.md index b119a1314c..7d6fdda07f 100644 --- a/docs/cpp/writing-an-exception-filter.md +++ b/docs/cpp/writing-an-exception-filter.md @@ -1,10 +1,10 @@ --- -title: "Writing an Exception Filter" +title: "Writing an exception filter" ms.date: "11/04/2016" helpviewer_keywords: ["exception handling [C++], filters"] ms.assetid: 47fc832b-a707-4422-b60a-aaefe14189e5 --- -# Writing an Exception Filter +# Writing an exception filter You can handle an exception either by jumping to the level of the exception handler or by continuing execution. Instead of using the exception handler code to handle the exception and falling through, you can use *filter* to clean up the problem and then, by returning -1, resume normal flow without clearing the stack. @@ -72,5 +72,5 @@ __except( nCode = GetExceptionCode(), nCode == STATUS_INTEGER_OVERFLOW ) ## See also -[Writing an Exception Handler](../cpp/writing-an-exception-handler.md)
+[Writing an exception handler](../cpp/writing-an-exception-handler.md)
[Structured Exception Handling (C/C++)](../cpp/structured-exception-handling-c-cpp.md) \ No newline at end of file diff --git a/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.cpp b/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.cpp index 08a6a1200f..6b64f1f882 100644 --- a/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.cpp +++ b/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.cpp @@ -30,8 +30,8 @@ using namespace Windows::UI::Xaml::Navigation; /// App::App() { - InitializeComponent(); - Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending); + InitializeComponent(); + Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending); } /// @@ -42,19 +42,19 @@ App::App() /// Details about the launch request and process. void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs) { - if (pArgs->PreviousExecutionState == ApplicationExecutionState::Terminated) - { - //TODO: Load state from previously suspended application - } + if (pArgs->PreviousExecutionState == ApplicationExecutionState::Terminated) + { + //TODO: Load state from previously suspended application + } - // Create a Frame to act navigation context and navigate to the first page - auto rootFrame = ref new Frame(); - TypeName pageType = { MainPage::typeid->FullName, TypeKind::Metadata }; - rootFrame->Navigate(pageType); + // Create a Frame to act navigation context and navigate to the first page + auto rootFrame = ref new Frame(); + TypeName pageType = { MainPage::typeid->FullName, TypeKind::Metadata }; + rootFrame->Navigate(pageType); - // Place the frame in the current Window and ensure that it is active - Window::Current->Content = rootFrame; - Window::Current->Activate(); + // Place the frame in the current Window and ensure that it is active + Window::Current->Content = rootFrame; + Window::Current->Activate(); } /// @@ -66,5 +66,5 @@ void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEvent /// Details about the suspend request. void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e) { - //TODO: Save application state and stop any background activity + //TODO: Save application state and stop any background activity } diff --git a/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.h b/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.h index 0cf423c501..d9170a4af3 100644 --- a/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.h +++ b/docs/cppcx/codesnippet/CPP/clientapp/app.xaml.h @@ -10,16 +10,16 @@ namespace ClientApp { - /// - /// Provides application-specific behavior to supplement the default Application class. - /// - ref class App sealed - { - public: - App(); - virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs) override; + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + ref class App sealed + { + public: + App(); + virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ pArgs) override; - private: - void OnSuspending(Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ e); - }; + private: + void OnSuspending(Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ e); + }; } diff --git a/docs/cppcx/codesnippet/CPP/clientapp/mainpage.xaml.h b/docs/cppcx/codesnippet/CPP/clientapp/mainpage.xaml.h index 18b342c10a..d6431ddadd 100644 --- a/docs/cppcx/codesnippet/CPP/clientapp/mainpage.xaml.h +++ b/docs/cppcx/codesnippet/CPP/clientapp/mainpage.xaml.h @@ -10,33 +10,33 @@ namespace ClientApp { - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// - public ref class MainPage sealed - { - public: - MainPage(); - - protected: - virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + public ref class MainPage sealed + { + public: + MainPage(); + + protected: + virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; private: void Button_Click_1(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); DelegatesEvents::Class1^ obj; }; public ref class TestRefClass sealed - { - public: + { + public: TestRefClass(){} - property int Num; - }; + property int Num; + }; public value class TestValueClass sealed - { + { public: - int Num; - }; + int Num; + }; } diff --git a/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp b/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp index 1027d98bd7..cdc05a2c21 100644 --- a/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp +++ b/docs/cppcx/codesnippet/CPP/cppcx_strings/class1.cpp @@ -8,7 +8,7 @@ using namespace Strings; // using namespace Platform; String^ str = L"hello"; -void main(){} +int main(){} // diff --git a/docs/cppcx/codesnippet/CPP/cx_attributes/class1.h b/docs/cppcx/codesnippet/CPP/cx_attributes/class1.h index 8cb30ac088..168079b41d 100644 --- a/docs/cppcx/codesnippet/CPP/cx_attributes/class1.h +++ b/docs/cppcx/codesnippet/CPP/cx_attributes/class1.h @@ -11,10 +11,10 @@ namespace cx_attributes // [Windows::Foundation::Metadata::WebHostHiddenAttribute] public ref class MyCustomAttribute sealed : Platform::Metadata::Attribute { - public: - int Num; - Platform::String^ Msg; - }; + public: + int Num; + Platform::String^ Msg; + }; [MyCustomAttribute(Num=5, Msg="Hello")] public ref class Class1 sealed diff --git a/docs/cppcx/codesnippet/CPP/cx_properties/class1.h b/docs/cppcx/codesnippet/CPP/cx_properties/class1.h index 0bbf48cd09..6426632b3d 100644 --- a/docs/cppcx/codesnippet/CPP/cx_properties/class1.h +++ b/docs/cppcx/codesnippet/CPP/cx_properties/class1.h @@ -17,7 +17,7 @@ namespace cx_properties Platform::String^ m_doctor; int quantity; public: - Prescription(Platform::String^ name, Platform::String^ d) : m_doctor(d) + Prescription(Platform::String^ name, Platform::String^ d) : m_doctor(d) { // Trivial properties can't be initialized in member list. Name = name; @@ -47,19 +47,19 @@ namespace cx_properties } }; - public ref class PropertyConsumer sealed - { - private: - void GetPrescriptions() - { - Prescription^ p = ref new Prescription("Louis", "Dr. Who"); - p->Quantity = 5; - Platform::String^ s = p->Doctor; - int32 i = p->Quantity; + public ref class PropertyConsumer sealed + { + private: + void GetPrescriptions() + { + Prescription^ p = ref new Prescription("Louis", "Dr. Who"); + p->Quantity = 5; + Platform::String^ s = p->Doctor; + int32 i = p->Quantity; - Prescription p2("JR", "Dr. Dat"); - p2.Quantity = 10; - } - }; - // + Prescription p2("JR", "Dr. Dat"); + p2.Quantity = 10; + } + }; + // } \ No newline at end of file diff --git a/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.cpp b/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.cpp index 9797f7ed35..e6631fe7da 100644 --- a/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.cpp +++ b/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.cpp @@ -30,8 +30,8 @@ using namespace Windows::UI::Xaml::Navigation; /// App::App() { - InitializeComponent(); - Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending); + InitializeComponent(); + Suspending += ref new SuspendingEventHandler(this, &App::OnSuspending); } /// @@ -42,29 +42,29 @@ App::App() /// Details about the launch request and process. void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args) { - // Do not repeat app initialization when already running, just ensure that - // the window is active - if (args->PreviousExecutionState == ApplicationExecutionState::Running) - { - Window::Current->Activate(); - return; - } + // Do not repeat app initialization when already running, just ensure that + // the window is active + if (args->PreviousExecutionState == ApplicationExecutionState::Running) + { + Window::Current->Activate(); + return; + } - if (args->PreviousExecutionState == ApplicationExecutionState::Terminated) - { - //TODO: Load state from previously suspended application - } + if (args->PreviousExecutionState == ApplicationExecutionState::Terminated) + { + //TODO: Load state from previously suspended application + } - // Create a Frame to act navigation context and navigate to the first page - auto rootFrame = ref new Frame(); - if (!rootFrame->Navigate(TypeName(MainPage::typeid))) - { - throw ref new FailureException("Failed to create initial page"); - } + // Create a Frame to act navigation context and navigate to the first page + auto rootFrame = ref new Frame(); + if (!rootFrame->Navigate(TypeName(MainPage::typeid))) + { + throw ref new FailureException("Failed to create initial page"); + } - // Place the frame in the current Window and ensure that it is active - Window::Current->Content = rootFrame; - Window::Current->Activate(); + // Place the frame in the current Window and ensure that it is active + Window::Current->Content = rootFrame; + Window::Current->Activate(); } /// @@ -76,8 +76,8 @@ void App::OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEvent /// Details about the suspend request. void App::OnSuspending(Object^ sender, SuspendingEventArgs^ e) { - (void) sender; // Unused parameter - (void) e; // Unused parameter + (void) sender; // Unused parameter + (void) e; // Unused parameter - //TODO: Save application state and stop any background activity + //TODO: Save application state and stop any background activity } diff --git a/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.h b/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.h index c6aa8ffe2e..c40bf36b0f 100644 --- a/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.h +++ b/docs/cppcx/codesnippet/CPP/eventsupportinvs/app.xaml.h @@ -9,16 +9,16 @@ namespace EventSupportinVS { - /// - /// Provides application-specific behavior to supplement the default Application class. - /// - ref class App sealed - { - public: - App(); - virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args) override; + /// + /// Provides application-specific behavior to supplement the default Application class. + /// + ref class App sealed + { + public: + App(); + virtual void OnLaunched(Windows::ApplicationModel::Activation::LaunchActivatedEventArgs^ args) override; - private: - void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ e); - }; + private: + void OnSuspending(Platform::Object^ sender, Windows::ApplicationModel::SuspendingEventArgs^ e); + }; } diff --git a/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.cpp b/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.cpp index 129f44a236..030dea286b 100644 --- a/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.cpp +++ b/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.cpp @@ -23,7 +23,7 @@ using namespace Windows::UI::Xaml::Navigation; MainPage::MainPage() { - InitializeComponent(); + InitializeComponent(); } /// @@ -33,7 +33,7 @@ MainPage::MainPage() /// property is typically used to configure the page. void MainPage::OnNavigatedTo(NavigationEventArgs^ e) { - (void) e; // Unused parameter + (void) e; // Unused parameter } diff --git a/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.h b/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.h index 6268540ee9..38a920e8be 100644 --- a/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.h +++ b/docs/cppcx/codesnippet/CPP/eventsupportinvs/mainpage.xaml.h @@ -9,17 +9,17 @@ namespace EventSupportinVS { - /// - /// An empty page that can be used on its own or navigated to within a Frame. - /// - [Windows::Foundation::Metadata::WebHostHidden] - public ref class MainPage sealed - { - public: - MainPage(); + /// + /// An empty page that can be used on its own or navigated to within a Frame. + /// + [Windows::Foundation::Metadata::WebHostHidden] + public ref class MainPage sealed + { + public: + MainPage(); - protected: - virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; + protected: + virtual void OnNavigatedTo(Windows::UI::Xaml::Navigation::NavigationEventArgs^ e) override; private: void Button_Click_1(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); }; diff --git a/docs/cppcx/codesnippet/CPP/js-array/class1.cpp b/docs/cppcx/codesnippet/CPP/js-array/class1.cpp index fa4ff52818..808e5bbb21 100644 --- a/docs/cppcx/codesnippet/CPP/js-array/class1.cpp +++ b/docs/cppcx/codesnippet/CPP/js-array/class1.cpp @@ -154,7 +154,7 @@ ref class DateTracker sealed void DoSomething() { Windows::Foundation::Uri msdn("http://www.msdn.microsoft.com"); - Windows::Foundation::Uri^ devCenter = msdn.CombineUri("/windows/"); + Windows::Foundation::Uri^ devCenter = msdn.CombineUri("/windows/"); // ... } // both variables cleaned up here. diff --git a/docs/cppcx/enums-c-cx.md b/docs/cppcx/enums-c-cx.md index fafc5f1123..6214b9b74f 100644 --- a/docs/cppcx/enums-c-cx.md +++ b/docs/cppcx/enums-c-cx.md @@ -5,7 +5,7 @@ ms.assetid: 99fbbe28-c1cd-43af-9ead-60f90eba6e68 --- # Enums (C++/CX) -C++/CX supports the `public enum class` keyword, which is analagous to a standard C++ `scoped enum`. When you use an enumerator that's declared by using the `public enum class` keyword, you must use the enumeration identifier to scope each enumerator value. +C++/CX supports the `public enum class` keyword, which is analogous to a standard C++ `scoped enum`. When you use an enumerator that's declared by using the `public enum class` keyword, you must use the enumeration identifier to scope each enumerator value. ### Remarks diff --git a/docs/cppcx/events-c-cx.md b/docs/cppcx/events-c-cx.md index 53df94df81..4b7558e59b 100644 --- a/docs/cppcx/events-c-cx.md +++ b/docs/cppcx/events-c-cx.md @@ -1,6 +1,7 @@ --- title: "Events (C++/CX)" -ms.date: "07/15/2019" +description: "How to use C++/CX to create and use event handlers in the Windows Runtime." +ms.date: "02/03/2020" ms.assetid: 31c8e08a-00ad-40f9-8f7e-124864aaad58 --- # Events (C++/CX) @@ -42,7 +43,7 @@ The next example shows how to add custom add, remove, and raise methods to an ev ## Removing an event handler from the subscriber side -In some rare cases, you may want to remove an event handler for an event that you previously subscribed to. For example, you may want to replace it with another event handler or you may want to delete some resources that are held by it. To remove a handler, you must store the EventRegistrationToken that's returned from the `+=` operation. You can then use the `-=` operator on the token to remove an event handler. However, the original handler could still be invoked even after it's removed. Therefore, if you intend to remove an event handler, create a member flag and set it if the event is removed, and then in the event handler, check the flag and return immediately if it's set. The next example shows the basic pattern. +In some rare cases, you may want to remove an event handler for an event that you previously subscribed to. For example, you may want to replace it with another event handler or you may want to delete some resources that are held by it. To remove a handler, you must store the EventRegistrationToken that's returned from the `+=` operation. You can then use the `-=` operator on the token to remove an event handler. However, the original handler could still be invoked even after it's removed. For example, a race condition may arise when the the event source gets a list of handlers and starts to invoke them. If an event handler gets removed while this happens, the list becomes out of date. So, if you intend to remove an event handler, create a member flag. Set it if the event is removed, and then in the event handler, check the flag, and return immediately if it's set. The next example shows the basic pattern. [!code-cpp[cx_events#04](../cppcx/codesnippet/CPP/eventsupportinvs/eventclientclass.h#04)] diff --git a/docs/cppcx/platform-arrayreference-class.md b/docs/cppcx/platform-arrayreference-class.md index c9ae82545c..06094c3e20 100644 --- a/docs/cppcx/platform-arrayreference-class.md +++ b/docs/cppcx/platform-arrayreference-class.md @@ -1,6 +1,6 @@ --- title: "Platform::ArrayReference Class" -ms.date: "12/30/2016" +ms.date: "10/16/2019" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::ArrayReference::ArrayReference"] helpviewer_keywords: ["Platform::ArrayReference Class"] @@ -110,7 +110,7 @@ A handle-to-object of type `Array^` ### Remarks -[Platform::ArrayReference](../cppcx/platform-arrayreference-class.md) and [Platform::Array](../cppcx/platform-array-class.md) are standard C++ class templates, not ref classes. +[Platform::ArrayReference](../cppcx/platform-arrayreference-class.md) is a standard C++ class template, and [Platform::Array](../cppcx/platform-array-class.md) is a ref class. ## See also diff --git a/docs/cppcx/platform-collections-map-class.md b/docs/cppcx/platform-collections-map-class.md index 85798cf2e7..df6a4ad57d 100644 --- a/docs/cppcx/platform-collections-map-class.md +++ b/docs/cppcx/platform-collections-map-class.md @@ -1,6 +1,6 @@ --- title: "Platform::Collections::Map Class" -ms.date: "03/27/2019" +ms.date: "10/01/2019" ms.topic: "reference" f1_keywords: ["COLLECTION/Platform::Collections::Map::Map", "COLLECTION/Platform::Collections::Map::Clear", "COLLECTION/Platform::Collections::Map::First", "COLLECTION/Platform::Collections::Map::GetView", "COLLECTION/Platform::Collections::Map::HasKey", "COLLECTION/Platform::Collections::Map::Insert", "COLLECTION/Platform::Collections::Map::Lookup", "COLLECTION/Platform::Collections::Map::Remove", "COLLECTION/Platform::Collections::Map::Size"] helpviewer_keywords: ["Map Class (C++/Cx)"] @@ -8,7 +8,7 @@ ms.assetid: 2b8cf968-1167-4898-a149-1195b32c1785 --- # Platform::Collections::Map Class -Represents a *map*, which is a collection of key-value pairs. +Represents a *map*, which is a collection of key-value pairs. Implements [Windows::Foundation::Collections::IObservableMap](/uwp/api/windows.foundation.collections.iobservablemap_k_v_) to help with XAML [data binding](/windows/uwp/data-binding/data-binding-in-depth). ## Syntax @@ -280,5 +280,6 @@ The number of elements in the Map. ## See also +[Collections (C++/CX)](collections-c-cx.md)
[Platform Namespace](platform-namespace-c-cx.md)
[Creating Windows Runtime Components in C++](/windows/uwp/winrt-components/creating-windows-runtime-components-in-cpp) diff --git a/docs/cppcx/platform-collections-vector-class.md b/docs/cppcx/platform-collections-vector-class.md index 48f156c142..17bd801aa8 100644 --- a/docs/cppcx/platform-collections-vector-class.md +++ b/docs/cppcx/platform-collections-vector-class.md @@ -1,6 +1,6 @@ --- title: "Platform::Collections::Vector Class" -ms.date: "12/30/2016" +ms.date: "12/04/2019" ms.topic: "reference" f1_keywords: ["COLLECTION/Platform::Collections::Vector::Vector", "COLLECTION/Platform::Collections::Vector::Append", "COLLECTION/Platform::Collections::Vector::Clear", "COLLECTION/Platform::Collections::Vector::First", "COLLECTION/Platform::Collections::Vector::GetAt", "COLLECTION/Platform::Collections::Vector::GetMany", "COLLECTION/Platform::Collections::Vector::GetView", "COLLECTION/Platform::Collections::Vector::IndexOf", "COLLECTION/Platform::Collections::Vector::InsertAt", "COLLECTION/Platform::Collections::Vector::ReplaceAll", "COLLECTION/Platform::Collections::Vector::RemoveAt", "COLLECTION/Platform::Collections::Vector::RemoveAtEnd", "COLLECTION/Platform::Collections::Vector::SetAt", "COLLECTION/Platform::Collections::Vector::Size", "COLLECTION/Platform::Collections::Vector::VectorChanged"] helpviewer_keywords: ["Vector Class (C++/Cx)"] @@ -8,7 +8,7 @@ ms.assetid: aee8c076-9700-47c3-99b6-799fd3edb0ca --- # Platform::Collections::Vector Class -Represents a sequential collection of objects that can be individually accessed by index. +Represents a sequential collection of objects that can be individually accessed by index. Implements [Windows::Foundation::Collections::IObservableVector](/uwp/api/Windows.Foundation.Collections.IObservableVector_T_) to help with XAML [data binding](/windows/uwp/data-binding/data-binding-in-depth). ## Syntax @@ -62,7 +62,7 @@ If you attempt to use a **Vector** type in a public return value or parameter, c |[Vector::GetMany](#getmany)|Retrieves a sequence of items from the current Vector, starting at the specified index.| |[Vector::GetView](#getview)|Returns a read-only view of a Vector; that is, a [Platform::Collections::VectorView](../cppcx/platform-collections-vectorview-class.md).| |[Vector::IndexOf](#indexof)|Searches for the specified item in the current Vector, and if found, returns the index of the item.| -|[Vector::InsertAt](#insertat)|Inserts the specified item into the current Vector after the element identified by the specified index.| +|[Vector::InsertAt](#insertat)|Inserts the specified item into the current Vector at the element identified by the specified index.| |[Vector::ReplaceAll](#replaceall)|Deletes the elements in the current Vector and then inserts the elements from the specified array.| |[Vector::RemoveAt](#removeat)|Deletes the element identified by the specified index from the current Vector.| |[Vector::RemoveAtEnd](#removeatend)|Deletes the element at the end of the current Vector.| @@ -222,7 +222,7 @@ IndexOf uses std::find_if to find the item. Custom element types should therefor ## Vector::InsertAt Method -Inserts the specified item into the current Vector after the element identified by the specified index. +Inserts the specified item into the current Vector at the element identified by the specified index. ### Syntax @@ -236,7 +236,7 @@ virtual void InsertAt(unsigned int index, T item) A zero-based, unsigned integer that specifies a particular element in the Vector object. *item*
-An item to insert into the Vector after the element specified by *index*. The type of *item* is defined by the *T* typename. +An item to insert into the Vector at the element specified by *index*. The type of *item* is defined by the *T* typename. ## Vector::RemoveAt Method @@ -370,5 +370,6 @@ The last element in a sequence of objects that are used to initialize the curren ## See also +[Collections (C++/CX)](collections-c-cx.md)
[Platform Namespace](platform-namespace-c-cx.md)
[Creating Windows Runtime Components in C++](/windows/uwp/winrt-components/creating-windows-runtime-components-in-cpp) diff --git a/docs/cppcx/platform-guid-value-class.md b/docs/cppcx/platform-guid-value-class.md index cabee39cef..07ea768f2e 100644 --- a/docs/cppcx/platform-guid-value-class.md +++ b/docs/cppcx/platform-guid-value-class.md @@ -8,7 +8,7 @@ ms.assetid: 25c0bfb2-7f93-44d8-bdf4-ef4fbac3424a --- # Platform::Guid value class -Represents a [GUID](/previous-versions/aa373931\(v=vs.80\)) type in the Windows Runtime type system. +Represents a [GUID](/previous-versions/cc317743(v%3dmsdn.10)) type in the Windows Runtime type system. ## Syntax @@ -107,7 +107,7 @@ The next byte of the `GUID`. The next byte of the `GUID`. *m*
-A `GUID` in the form a [GUID structure](/previous-versions/aa373931\(v=vs.80\)). +A `GUID` in the form a [GUID structure](/previous-versions/cc317743(v%3dmsdn.10)). *n*
The remaining 8 bytes of the `GUID`. @@ -187,7 +187,7 @@ This operator is provided so that `Guid` objects can be more easily consumed by ## Guid::operator() Operator -Implicitly converts a `Platform::Guid` to a [GUID structure](/previous-versions/aa373931\(v=vs.80\)). +Implicitly converts a `Platform::Guid` to a [GUID structure](/previous-versions/cc317743(v%3dmsdn.10)). ### Syntax @@ -197,7 +197,7 @@ const GUID& Platform::Guid::operator(); ### Return Value -A [GUID structure](/previous-versions/aa373931\(v=vs.80\)). +A [GUID structure](/previous-versions/cc317743(v%3dmsdn.10)). ## See also diff --git a/docs/cppcx/platform-string-class.md b/docs/cppcx/platform-string-class.md index 53a1d85f52..bab7379829 100644 --- a/docs/cppcx/platform-string-class.md +++ b/docs/cppcx/platform-string-class.md @@ -1,6 +1,6 @@ --- title: "Platform::String Class" -ms.date: "12/30/2016" +ms.date: "10/16/2019" ms.topic: "reference" f1_keywords: ["VCCORLIB/Platform::String::String", "VCCORLIB/Platform::String::Begin", "VCCORLIB/Platform::String::CompareOrdinal", "VCCORLIB/Platform::String::Concat", "VCCORLIB/Platform::String::Data", "VCCORLIB/Platform::String::Dispose", "VCCORLIB/Platform::String::End", "VCCORLIB/Platform::String::Equals", "VCCORLIB/Platform::String::GetHashCode", "VCCORLIB/Platform::String::IsEmpty", "VCCORLIB/Platform::String::IsFastPass", "VCCORLIB/Platform::String::Length", "VCCORLIB/Platform::String::ToString"] helpviewer_keywords: ["Platform::String"] @@ -98,12 +98,12 @@ A pointer to the beginning of the current string. ## String::CompareOrdinal Method -Compares two `String` objects by evaluating the numeric values of the corresponding characters in the two string values represented by the objects. +Static method that compares two `String` objects by evaluating the numeric values of the corresponding characters in the two string values represented by the objects. ### Syntax ```cpp -int CompareOrdinal( String^ str1, String^ str2 ); +static int CompareOrdinal( String^ str1, String^ str2 ); ``` ### Parameters @@ -216,7 +216,7 @@ The object to compare. ### Remarks -This method is equivalent to the [String::CompareOrdinal](#compareordinal). In the first overload, it is expected the `str` parameter can be cast to a String^ object. +This method is equivalent to the static [String::CompareOrdinal](#compareordinal). In the first overload, it is expected the `str` parameter can be cast to a String^ object. ## String::GetHashCode Method diff --git a/docs/cppcx/static-libraries-c-cx.md b/docs/cppcx/static-libraries-c-cx.md index 4bfa079bef..4e7d575823 100644 --- a/docs/cppcx/static-libraries-c-cx.md +++ b/docs/cppcx/static-libraries-c-cx.md @@ -36,7 +36,7 @@ Instructions for creating a new project vary depending on which version of Visua ::: moniker-end -When you compile a new static library, if you make a call to a Win32 API that's excluded for UWP apps, the compiler will raise error C3861, “Identifier not found.” To look for an alternative method that's supported for the Windows Runtime, see [Alternatives to Windows APIs in UWP apps](/uwp/win32-and-com/alternatives-to-windows-apis-uwp). +When you compile a new static library, if you make a call to a Win32 API that's excluded for UWP apps, the compiler will raise error C3861, "Identifier not found." To look for an alternative method that's supported for the Windows Runtime, see [Alternatives to Windows APIs in UWP apps](/uwp/win32-and-com/alternatives-to-windows-apis-uwp). If you add a C++ static library project to a UWP app solution, you might have to update the library project’s property settings so that the UWP support property is set to **Yes**. Without this setting, the code builds and links, but an error occurs when you attempt to verify the app for the Microsoft Store. The static lib should be compiled with the same compiler settings as the project that consumes it. diff --git a/docs/cppcx/universal-windows-apps-cpp.md b/docs/cppcx/universal-windows-apps-cpp.md index 484714a8ca..caf952c786 100644 --- a/docs/cppcx/universal-windows-apps-cpp.md +++ b/docs/cppcx/universal-windows-apps-cpp.md @@ -2,7 +2,7 @@ title: "Universal Windows Apps (C++)" ms.date: "03/30/2018" ms.assetid: 357121cc-d390-4bae-b34a-39614861a9f4 -ms.topic: "landing-page" +ms.topic: "overview" --- # Universal Windows Apps (C++) diff --git a/docs/cppcx/wrl/agileeventsource-class.md b/docs/cppcx/wrl/agileeventsource-class.md index f9583f5caf..c7de3e26ad 100644 --- a/docs/cppcx/wrl/agileeventsource-class.md +++ b/docs/cppcx/wrl/agileeventsource-class.md @@ -27,7 +27,7 @@ class AgileEventSource : The interface to a delegate that represents an event handler. *TEventSourceOptions*
-An [InvokeModeOptions](invokemodeoptions-structure.md) stucture whose invokeMode field is set to `InvokeMode::StopOnFirstError` or `InvokeMode::FireAll`. +An [InvokeModeOptions](invokemodeoptions-structure.md) structure whose invokeMode field is set to `InvokeMode::StopOnFirstError` or `InvokeMode::FireAll`. ## Remarks diff --git a/docs/cppcx/wrl/argtraits-structure.md b/docs/cppcx/wrl/argtraits-structure.md index fb2fb08016..140471122d 100644 --- a/docs/cppcx/wrl/argtraits-structure.md +++ b/docs/cppcx/wrl/argtraits-structure.md @@ -147,7 +147,7 @@ The type of the sixth argument of the `Invoke` method. The type of the seventh argument of the `Invoke` method. *TArg8*
-The type of the eigth argument of the `Invoke` method. +The type of the eighth argument of the `Invoke` method. *TArg9*
The type of the ninth argument of the `Invoke` method. diff --git a/docs/cppcx/wrl/callback-function-wrl.md b/docs/cppcx/wrl/callback-function-wrl.md index 5ced6f7f15..2fcf775004 100644 --- a/docs/cppcx/wrl/callback-function-wrl.md +++ b/docs/cppcx/wrl/callback-function-wrl.md @@ -215,7 +215,7 @@ A template parameter that specifies the type of the sixth callback method argume A template parameter that specifies the type of the seventh callback method argument. *TArg8*
-A template parameter that specifies the type of the eigth callback method argument. +A template parameter that specifies the type of the eighth callback method argument. *TArg9*
A template parameter that specifies the type of the ninth callback method argument. diff --git a/docs/cppcx/wrl/eventsource-class.md b/docs/cppcx/wrl/eventsource-class.md index 199c16032e..34e300cea1 100644 --- a/docs/cppcx/wrl/eventsource-class.md +++ b/docs/cppcx/wrl/eventsource-class.md @@ -293,7 +293,7 @@ The type of the sixth event handler argument. The type of the seventh event handler argument. *T8*
-The type of the eigth event handler argument. +The type of the eighth event handler argument. *T9*
The type of the ninth event handler argument. @@ -323,7 +323,7 @@ The sixth event handler argument. The seventh event handler argument. *arg8*
-The eigth event handler argument. +The eighth event handler argument. *arg9*
The ninth event handler argument. diff --git a/docs/cppcx/wrl/handlet-class.md b/docs/cppcx/wrl/handlet-class.md index 88347593f6..43693b2871 100644 --- a/docs/cppcx/wrl/handlet-class.md +++ b/docs/cppcx/wrl/handlet-class.md @@ -20,7 +20,7 @@ class HandleT; ### Parameters *HandleTraits*
-An instance of the [HandleTraits](handletraits-structure.md) stucture that defines common characteristics of a handle. +An instance of the [HandleTraits](handletraits-structure.md) structure that defines common characteristics of a handle. ## Members diff --git a/docs/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md b/docs/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md index 62bae3abdd..8649a94876 100644 --- a/docs/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md +++ b/docs/cppcx/wrl/how-to-activate-and-use-a-windows-runtime-component-using-wrl.md @@ -42,7 +42,7 @@ The following steps use the `Windows::Foundation::IUriRuntimeClass` interface to The Windows Runtime uses fully-qualified names to identify types. The `RuntimeClass_Windows_Foundation_Uri` parameter is a string that's provided by the Windows Runtime and contains the required runtime class name. -4. Initialize a [Microsoft::WRL::Wrappers::HString](hstring-class.md) variable that represents the URI `"http://www.microsoft.com"`. +4. Initialize a [Microsoft::WRL::Wrappers::HString](hstring-class.md) variable that represents the URI `"https://www.microsoft.com"`. [!code-cpp[wrl-consume-component#6](../codesnippet/CPP/how-to-activate-and-use-a-windows-runtime-component-using-wrl_4.cpp)] diff --git a/docs/cppcx/wrl/implements-structure.md b/docs/cppcx/wrl/implements-structure.md index 89f69c82ef..b9c6e737a1 100644 --- a/docs/cppcx/wrl/implements-structure.md +++ b/docs/cppcx/wrl/implements-structure.md @@ -85,7 +85,7 @@ The sixth interface ID. (Optional) The seventh interface ID. (Optional) *I8*
-The eigth interface ID. (Optional) +The eighth interface ID. (Optional) *I9*
The ninth interface ID. (Optional) diff --git a/docs/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md b/docs/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md index 3914cbadcc..9ebf8d24b3 100644 --- a/docs/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md +++ b/docs/cppcx/wrl/use-winmdidl-and-midlrt-to-create-h-files-from-windows-metadata.md @@ -63,7 +63,7 @@ The next example shows the console display from winmdidl that indicates that the Next, midlrt is run on the generated IDL file. Notice that the **metadata_dir** argument is specified after the name of the .idl file. The path of \WinMetadata\ is required—it's the location for windows.winmd. -`C:\Program Files (x86)\Microsoft Visual Studio 12.0> midlrt "c:\users\mblome\documents\test_for_winmdidl.idl" /metadata_dir "C:\Windows\System32\WinMetadata"` +`C:\Program Files (x86)\Microsoft Visual Studio 12.0> midlrt "c:\users\username\documents\test_for_winmdidl.idl" /metadata_dir "C:\Windows\System32\WinMetadata"` ## Remarks diff --git a/docs/cppcx/wrl/windows-runtime-cpp-template-library-wrl.md b/docs/cppcx/wrl/windows-runtime-cpp-template-library-wrl.md index 97c82f9b0f..2446d55f70 100644 --- a/docs/cppcx/wrl/windows-runtime-cpp-template-library-wrl.md +++ b/docs/cppcx/wrl/windows-runtime-cpp-template-library-wrl.md @@ -1,7 +1,7 @@ --- title: "Windows Runtime C++ Template Library (WRL)" ms.date: "11/04/2016" -ms.topic: "landing-page" +ms.topic: "overview" ms.assetid: b915afce-553b-44a7-b8dc-0ab601758eb0 --- # Windows Runtime C++ Template Library (WRL) @@ -67,7 +67,7 @@ Uses the `HttpRequest` class that's defined in [Walkthrough: Connecting Using Ta [Creating a Windows Runtime DLL component with C++ sample](https://code.msdn.microsoft.com/windowsapps/Creating-a-Windows-Runtime-6c399797)
Shows how to use the Windows Runtime C++ Template Library to create an in-process DLL component and consume it from C++/CX, JavaScript, and C#. -[DirectX marble maze game sample](https://code.msdn.microsoft.com/windowsapps/DirectX-Marble-Maze-Game-e4806345)
+[DirectX marble maze game sample](https://docs.microsoft.com/samples/microsoft/windows-appsample-marble-maze/directx-marble-maze-game-sample/)
Demonstrates how to use the Windows Runtime C++ Template Library to manage the lifetime of COM components such as DirectX and Media Foundation in the context of a complete 3-D game. [Sending toast notifications from desktop apps sample](https://code.msdn.microsoft.com/windowsdesktop/Sending-toast-notifications-71e230a2)
@@ -141,5 +141,5 @@ A `WeakRef` object typically represents an object whose existence is controlled |-|-| |[Key APIs by Category](key-wrl-apis-by-category.md)|Highlights the primary Windows Runtime C++ Template Library types, functions, and macros.| |[Reference](wrl-reference.md)|Contains reference information for the Windows Runtime C++ Template Library.| -|[Quick Reference C++/CX)](../../cppcx/quick-reference-c-cx.md)|Briefly describes the C++/CX features that support the Windows Runtime.| +|[Quick Reference (C++/CX)](../../cppcx/quick-reference-c-cx.md)|Briefly describes the C++/CX features that support the Windows Runtime.| |[Using Windows Runtime Components in Visual C++](/windows/uwp/winrt-components/walkthrough-creating-a-basic-windows-runtime-component-in-cpp-and-calling-it-from-javascript-or-csharp)|Shows how to use C++/CX to create a basic Windows Runtime component.| diff --git a/docs/data/oledb/codesnippet/CPP/begin-propset-map_1.h b/docs/data/oledb/codesnippet/CPP/begin-propset-map_1.h index 9011335718..d7b2a09daf 100644 --- a/docs/data/oledb/codesnippet/CPP/begin-propset-map_1.h +++ b/docs/data/oledb/codesnippet/CPP/begin-propset-map_1.h @@ -1,27 +1,27 @@ BEGIN_PROPSET_MAP(CCustomSource) - BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCEINFO) - PROPERTY_INFO_ENTRY(ACTIVESESSIONS) - PROPERTY_INFO_ENTRY(DATASOURCEREADONLY) - PROPERTY_INFO_ENTRY(BYREFACCESSORS) - PROPERTY_INFO_ENTRY(OUTPUTPARAMETERAVAILABILITY) - PROPERTY_INFO_ENTRY(PROVIDEROLEDBVER) - PROPERTY_INFO_ENTRY(DSOTHREADMODEL) - PROPERTY_INFO_ENTRY(SUPPORTEDTXNISOLEVELS) - PROPERTY_INFO_ENTRY(USERNAME) - END_PROPERTY_SET(DBPROPSET_DATASOURCEINFO) - BEGIN_PROPERTY_SET(DBPROPSET_DBINIT) - PROPERTY_INFO_ENTRY(AUTH_PASSWORD) - PROPERTY_INFO_ENTRY(AUTH_PERSIST_SENSITIVE_AUTHINFO) - PROPERTY_INFO_ENTRY(AUTH_USERID) - PROPERTY_INFO_ENTRY(INIT_DATASOURCE) - PROPERTY_INFO_ENTRY(INIT_HWND) - PROPERTY_INFO_ENTRY(INIT_LCID) - PROPERTY_INFO_ENTRY(INIT_LOCATION) - PROPERTY_INFO_ENTRY(INIT_MODE) - PROPERTY_INFO_ENTRY(INIT_PROMPT) - PROPERTY_INFO_ENTRY(INIT_PROVIDERSTRING) - PROPERTY_INFO_ENTRY(INIT_TIMEOUT) - END_PROPERTY_SET(DBPROPSET_DBINIT) - CHAIN_PROPERTY_SET(CCustomSession) - CHAIN_PROPERTY_SET(CCustomCommand) + BEGIN_PROPERTY_SET(DBPROPSET_DATASOURCEINFO) + PROPERTY_INFO_ENTRY(ACTIVESESSIONS) + PROPERTY_INFO_ENTRY(DATASOURCEREADONLY) + PROPERTY_INFO_ENTRY(BYREFACCESSORS) + PROPERTY_INFO_ENTRY(OUTPUTPARAMETERAVAILABILITY) + PROPERTY_INFO_ENTRY(PROVIDEROLEDBVER) + PROPERTY_INFO_ENTRY(DSOTHREADMODEL) + PROPERTY_INFO_ENTRY(SUPPORTEDTXNISOLEVELS) + PROPERTY_INFO_ENTRY(USERNAME) + END_PROPERTY_SET(DBPROPSET_DATASOURCEINFO) + BEGIN_PROPERTY_SET(DBPROPSET_DBINIT) + PROPERTY_INFO_ENTRY(AUTH_PASSWORD) + PROPERTY_INFO_ENTRY(AUTH_PERSIST_SENSITIVE_AUTHINFO) + PROPERTY_INFO_ENTRY(AUTH_USERID) + PROPERTY_INFO_ENTRY(INIT_DATASOURCE) + PROPERTY_INFO_ENTRY(INIT_HWND) + PROPERTY_INFO_ENTRY(INIT_LCID) + PROPERTY_INFO_ENTRY(INIT_LOCATION) + PROPERTY_INFO_ENTRY(INIT_MODE) + PROPERTY_INFO_ENTRY(INIT_PROMPT) + PROPERTY_INFO_ENTRY(INIT_PROVIDERSTRING) + PROPERTY_INFO_ENTRY(INIT_TIMEOUT) + END_PROPERTY_SET(DBPROPSET_DBINIT) + CHAIN_PROPERTY_SET(CCustomSession) + CHAIN_PROPERTY_SET(CCustomCommand) END_PROPSET_MAP() \ No newline at end of file diff --git a/docs/data/oledb/codesnippet/CPP/begin-provider-column-map_1.h b/docs/data/oledb/codesnippet/CPP/begin-provider-column-map_1.h index df1d2f315a..75efe22671 100644 --- a/docs/data/oledb/codesnippet/CPP/begin-provider-column-map_1.h +++ b/docs/data/oledb/codesnippet/CPP/begin-provider-column-map_1.h @@ -1,7 +1,7 @@ BEGIN_PROVIDER_COLUMN_MAP(CCustomWindowsFile) - PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes) - PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh) - PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow) - PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName) - PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName) + PROVIDER_COLUMN_ENTRY("FileAttributes", 1, dwFileAttributes) + PROVIDER_COLUMN_ENTRY("FileSizeHigh", 2, nFileSizeHigh) + PROVIDER_COLUMN_ENTRY("FileSizeLow", 3, nFileSizeLow) + PROVIDER_COLUMN_ENTRY_STR("FileName", 4, cFileName) + PROVIDER_COLUMN_ENTRY_STR("AltFileName", 5, cAlternateFileName) END_PROVIDER_COLUMN_MAP() \ No newline at end of file diff --git a/docs/data/oledb/field-status-data-members-in-wizard-generated-accessors.md b/docs/data/oledb/field-status-data-members-in-wizard-generated-accessors.md index fc7834ae8b..33007839e0 100644 --- a/docs/data/oledb/field-status-data-members-in-wizard-generated-accessors.md +++ b/docs/data/oledb/field-status-data-members-in-wizard-generated-accessors.md @@ -36,18 +36,18 @@ public: DBLENGTH m_dwAuthorLength; DBLENGTH m_dwYearBornLength; - DEFINE_COMMAND_EX(CAuthorsAccessor, L" \ - SELECT \ - AuID, \ - Author, \ - YearBorn \ - FROM dbo.Authors") - - BEGIN_COLUMN_MAP(CAuthorsAccessor) - COLUMN_ENTRY_LENGTH_STATUS(1, m_AuID, dwAuIDLength, dwAuIDStatus) - COLUMN_ENTRY_LENGTH_STATUS(2, m_Author, dwAuthorLength, dwAuthorStatus) - COLUMN_ENTRY_LENGTH_STATUS(3, m_YearBorn, dwYearBornLength, dwYearBornStatus) - END_COLUMN_MAP() + DEFINE_COMMAND_EX(CAuthorsAccessor, L" \ + SELECT \ + AuID, \ + Author, \ + YearBorn \ + FROM dbo.Authors") + + BEGIN_COLUMN_MAP(CAuthorsAccessor) + COLUMN_ENTRY_LENGTH_STATUS(1, m_AuID, dwAuIDLength, dwAuIDStatus) + COLUMN_ENTRY_LENGTH_STATUS(2, m_Author, dwAuthorLength, dwAuthorStatus) + COLUMN_ENTRY_LENGTH_STATUS(3, m_YearBorn, dwYearBornLength, dwYearBornStatus) + END_COLUMN_MAP() ... ``` diff --git a/docs/data/oledb/issuing-a-parameterized-query.md b/docs/data/oledb/issuing-a-parameterized-query.md index 422dcc6905..9e7835238d 100644 --- a/docs/data/oledb/issuing-a-parameterized-query.md +++ b/docs/data/oledb/issuing-a-parameterized-query.md @@ -20,7 +20,7 @@ int main() CSession session; CCommand> artists; LPCSTR clsid; // Initialize CLSID_MSDASQL here - LPCTSTR pName = L"NWind"; + LPCTSTR pName = L"NWind"; // Open the connection, session, and table, specifying authentication // using Windows NT integrated security. Hard-coding a password is a major diff --git a/docs/data/oledb/traversing-a-simple-rowset.md b/docs/data/oledb/traversing-a-simple-rowset.md index eb5ae070de..2d36ad3620 100644 --- a/docs/data/oledb/traversing-a-simple-rowset.md +++ b/docs/data/oledb/traversing-a-simple-rowset.md @@ -21,7 +21,7 @@ int main() CTable> artists; LPCSTR clsid; // Initialize CLSID_MSDASQL here - LPCTSTR pName = L"NWind"; + LPCTSTR pName = L"NWind"; // Open the connection, session, and table, specifying authentication // using Windows NT integrated security. Hard-coding a password is a major diff --git a/docs/docfx.json b/docs/docfx.json index fe54b5ba6a..eacd49bb18 100644 --- a/docs/docfx.json +++ b/docs/docfx.json @@ -96,7 +96,7 @@ "cpp/**.md": "language-reference", "cppcx/**.md": "language-reference", "data/oledb/**.md": "reference", - "error-messages/**.md": "error-reference", + "error-messages/**.md": "reference", "extensions/**.md": "reference", "intrinsics/**.md": "reference", "mfc/reference/**.md": "reference", @@ -115,6 +115,7 @@ "atl/**.md": "cpp-atl", "atl-mfc-shared/**.md": "cpp-mfc", "build/**.md": "cpp-tools", + "build-insights/**.md": "cpp-tools", "c-language/**.md": "cpp-c-language", "c-runtime-library/**.md": "cpp-ucrt", "cloud/**.md": "cpp-azure", @@ -142,78 +143,76 @@ "windows/**.md": "cpp-windows" }, "author": { + "index.md": "corob-msft", "assembler/**.md": "corob-msft", - "attributes/**.md": "mikeblome", - "atl/**.md": "mikeblome", - "atl-mfc-shared/**.md": "mikeblome", + "attributes/**.md": "corob-msft", + "atl/**.md": "corob-msft", + "atl-mfc-shared/**.md": "corob-msft", "build/**.md": "corob-msft", - "c-language/**.md": "mikeblome", + "build-insights/**.md": "kevcadieux", + "c-language/**.md": "corob-msft", "c-runtime-library/**.md": "corob-msft", - "cloud/**.md": "mikeblome", - "cpp/**.md": "mikeblome", - "cppcx/**.md": "mikeblome", - "data/**.md": "mikeblome", - "dotnet/**.md": "mikeblome", + "cloud/**.md": "corob-msft", + "cpp/**.md": "corob-msft", + "cppcx/**.md": "corob-msft", + "data/**.md": "corob-msft", + "dotnet/**.md": "corob-msft", "error-messages/**.md": "corob-msft", - "extensions/**.md": "mikeblome", + "extensions/**.md": "corob-msft", "get-started/**.md": "corob-msft", - "ide/**.md": "mikeblome", + "ide/**.md": "corob-msft", "intrinsics/**.md": "corob-msft", - "linux/**.md": "mikeblome", - "mfc/**.md": "mikeblome", - "overview/**.md": "mikeblome", - "parallel/amp/**.md": "mikeblome", - "parallel/concrt/**.md": "mikeblome", - "parallel/**.md": "mikeblome", - "porting/**.md": "mikeblome", - "preprocessor/**.md": "mikeblome", - "safeint/**.md": "mikeblome", - "security/**.md": "mikeblome", + "linux/**.md": "corob-msft", + "mfc/**.md": "corob-msft", + "overview/**.md": "corob-msft", + "parallel/amp/**.md": "corob-msft", + "parallel/concrt/**.md": "corob-msft", + "parallel/**.md": "corob-msft", + "porting/**.md": "corob-msft", + "preprocessor/**.md": "corob-msft", + "safeint/**.md": "corob-msft", + "security/**.md": "corob-msft", "standard-library/**.md": "corob-msft", "text/**.md": "corob-msft", - "windows/**.md": "mikeblome" + "windows/**.md": "corob-msft" }, "ms.author": { + "index.md": "corob", "assembler/**.md": "corob", - "atl/**.md": "mblome", - "atl-mfc-shared/**.md": "mblome", - "attributes/**.md": "mblome", + "atl/**.md": "corob", + "atl-mfc-shared/**.md": "corob", + "attributes/**.md": "corob", "build/**.md": "corob", - "c-language/**.md": "mblome", + "build-insights/**.md": "kevca", + "c-language/**.md": "corob", "c-runtime-library/**.md": "corob", - "cloud/**.md": "mblome", - "cpp/**.md": "mblome", - "cppcx/**.md": "mblome", - "data/**.md": "mblome", - "dotnet/**.md": "mblome", + "cloud/**.md": "corob", + "cpp/**.md": "corob", + "cppcx/**.md": "corob", + "data/**.md": "corob", + "dotnet/**.md": "corob", "error-messages/**.md": "corob", - "extensions/**.md": "mblome", + "extensions/**.md": "corob", "get-started/**.md": "corob", - "ide/**.md": "mblome", + "ide/**.md": "corob", "intrinsics/**.md": "corob", - "linux/**.md": "mblome", - "mfc/**.md": "mblome", - "overview/**.md": "mblome", - "parallel/amp/**.md": "mblome", - "parallel/concrt/**.md": "mblome", - "parallel/**.md": "mblome", - "porting/**.md": "mblome", - "preprocessor/**.md": "mblome", - "safeint/**.md": "mblome", - "security/**.md": "mblome", + "linux/**.md": "corob", + "mfc/**.md": "corob", + "overview/**.md": "corob", + "parallel/amp/**.md": "corob", + "parallel/concrt/**.md": "corob", + "parallel/**.md": "corob", + "porting/**.md": "corob", + "preprocessor/**.md": "corob", + "safeint/**.md": "corob", + "security/**.md": "corob", "standard-library/**.md": "corob", "text/**.md": "corob", - "windows/**.md": "mblome" + "windows/**.md": "corob" } }, "template": [], - "xref": [ - "msdn.4.5.2.zip", - "namespaces.4.5.2.zip", - "vs.110.zip", - "vs.140.zip", - "office15.zip" - ], + "xref": [], "dest": "vcppdocs", "groups": { "group-vc2015": { diff --git a/docs/dotnet/basic-concepts-in-using-managed-exceptions.md b/docs/dotnet/basic-concepts-in-using-managed-exceptions.md index c1d1275d17..12c250ad24 100644 --- a/docs/dotnet/basic-concepts-in-using-managed-exceptions.md +++ b/docs/dotnet/basic-concepts-in-using-managed-exceptions.md @@ -26,7 +26,7 @@ For more information about differences in exception handling in managed and unma The C++ throw expression is extended to throw a handle to a CLR type. The following example creates a custom exception type and then throws an instance of that type: -``` +```cpp // clr_exception_handling.cpp // compile with: /clr /c ref struct MyStruct: public System::Exception { @@ -42,7 +42,7 @@ void GlobalFunction() { A value type must be boxed before being thrown: -``` +```cpp // clr_exception_handling_2.cpp // compile with: /clr /c value struct MyValueStruct { @@ -59,7 +59,7 @@ void GlobalFunction() { The same **try**/**catch** block structure can be used for catching both CLR and native exceptions: -``` +```cpp // clr_exception_handling_3.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/call-in-appdomain-function.md b/docs/dotnet/call-in-appdomain-function.md index dfb7ca9b65..26ef727361 100644 --- a/docs/dotnet/call-in-appdomain-function.md +++ b/docs/dotnet/call-in-appdomain-function.md @@ -55,7 +55,7 @@ The arguments of the function passed to `call_in_appdomain` must not be CLR type ## Example -``` +```cpp // msl_call_in_appdomain.cpp // compile with: /clr @@ -112,4 +112,4 @@ appDomain1 id = 2 **Header file** \ -**Namespace** msclr \ No newline at end of file +**Namespace** msclr diff --git a/docs/dotnet/calling-native-functions-from-managed-code.md b/docs/dotnet/calling-native-functions-from-managed-code.md index 3a7b85e8b2..43c3ffff2c 100644 --- a/docs/dotnet/calling-native-functions-from-managed-code.md +++ b/docs/dotnet/calling-native-functions-from-managed-code.md @@ -23,7 +23,7 @@ The samples in this section just illustrate how `PInvoke` can be used. `PInvoke` The following example shows the use of `PInvoke` in a Visual C++ program. The native function puts is defined in msvcrt.dll. The DllImport attribute is used for the declaration of puts. -``` +```cpp // platform_invocation_services.cpp // compile with: /clr using namespace System; @@ -40,7 +40,7 @@ int main() { The following sample is equivalent to the previous sample, but uses IJW. -``` +```cpp // platform_invocation_services_2.cpp // compile with: /clr using namespace System; @@ -133,7 +133,7 @@ char* fstringA(char* param) { The following sample exhibits this problem, and even though the program may seem to give the correct output, the output is coming from memory that had been freed. -``` +```cpp // platform_invocation_services_5.cpp // compile with: /clr /c using namespace System; @@ -188,7 +188,7 @@ You can specify marshaling information for individual arguments of a native func In this example, the string is marshaled as a double-byte Unicode character string, LPWStr. The output is the first letter of Hello World! because the second byte of the marshaled string is null, and puts interprets this as the end-of-string marker. -``` +```cpp // platform_invocation_services_3.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/differences-in-exception-handling-behavior-under-clr.md b/docs/dotnet/differences-in-exception-handling-behavior-under-clr.md index 2921dce194..9df0f5ef50 100644 --- a/docs/dotnet/differences-in-exception-handling-behavior-under-clr.md +++ b/docs/dotnet/differences-in-exception-handling-behavior-under-clr.md @@ -271,4 +271,4 @@ Caught an SEH exception with exception code: e0000101 [Exception Handling](../extensions/exception-handling-cpp-component-extensions.md)
[safe_cast](../extensions/safe-cast-cpp-component-extensions.md)
-[Exception Handling](../cpp/exception-handling-in-visual-cpp.md) +[Exception Handling in MSVC](../cpp/exception-handling-in-visual-cpp.md) diff --git a/docs/dotnet/double-thunking-cpp.md b/docs/dotnet/double-thunking-cpp.md index 74c345448e..c7e23aeec7 100644 --- a/docs/dotnet/double-thunking-cpp.md +++ b/docs/dotnet/double-thunking-cpp.md @@ -26,7 +26,7 @@ The following sample demonstrates double thunking. When compiled native (without ### Code -``` +```cpp // double_thunking.cpp // compile with: /clr #include @@ -84,7 +84,7 @@ The previous sample demonstrated the existence of double thunking. This sample s ### Code -``` +```cpp // double_thunking_2.cpp // compile with: /clr #include diff --git a/docs/dotnet/finally.md b/docs/dotnet/finally.md index 07f4e7f745..1d581772e5 100644 --- a/docs/dotnet/finally.md +++ b/docs/dotnet/finally.md @@ -18,7 +18,7 @@ The purpose of the `finally` block is to clean up any resources left after the e The following example demonstrates a simple `finally` block: -``` +```cpp // keyword__finally.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md b/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md index 44b8b01095..3b942185a4 100644 --- a/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md +++ b/docs/dotnet/hosting-a-windows-form-user-control-as-an-mfc-dialog-box.md @@ -10,7 +10,7 @@ MFC provides the template class [CWinFormsDialog](../mfc/reference/cwinformsdial The process that `CWinFormsDialog` uses to host the user control is the similar to that described in [Hosting a Windows Form User Control in an MFC Dialog Box](../dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md). However, `CWinFormsDialog` manages the initialization and hosting of the user control so that it does not have to be programmed manually. -For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/downloads/details.aspx?FamilyID=987021bc-e575-4fe3-baa9-15aa50b0f599&displaylang=en). +For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/download/details.aspx?id=2113). ### To create the MFC host application diff --git a/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md b/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md index d8c9f48d85..229a68444c 100644 --- a/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md +++ b/docs/dotnet/hosting-a-windows-form-user-control-in-an-mfc-dialog-box.md @@ -8,7 +8,7 @@ ms.assetid: 9f66ee52-b7cb-4ffd-8306-392a5da990d8 MFC hosts a Windows Forms control as a special kind of ActiveX control and communicates with the control by using ActiveX interfaces, and properties and methods of the class. We recommend that you use .NET Framework properties and methods to operate on the control. -For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/downloads/details.aspx?FamilyID=987021bc-e575-4fe3-baa9-15aa50b0f599&displaylang=en). +For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/download/details.aspx?id=2113). > [!NOTE] > In the current release, a `CDialogBar` object cannot host Windows Forms controls. diff --git a/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md b/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md index 51ab783abd..59193b5e79 100644 --- a/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md +++ b/docs/dotnet/hosting-a-windows-forms-user-control-as-an-mfc-view.md @@ -12,7 +12,7 @@ The end result resembles the model used by the [CFormView Class](../mfc/referenc Because MFC Windows Forms views are ActiveX controls, they do not have the same `hwnd` as MFC views. Also they cannot be passed as a pointer to a [CView](../mfc/reference/cview-class.md) view. In general, use .NET Framework methods to work with Windows Forms views and rely less on Win32. -For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/downloads/details.aspx?FamilyID=987021bc-e575-4fe3-baa9-15aa50b0f599&displaylang=en). +For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/download/details.aspx?id=2113). ## In This Section diff --git a/docs/dotnet/how-to-access-characters-in-a-system-string.md b/docs/dotnet/how-to-access-characters-in-a-system-string.md index 45eb10bec7..b05162415e 100644 --- a/docs/dotnet/how-to-access-characters-in-a-system-string.md +++ b/docs/dotnet/how-to-access-characters-in-a-system-string.md @@ -17,7 +17,7 @@ Consider the following code. Pinning is not needed because `ppchar` is an inter If you pass `ppchar` to a native function, then it must be a pinning pointer; the garbage collector will not be able to update any pointers on the unmanaged stack frame. -``` +```cpp // PtrToStringChars.cpp // compile with: /clr #include @@ -41,7 +41,7 @@ abcdefg This example shows where pinning is needed. -``` +```cpp // PtrToStringChars_2.cpp // compile with: /clr #include @@ -70,7 +70,7 @@ int main() { An interior pointer has all the properties of a native C++ pointer. For example, you can use it to walk a linked data structure and do insertions and deletions using only one pointer: -``` +```cpp // PtrToStringChars_3.cpp // compile with: /clr /LD using namespace System; diff --git a/docs/dotnet/how-to-call-native-dlls-from-managed-code-using-pinvoke.md b/docs/dotnet/how-to-call-native-dlls-from-managed-code-using-pinvoke.md index 404723dced..5dcab8470a 100644 --- a/docs/dotnet/how-to-call-native-dlls-from-managed-code-using-pinvoke.md +++ b/docs/dotnet/how-to-call-native-dlls-from-managed-code-using-pinvoke.md @@ -17,7 +17,7 @@ For functions that use only intrinsic types as arguments and return values, no e Although it is not required, it is good practice to make P/Invoke declarations static members of a value class so that they do not exist in the global namespace, as demonstrated in this example. -``` +```cpp // pinvoke_basic.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-catch-exceptions-in-native-code-thrown-from-msil.md b/docs/dotnet/how-to-catch-exceptions-in-native-code-thrown-from-msil.md index ae50cc6be8..7cb0f4cd4e 100644 --- a/docs/dotnet/how-to-catch-exceptions-in-native-code-thrown-from-msil.md +++ b/docs/dotnet/how-to-catch-exceptions-in-native-code-thrown-from-msil.md @@ -8,13 +8,13 @@ ms.assetid: c15afd2b-8505-43bf-8a4a-f1d41532a124 In native code, you can catch native C++ exception from MSIL. You can catch CLR exceptions with `__try` and `__except`. -For more information, see [Structured Exception Handling (C/C++)](../cpp/structured-exception-handling-c-cpp.md) and [C++ Exception Handling](../cpp/cpp-exception-handling.md). +For more information, see [Structured Exception Handling (C/C++)](../cpp/structured-exception-handling-c-cpp.md) and [Modern C++ best practices for exceptions and error handling](../cpp/errors-and-exception-handling-modern-cpp.md). ## Example The following sample defines a module with two functions, one that throws a native exception, and another that throws an MSIL exception. -``` +```cpp // catch_MSIL_in_native.cpp // compile with: /clr /c void Test() { @@ -30,7 +30,7 @@ void Test2() { The following sample defines a module that catches a native and MSIL exception. -``` +```cpp // catch_MSIL_in_native_2.cpp // compile with: /clr catch_MSIL_in_native.obj #include diff --git a/docs/dotnet/how-to-convert-between-system-guid-and-guid.md b/docs/dotnet/how-to-convert-between-system-guid-and-guid.md index 254bee258a..549ec5bf1f 100644 --- a/docs/dotnet/how-to-convert-between-system-guid-and-guid.md +++ b/docs/dotnet/how-to-convert-between-system-guid-and-guid.md @@ -11,7 +11,7 @@ The following code sample shows how to convert between a and ## Example -``` +```cpp // convert_guids.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-convert-char-star-string-to-system-byte-array.md b/docs/dotnet/how-to-convert-char-star-string-to-system-byte-array.md index 4fe7227047..ef43f69ce2 100644 --- a/docs/dotnet/how-to-convert-char-star-string-to-system-byte-array.md +++ b/docs/dotnet/how-to-convert-char-star-string-to-system-byte-array.md @@ -11,7 +11,7 @@ The most efficient way to convert a `char *` string to a arra ## Example -``` +```cpp // convert_native_string_to_Byte_array.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-convert-from-a-dotnet-collection-to-a-stl-clr-container.md b/docs/dotnet/how-to-convert-from-a-dotnet-collection-to-a-stl-clr-container.md index f95ed66d3d..4c35b9ccd9 100644 --- a/docs/dotnet/how-to-convert-from-a-dotnet-collection-to-a-stl-clr-container.md +++ b/docs/dotnet/how-to-convert-from-a-dotnet-collection-to-a-stl-clr-container.md @@ -26,7 +26,7 @@ This topic shows how to convert .NET collections to their equivalent STL/CLR con In this example, we create a generic and add 5 elements to it. Then, we create a `vector` using the constructor that takes a as an argument. -``` +```cpp // cliext_convert_list_to_vector.cpp // compile with: /clr @@ -72,7 +72,7 @@ The contents of the cliext::vector are: In this example, we create a generic and add 5 elements to it. Then, we create a `collection_adapter` to wrap the as a simple STL/CLR container. Finally, we create a `map` and copy the contents of the to the `map` by iterating over the `collection_adapter`. During this process, we create a new pair by using the `make_pair` function, and insert the new pair directly into the `map`. -``` +```cpp // cliext_convert_dictionary_to_map.cpp // compile with: /clr diff --git a/docs/dotnet/how-to-convert-from-a-stl-clr-container-to-a-dotnet-collection.md b/docs/dotnet/how-to-convert-from-a-stl-clr-container-to-a-dotnet-collection.md index 079435257d..27305aaea4 100644 --- a/docs/dotnet/how-to-convert-from-a-stl-clr-container-to-a-dotnet-collection.md +++ b/docs/dotnet/how-to-convert-from-a-stl-clr-container-to-a-dotnet-collection.md @@ -20,7 +20,7 @@ This topic shows how to convert STL/CLR containers to their equivalent .NET coll In this example, we create a STL/CLR `vector` and add 5 elements to it. Then, we create a .NET collection by calling the `make_collection` function. Finally, we display the contents of the newly created collection. -``` +```cpp // cliext_convert_vector_to_icollection.cpp // compile with: /clr @@ -64,7 +64,7 @@ The contents of the System::Collections::Generic::ICollection are: In this example, we create a STL/CLR `map` and add 5 elements to it. Then, we create a .NET and assign the `map` directly to it. Finally, we display the contents of the newly created collection. -``` +```cpp // cliext_convert_map_to_idictionary.cpp // compile with: /clr diff --git a/docs/dotnet/how-to-convert-standard-string-to-system-string.md b/docs/dotnet/how-to-convert-standard-string-to-system-string.md index 3ff1fe9181..fc69f02ecc 100644 --- a/docs/dotnet/how-to-convert-standard-string-to-system-string.md +++ b/docs/dotnet/how-to-convert-standard-string-to-system-string.md @@ -11,7 +11,7 @@ This topic shows how convert a C++ Standard Library string ([\](../stand ## Example -``` +```cpp // convert_standard_string_to_system_string.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-convert-system-string-to-standard-string.md b/docs/dotnet/how-to-convert-system-string-to-standard-string.md index 5d28d48f7e..71d02987da 100644 --- a/docs/dotnet/how-to-convert-system-string-to-standard-string.md +++ b/docs/dotnet/how-to-convert-system-string-to-standard-string.md @@ -11,7 +11,7 @@ You can convert a to `std::string` or `std::wstring`, witho ## Example -``` +```cpp // convert_system_string.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-convert-system-string-to-wchar-t-star-or-char-star.md b/docs/dotnet/how-to-convert-system-string-to-wchar-t-star-or-char-star.md index b8de18d547..564d18ae6e 100644 --- a/docs/dotnet/how-to-convert-system-string-to-wchar-t-star-or-char-star.md +++ b/docs/dotnet/how-to-convert-system-string-to-wchar-t-star-or-char-star.md @@ -11,7 +11,7 @@ You can use `PtrToStringChars` in Vcclr.h to convert to nat ## Example -``` +```cpp // convert_string_to_wchar.cpp // compile with: /clr #include < stdio.h > diff --git a/docs/dotnet/how-to-declare-handles-in-native-types.md b/docs/dotnet/how-to-declare-handles-in-native-types.md index 54eaf3e1e6..1c092aa25c 100644 --- a/docs/dotnet/how-to-declare-handles-in-native-types.md +++ b/docs/dotnet/how-to-declare-handles-in-native-types.md @@ -18,7 +18,7 @@ The runtime will maintain an association between the handle and the CLR object, This sample shows how to create a `gcroot` object on the native stack. -``` +```cpp // mcpp_gcroot.cpp // compile with: /clr #include @@ -45,7 +45,7 @@ hello This sample shows how to create a `gcroot` object on the native heap. -``` +```cpp // mcpp_gcroot_2.cpp // compile with: /clr // compile with: /clr @@ -75,7 +75,7 @@ hello This sample shows how to use `gcroot` to hold references to value types (not reference types) in a native type by using `gcroot` on the boxed type. -``` +```cpp // mcpp_gcroot_3.cpp // compile with: /clr #include < vcclr.h > diff --git a/docs/dotnet/how-to-define-an-interface-static-constructor-cpp-cli.md b/docs/dotnet/how-to-define-an-interface-static-constructor-cpp-cli.md index b735c3cfb5..f69ba00d6a 100644 --- a/docs/dotnet/how-to-define-an-interface-static-constructor-cpp-cli.md +++ b/docs/dotnet/how-to-define-an-interface-static-constructor-cpp-cli.md @@ -10,7 +10,7 @@ An interface can have a static constructor, which can be used to initialize stat ## Example -``` +```cpp // mcppv2_interface_class2.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-define-and-consume-enums-in-cpp-cli.md b/docs/dotnet/how-to-define-and-consume-enums-in-cpp-cli.md index c5a28b05a2..1fb42885a0 100644 --- a/docs/dotnet/how-to-define-and-consume-enums-in-cpp-cli.md +++ b/docs/dotnet/how-to-define-and-consume-enums-in-cpp-cli.md @@ -12,7 +12,7 @@ This topic discusses enums in C++/CLI. By default, the underlying type of an enumeration is `int`. However, you can specify the type to be signed or unsigned forms of `int`, `short`, `long`, `__int32`, or `__int64`. You can also use `char`. -``` +```cpp // mcppv2_enum_3.cpp // compile with: /clr public enum class day_char : char {sun, mon, tue, wed, thu, fri, sat}; @@ -44,7 +44,7 @@ sun There is no standard conversion between an enum and an integral type; a cast is required. -``` +```cpp // mcppv2_enum_4.cpp // compile with: /clr enum class day {sun, mon, tue, wed, thu, fri, sat}; @@ -87,7 +87,7 @@ The compiler does no static or dynamic checking of the result of an enum operati > [!NOTE] > C++11 introduces enum class types in unmanaged code which are significantly different than managed enum classes in C++/CLI. In particular, the C++11 enum class type does not support the same operators as the managed enum class type in C++/CLI, and C++/CLI source code must provide an accessibility specifier in managed enum class declarations in order to distinguish them from unmanaged (C++11) enum class declarations. For more information about enum classes in C++/CLI, C++/CX, and C++11, see [enum class](../extensions/enum-class-cpp-component-extensions.md). -``` +```cpp // mcppv2_enum_5.cpp // compile with: /clr private enum class E { a, b } e, mask; @@ -103,7 +103,7 @@ int main() { } ``` -``` +```cpp // mcppv2_enum_6.cpp // compile with: /clr private enum class day : int {sun, mon}; diff --git a/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md b/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md index e26e55e3fc..a48f722758 100644 --- a/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md +++ b/docs/dotnet/how-to-define-and-install-a-global-exception-handler.md @@ -12,7 +12,7 @@ This is accomplished by binding a delegate to the diff --git a/docs/dotnet/how-to-detect-clr-compilation.md b/docs/dotnet/how-to-detect-clr-compilation.md index ad9e20658d..18b3aa3063 100644 --- a/docs/dotnet/how-to-detect-clr-compilation.md +++ b/docs/dotnet/how-to-detect-clr-compilation.md @@ -13,7 +13,7 @@ For more information about macros, see [Predefined Macros](../preprocessor/prede ## Example -``` +```cpp // detect_CLR_compilation.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-determine-if-an-image-is-native-or-clr.md b/docs/dotnet/how-to-determine-if-an-image-is-native-or-clr.md index 2142b4b3d3..f2923e1780 100644 --- a/docs/dotnet/how-to-determine-if-an-image-is-native-or-clr.md +++ b/docs/dotnet/how-to-determine-if-an-image-is-native-or-clr.md @@ -15,7 +15,7 @@ You can also programmatically check whether an image was built for the common la The following sample determines whether an image was built to run on the common language runtime. -``` +```cpp // detect_image_type.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-explicitly-request-boxing.md b/docs/dotnet/how-to-explicitly-request-boxing.md index 76df9b01c4..b4afc6d1fe 100644 --- a/docs/dotnet/how-to-explicitly-request-boxing.md +++ b/docs/dotnet/how-to-explicitly-request-boxing.md @@ -10,7 +10,7 @@ You can explicitly request boxing by assigning a variable to a variable of type ## Example -``` +```cpp // vcmcppv2_explicit_boxing3.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-extend-the-marshaling-library.md b/docs/dotnet/how-to-extend-the-marshaling-library.md index 1e5929c4f4..65c3428410 100644 --- a/docs/dotnet/how-to-extend-the-marshaling-library.md +++ b/docs/dotnet/how-to-extend-the-marshaling-library.md @@ -99,7 +99,7 @@ namespace msclr { The following example extends the marshaling library with a conversion that does not require a context. In this example, the code converts the employee information from a native data type to a managed data type. -``` +```cpp // MyMarshalNoContext.cpp // compile with: /clr #include @@ -161,7 +161,7 @@ Managed zip code: 98111 The following example converts the employee information from a managed data type to a native data type. This conversion requires a marshaling context. -``` +```cpp // MyMarshalContext.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-hold-object-reference-in-unmanaged-memory.md b/docs/dotnet/how-to-hold-object-reference-in-unmanaged-memory.md index 816ff9b4c8..acebea788a 100644 --- a/docs/dotnet/how-to-hold-object-reference-in-unmanaged-memory.md +++ b/docs/dotnet/how-to-hold-object-reference-in-unmanaged-memory.md @@ -11,7 +11,7 @@ You can use gcroot.h, which wraps ## Example -``` +```cpp // hold_object_reference.cpp // compile with: /clr #include "gcroot.h" @@ -49,7 +49,7 @@ StringWrapper::x == ManagedString `GCHandle` gives you a means to hold a managed object reference in unmanaged memory. You use the method to create an opaque handle to a managed object and to release it. Also, the method allows you to obtain the object reference back from the handle in managed code. -``` +```cpp // hold_object_reference_2.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-hold-reference-to-value-type-in-native-type.md b/docs/dotnet/how-to-hold-reference-to-value-type-in-native-type.md index c2cfcb096b..0cc516705e 100644 --- a/docs/dotnet/how-to-hold-reference-to-value-type-in-native-type.md +++ b/docs/dotnet/how-to-hold-reference-to-value-type-in-native-type.md @@ -11,7 +11,7 @@ Use `gcroot` on the boxed type to hold a reference to a value type in a native t ## Example -``` +```cpp // reference_to_value_in_native.cpp // compile with: /clr #using diff --git a/docs/dotnet/how-to-load-unmanaged-resources-into-a-byte-array.md b/docs/dotnet/how-to-load-unmanaged-resources-into-a-byte-array.md index 60433a7cf0..ad0d39a267 100644 --- a/docs/dotnet/how-to-load-unmanaged-resources-into-a-byte-array.md +++ b/docs/dotnet/how-to-load-unmanaged-resources-into-a-byte-array.md @@ -13,7 +13,7 @@ This topic discusses several ways to load unmanaged resources into a . This method allocates memory on the unmanaged heap and returns the address after performing the conversion. This means that no pinning is necessary (because memory on the GC heap is not being passed to the unmanaged function) and that the IntPtr returned from must be explicitly released or a memory leak results. -``` +```cpp // MarshalANSI1.cpp // compile with: /clr #include @@ -53,7 +53,7 @@ int main() { The following example demonstrates the data marshaling required to access an ANSI string in a managed function that is called by an unmanaged function. The managed function, on receiving the native string, can either use it directly or convert it to a managed string using the method, as shown. -``` +```cpp // MarshalANSI2.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-marshal-arrays-using-cpp-interop.md b/docs/dotnet/how-to-marshal-arrays-using-cpp-interop.md index 3214ff7767..50c0b68649 100644 --- a/docs/dotnet/how-to-marshal-arrays-using-cpp-interop.md +++ b/docs/dotnet/how-to-marshal-arrays-using-cpp-interop.md @@ -15,7 +15,7 @@ The following code examples use the [managed, unmanaged](../preprocessor/managed The following example demonstrates how to pass a managed array to an unmanaged function. The managed function uses [pin_ptr (C++/CLI)](../extensions/pin-ptr-cpp-cli.md) to suppress garbage collection for the array before calling the unmanaged function. By providing the unmanaged function with a pinned pointer into the GC heap, the overhead of making a copy of the array can be avoided. To demonstrate that the unmanaged function is accessing GC heap memory, it modifies the contents of the array and the changes are reflected when the managed function resumes control. -``` +```cpp // PassArray1.cpp // compile with: /clr #ifndef _CRT_RAND_S @@ -74,7 +74,7 @@ int main() { The following example demonstrates passing an unmanaged array to a managed function. The managed function accesses the array memory directly (as opposed to creating a managed array and copying the array content), which allows changes made by the managed function to be reflected in the unmanaged function when it regains control. -``` +```cpp // PassArray2.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-marshal-callbacks-and-delegates-by-using-cpp-interop.md b/docs/dotnet/how-to-marshal-callbacks-and-delegates-by-using-cpp-interop.md index 41a65e0ca3..c6b4593d4d 100644 --- a/docs/dotnet/how-to-marshal-callbacks-and-delegates-by-using-cpp-interop.md +++ b/docs/dotnet/how-to-marshal-callbacks-and-delegates-by-using-cpp-interop.md @@ -19,7 +19,7 @@ Notice that is it possible, but not necessary, to pin the delegate using [pin_pt If a delegate is re-located by a garbage collection, it will not affect the underlaying managed callback, so is used to add a reference to the delegate, allowing relocation of the delegate, but preventing disposal. Using GCHandle instead of pin_ptr reduces fragmentation potential of the managed heap. -``` +```cpp // MarshalDelegate1.cpp // compile with: /clr #include @@ -69,7 +69,7 @@ int main() { The following example is similar to the previous example, but in this case the provided function pointer is stored by the unmanaged API, so it can be invoked at any time, requiring that garbage collection be suppressed for an arbitrary length of time. As a result, the following example uses a global instance of to prevent the delegate from being relocated, independent of function scope. As discussed in the first example, using pin_ptr is unnecessary for these examples, but in this case wouldn't work anyway, as the scope of a pin_ptr is limited to a single function. -``` +```cpp // MarshalDelegate2.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-marshal-com-strings-using-cpp-interop.md b/docs/dotnet/how-to-marshal-com-strings-using-cpp-interop.md index a4ce54a970..6a68233138 100644 --- a/docs/dotnet/how-to-marshal-com-strings-using-cpp-interop.md +++ b/docs/dotnet/how-to-marshal-com-strings-using-cpp-interop.md @@ -19,7 +19,7 @@ The following code examples use the [managed, unmanaged](../preprocessor/managed The following example demonstrates how a BSTR (a string format used in COM programming) can be passed from a managed to an unmanaged function. The calling managed function uses to obtain the address of a BSTR representation of the contents of a .NET System.String. This pointer is pinned using [pin_ptr (C++/CLI)](../extensions/pin-ptr-cpp-cli.md) to ensure that its physical address is not changed during a garbage collection cycle while the unmanaged function executes. The garbage collector is prohibited from moving the memory until the [pin_ptr (C++/CLI)](../extensions/pin-ptr-cpp-cli.md) goes out of scope. -``` +```cpp // MarshalBSTR1.cpp // compile with: /clr #define WINVER 0x0502 @@ -56,7 +56,7 @@ int main() { The following example demonstrates how a BSTR can be passed from an unmanaged to an unmanaged function. The receiving managed function can either use the string in as a BSTR or use to convert it to a for use with other managed functions. Because the memory representing the BSTR is allocated on the unmanaged heap, no pinning is necessary, because there is no garbage collection on the unmanaged heap. -``` +```cpp // MarshalBSTR2.cpp // compile with: /clr #define WINVER 0x0502 diff --git a/docs/dotnet/how-to-marshal-embedded-pointers-using-cpp-interop.md b/docs/dotnet/how-to-marshal-embedded-pointers-using-cpp-interop.md index f5f4b41dd0..47725e4197 100644 --- a/docs/dotnet/how-to-marshal-embedded-pointers-using-cpp-interop.md +++ b/docs/dotnet/how-to-marshal-embedded-pointers-using-cpp-interop.md @@ -13,7 +13,7 @@ The following code examples use the [managed, unmanaged](../preprocessor/managed The following example demonstrates how an unmanaged function that takes a structure containing pointers can be called from a managed function. The managed function creates an instance of the structure and initializes the embedded pointer with the new keyword (instead of the [ref new, gcnew](../extensions/ref-new-gcnew-cpp-component-extensions.md) keyword). Because this allocates the memory on the native heap, there is no need to pin the array to suppress garbage collection. However, the memory must be explicitly deleted to avoid memory leakage. -``` +```cpp // marshal_embedded_pointer.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-marshal-strings-using-pinvoke.md b/docs/dotnet/how-to-marshal-strings-using-pinvoke.md index ff40c31847..ffe1ab9aea 100644 --- a/docs/dotnet/how-to-marshal-strings-using-pinvoke.md +++ b/docs/dotnet/how-to-marshal-strings-using-pinvoke.md @@ -1,7 +1,7 @@ --- title: "How to: Marshal Strings Using PInvoke" ms.custom: "get-started-article" -ms.date: "11/04/2016" +ms.date: "09/09/2016" helpviewer_keywords: ["interop [C++], strings", "marshaling [C++], strings", "data marshaling [C++], strings", "platform invoke [C++], strings"] ms.assetid: bcc75733-7337-4d9b-b1e9-b95a98256088 --- @@ -13,11 +13,15 @@ Managed and unmanaged strings are laid out differently in memory, so passing str As with functions that use only intrinsic data types, is used to declare managed entry points into the native functions, but--for passing strings--instead of defining these entry points as taking C-style strings, a handle to the type can be used instead. This prompts the compiler to insert code that performs the required conversion. For each function argument in an unmanaged function that takes a string, the attribute should be used to indicate that the String object should be marshaled to the native function as a C-style string. +The marshaler wraps the call to the unmanaged function in a hidden wrapper routine that pins and copies the managed string into a locally allocated string in the unmanaged context, which then is passed to the unmanaged function. When the unmanaged function returns, the wrapper either deletes the resource, or if it was on the stack, it is reclaimed when the wrapper goes out of scope. The unmanaged function is not responsible for this memory. The unmanaged code only creates and deletes memory in the heap set up by its own CRT, so there is never an issue with the marshaller using a different CRT version. + +If your unmanaged function returns a string, either as a return value or an out parameter, the marshaler copies it into a new managed string, and then releases the memory. For more information, see [Default Marshaling Behavior](/dotnet/framework/interop/default-marshaling-behavior) and [Marshaling Data with Platform Invoke](/dotnet/framework/interop/marshaling-data-with-platform-invoke). + ## Example The following code consists of a unmanaged and a managed module. The unmanaged module is a DLL that defines a function called TakesAString that accepts a C-style ANSI string in the form of a char*. The managed module is a command-line application that imports the TakesAString function, but defines it as taking a managed System.String instead of a char\*. The attribute is used to indicate how the managed string should be marshaled when TakesAString is called. -``` +```cpp // TraditionalDll2.cpp // compile with: /LD /EHsc #include @@ -42,7 +46,7 @@ void TakesAString(char* p) { } ``` -``` +```cpp // MarshalString.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-marshal-structures-using-cpp-interop.md b/docs/dotnet/how-to-marshal-structures-using-cpp-interop.md index a079f54f3c..e9de7b9b8f 100644 --- a/docs/dotnet/how-to-marshal-structures-using-cpp-interop.md +++ b/docs/dotnet/how-to-marshal-structures-using-cpp-interop.md @@ -15,7 +15,7 @@ The following code examples use the [managed, unmanaged](../preprocessor/managed The following example demonstrates passing a structure from a managed to an unmanaged function, both by value and by reference. Because the structure in this example contains only simple, intrinsic data types (see [Blittable and Non-Blittable Types](/dotnet/framework/interop/blittable-and-non-blittable-types)), no special marshaling is required. To marshal non-blittable structures, such as those that contain pointers, see [How to: Marshal Embedded Pointers Using C++ Interop](../dotnet/how-to-marshal-embedded-pointers-using-cpp-interop.md). -``` +```cpp // PassStruct1.cpp // compile with: /clr @@ -73,7 +73,7 @@ int main() { The following example demonstrates passing a structure from an unmanaged to a managed function, both by value and by reference. Because the structure in this example contains only simple, intrinsic data types (see [Blittable and Non-Blittable Types](/dotnet/framework/interop/blittable-and-non-blittable-types)), no special marshalling is required. To marshal non-blittable structures, such as those that contain pointers, see [How to: Marshal Embedded Pointers Using C++ Interop](../dotnet/how-to-marshal-embedded-pointers-using-cpp-interop.md). -``` +```cpp // PassStruct2.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-marshal-structures-using-pinvoke.md b/docs/dotnet/how-to-marshal-structures-using-pinvoke.md index d8e2f88f79..ef36359288 100644 --- a/docs/dotnet/how-to-marshal-structures-using-pinvoke.md +++ b/docs/dotnet/how-to-marshal-structures-using-pinvoke.md @@ -31,7 +31,7 @@ The following code consists of an unmanaged and a managed module. The unmanaged Note that no portion of the DLL is exposed to the managed code using the traditional #include directive. In fact, the DLL is accessed at run time only, so problems with functions imported with DllImport will not be detected at compile time. -``` +```cpp // TraditionalDll3.cpp // compile with: /LD /EHsc #include @@ -77,7 +77,7 @@ void InitLocation(Location* lp) { ## Example -``` +```cpp // MarshalStruct_pi.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-marshal-unicode-strings-using-cpp-interop.md b/docs/dotnet/how-to-marshal-unicode-strings-using-cpp-interop.md index f9126c21f8..763795c9e1 100644 --- a/docs/dotnet/how-to-marshal-unicode-strings-using-cpp-interop.md +++ b/docs/dotnet/how-to-marshal-unicode-strings-using-cpp-interop.md @@ -21,7 +21,7 @@ This topic demonstrates how Unicode strings can be passed from a managed to an u To pass a Unicode string from a managed to an unmanaged function, the PtrToStringChars function (declared in Vcclr.h) can be used to access in the memory where the managed string is stored. Because this address will be passed to a native function, it is important that the memory be pinned with [pin_ptr (C++/CLI)](../extensions/pin-ptr-cpp-cli.md) to prevent the string data from being relocated, should a garbage collection cycle take place while the unmanaged function executes. -``` +```cpp // MarshalUnicode1.cpp // compile with: /clr #include @@ -54,7 +54,7 @@ int main() { The following example demonstrates the data marshaling required to access a Unicode string in a managed function called by an unmanaged function. The managed function, on receiving the native Unicode string, converts it to a managed string using the method. -``` +```cpp // MarshalUnicode2.cpp // compile with: /clr #include diff --git a/docs/dotnet/how-to-modify-reference-class-in-a-native-function.md b/docs/dotnet/how-to-modify-reference-class-in-a-native-function.md index d6568f620e..28a55b13ba 100644 --- a/docs/dotnet/how-to-modify-reference-class-in-a-native-function.md +++ b/docs/dotnet/how-to-modify-reference-class-in-a-native-function.md @@ -13,7 +13,7 @@ You can pass a reference class with a CLR array to a native function, and modify Compile the following native library. -``` +```cpp // modify_ref_class_in_native_function.cpp // compile with: /LD #include @@ -43,7 +43,7 @@ extern "C" { Compile the following assembly. -``` +```cpp // modify_ref_class_in_native_function_2.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-obtain-a-pointer-to-byte-array.md b/docs/dotnet/how-to-obtain-a-pointer-to-byte-array.md index 28682c693f..fa73d96bdc 100644 --- a/docs/dotnet/how-to-obtain-a-pointer-to-byte-array.md +++ b/docs/dotnet/how-to-obtain-a-pointer-to-byte-array.md @@ -11,7 +11,7 @@ You can obtain a pointer to the array block in a array by tak ## Example -``` +```cpp // pointer_to_Byte_array.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-specify-an-out-parameter.md b/docs/dotnet/how-to-specify-an-out-parameter.md index 5fda981f09..9e440ba427 100644 --- a/docs/dotnet/how-to-specify-an-out-parameter.md +++ b/docs/dotnet/how-to-specify-an-out-parameter.md @@ -1,23 +1,23 @@ --- -title: "How to: Specify an out Parameter" +title: "How to: Specify an out parameter" ms.custom: "get-started-article" ms.date: "11/04/2016" helpviewer_keywords: ["function parameters", "out parameters"] ms.assetid: 02862448-603c-4e9d-a5c5-b45fe38446e3 --- -# How to: Specify an out Parameter +# How to: Specify an out parameter -This sample shows how to specify that a function parameter is an out parameter and how to call that function from a C# program. +This sample shows how to specify that a function parameter is an `out` parameter, and how to call that function from a C# program. -An out parameter is specified in Visual C++ with . +An `out` parameter is specified in C++ by using . ## Example -The first part of this sample is a Visual C++ DLL with a type that contains a function with an out parameter. +The first part of this sample creates a C++ DLL. It defines a type that contains a function with an `out` parameter. -``` +```cpp // cpp_out_param.cpp -// compile with: /LD /clr:safe +// compile with: /LD /clr using namespace System; public value struct TestStruct { static void Test([Runtime::InteropServices::Out] String^ %s) { @@ -26,11 +26,9 @@ public value struct TestStruct { }; ``` -## Example - -This is a C# client that consumes the Visual C++ component created in the previous example. +This source file is a C# client that consumes the C++ component created in the previous example. -``` +```csharp // cpp_out_param_2.cs // compile with: /reference:cpp_out_param.dll using System; diff --git a/docs/dotnet/how-to-unbox.md b/docs/dotnet/how-to-unbox.md index 59e8b59aed..5423c3ea45 100644 --- a/docs/dotnet/how-to-unbox.md +++ b/docs/dotnet/how-to-unbox.md @@ -10,7 +10,7 @@ Shows how to unbox and modify a value. ## Example -``` +```cpp // vcmcppv2_unboxing.cpp // compile with: /clr using namespace System; diff --git a/docs/dotnet/how-to-use-a-native-type-in-a-clr-compilation.md b/docs/dotnet/how-to-use-a-native-type-in-a-clr-compilation.md index d4d4082052..8d5b68b799 100644 --- a/docs/dotnet/how-to-use-a-native-type-in-a-clr-compilation.md +++ b/docs/dotnet/how-to-use-a-native-type-in-a-clr-compilation.md @@ -17,7 +17,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../build/ This sample creates a component that defines and uses a native type. -``` +```cpp // use_native_type_in_clr.cpp // compile with: /clr /LD public struct NativeClass { @@ -36,7 +36,7 @@ public ref struct ManagedClass { This sample defines a client that consumes the component. Notice that it is an error to access the native type, unless it is defined in the compiland. -``` +```cpp // use_native_type_in_clr_2.cpp // compile with: /clr #using "use_native_type_in_clr.dll" diff --git a/docs/dotnet/how-to-use-events-in-cpp-cli.md b/docs/dotnet/how-to-use-events-in-cpp-cli.md index 69027a0e51..47acd10525 100644 --- a/docs/dotnet/how-to-use-events-in-cpp-cli.md +++ b/docs/dotnet/how-to-use-events-in-cpp-cli.md @@ -12,7 +12,7 @@ This article shows how to use an interface that declares an event and a function The following code example adds an event handler, invokes the event—which causes the event handler to write its name to the console—and then removes the event handler. -``` +```cpp // mcppv2_events2.cpp // compile with: /clr using namespace System; @@ -68,7 +68,7 @@ EventReceiver::Handler The following sample shows how to define an event's behavior when handlers are added or removed, and when an event is raised. -``` +```cpp // mcppv2_events6.cpp // compile with: /clr using namespace System; @@ -160,7 +160,7 @@ In event handler H2 with args 1 and 2.2 This sample shows how to override the default access on the add, remove, and raise events methods: -``` +```cpp // mcppv2_events3.cpp // compile with: /clr public delegate void f(int); @@ -218,7 +218,7 @@ int main() { An event receiver, or any other client code, can add one or more handlers to an event. -``` +```cpp // mcppv2_events4.cpp // compile with: /clr using namespace System; @@ -297,7 +297,7 @@ DblClickAgain(s=System.Char[]) The following sample shows how to define and use static events. -``` +```cpp // mcppv2_events7.cpp // compile with: /clr using namespace System; @@ -387,7 +387,7 @@ In event handler H2 with args 22 and 22.22 This sample implements virtual, managed events in an interface and class: -``` +```cpp // mcppv2_events5.cpp // compile with: /clr using namespace System; @@ -471,7 +471,7 @@ In handler H2 with args 1 and 2.2 A simple event cannot be specified to override or hide a base class event. You must define all of the event's accessor functions, and then specify the `new` or `override` keyword on each accessor function. -``` +```cpp // mcppv2_events5_a.cpp // compile with: /clr /c delegate void Del(); @@ -505,7 +505,7 @@ ref struct C : B { The following sample shows how to implement an abstract event. -``` +```cpp // mcppv2_events10.cpp // compile with: /clr /W1 using namespace System; @@ -590,7 +590,7 @@ hello from Event2 An event and event handler can be defined in one assembly, and consumed by another assembly. -``` +```cpp // mcppv2_events8.cpp // compile with: /LD /clr using namespace System; @@ -608,7 +608,7 @@ public: This client code consumes the event: -``` +```cpp // mcppv2_events9.cpp // compile with: /clr #using "mcppv2_events8.dll" diff --git a/docs/dotnet/how-to-use-gcnew-to-create-value-types-and-use-implicit-boxing.md b/docs/dotnet/how-to-use-gcnew-to-create-value-types-and-use-implicit-boxing.md index 9931dca3f6..31066b5637 100644 --- a/docs/dotnet/how-to-use-gcnew-to-create-value-types-and-use-implicit-boxing.md +++ b/docs/dotnet/how-to-use-gcnew-to-create-value-types-and-use-implicit-boxing.md @@ -10,7 +10,7 @@ Using [gcnew](../extensions/ref-new-gcnew-cpp-component-extensions.md) on a valu ## Example -``` +```cpp // vcmcppv2_explicit_boxing4.cpp // compile with: /clr public value class V { diff --git a/docs/dotnet/how-to-wrap-native-class-for-use-by-csharp.md b/docs/dotnet/how-to-wrap-native-class-for-use-by-csharp.md index bf2bc11f2b..0e312cbfd0 100644 --- a/docs/dotnet/how-to-wrap-native-class-for-use-by-csharp.md +++ b/docs/dotnet/how-to-wrap-native-class-for-use-by-csharp.md @@ -11,7 +11,7 @@ This sample shows how to wrap a native C++ class so it can be consumed by code a ## Example -``` +```cpp // wrap_native_class_for_mgd_consumption.cpp // compile with: /clr /LD #include diff --git a/docs/dotnet/initonly-cpp-cli.md b/docs/dotnet/initonly-cpp-cli.md index fd1783b845..687794e8bd 100644 --- a/docs/dotnet/initonly-cpp-cli.md +++ b/docs/dotnet/initonly-cpp-cli.md @@ -11,7 +11,7 @@ ms.assetid: f745d7fa-dc08-46f1-9b97-0977be58a008 The following example shows how to use `initionly`: -``` +```cpp // mcpp_initonly.cpp // compile with: /clr /c ref struct Y1 { diff --git a/docs/dotnet/lock-when-enum.md b/docs/dotnet/lock-when-enum.md index f03908a8dc..85290de873 100644 --- a/docs/dotnet/lock-when-enum.md +++ b/docs/dotnet/lock-when-enum.md @@ -26,7 +26,7 @@ When passed to [lock::lock](../dotnet/lock-lock.md), `lock_later` specifies that This example uses a single instance of a class across multiple threads. The class uses a lock on itself to ensure that accesses to its internal data are consistent for each thread. The main application thread uses a lock on the same instance of the class to periodically check to see if any worker threads still exist, and waits to exit until all worker threads have completed their tasks. -``` +```cpp // msl_lock_lock_when.cpp // compile with: /clr #include diff --git a/docs/dotnet/marshal-as.md b/docs/dotnet/marshal-as.md index d9dcb39c11..571597bdf0 100644 --- a/docs/dotnet/marshal-as.md +++ b/docs/dotnet/marshal-as.md @@ -41,7 +41,7 @@ Throws `System::ArgumentNullException(_EXCEPTION_NULLPTR)` if the input paramete This example marshals from a `const char*` to a `System::String` variable type. -``` +```cpp // marshal_as_test.cpp // compile with: /clr #include diff --git a/docs/dotnet/serialization-cpp-cli.md b/docs/dotnet/serialization-cpp-cli.md index ca5757b132..ff19e5d966 100644 --- a/docs/dotnet/serialization-cpp-cli.md +++ b/docs/dotnet/serialization-cpp-cli.md @@ -20,7 +20,7 @@ In the following example, the class `MyClass` (and the property `m_nCount`) is m ### Code -``` +```cpp // serialization_and_mcpp.cpp // compile with: /LD /clr using namespace System; diff --git a/docs/dotnet/standard-conversions-and-implicit-boxing.md b/docs/dotnet/standard-conversions-and-implicit-boxing.md index 59b54ad7f9..8d2e17aca8 100644 --- a/docs/dotnet/standard-conversions-and-implicit-boxing.md +++ b/docs/dotnet/standard-conversions-and-implicit-boxing.md @@ -10,7 +10,7 @@ A standard conversion will be chosen by the compiler over a conversion that requ ## Example -``` +```cpp // clr_implicit_boxing_Std_conversion.cpp // compile with: /clr int f3(int ^ i) { // requires boxing diff --git a/docs/dotnet/stl-clr-containers.md b/docs/dotnet/stl-clr-containers.md index 4ee59281de..45d4448abc 100644 --- a/docs/dotnet/stl-clr-containers.md +++ b/docs/dotnet/stl-clr-containers.md @@ -35,7 +35,7 @@ You can insert a handle to a reference type into an STL/CLR container. A handle The following example shows how to insert a handle to an Employee object into a [cliext::set](../dotnet/set-stl-clr.md). -``` +```cpp // cliext_container_valid_reference_handle.cpp // compile with: /clr @@ -130,7 +130,7 @@ It is also possible to insert a reference type (rather than a handle to a refere The following example shows how to insert an Employee object into a `cliext::set`. -``` +```cpp // cliext_container_valid_reference.cpp // compile with: /clr @@ -227,7 +227,7 @@ A value type element can be one of the standard value types, such as an `int`, o The following example modifies the first example by making the Employee class a value type. This value type is then inserted into a `cliext::set` just as in the first example. -``` +```cpp // cliext_container_valid_valuetype.cpp // compile with: /clr diff --git a/docs/dotnet/swap-function-auto-gcroot.md b/docs/dotnet/swap-function-auto-gcroot.md index 65fbe070e0..6ba00e992a 100644 --- a/docs/dotnet/swap-function-auto-gcroot.md +++ b/docs/dotnet/swap-function-auto-gcroot.md @@ -30,7 +30,7 @@ Another `auto_gcroot`. ## Example -``` +```cpp // msl_swap_auto_gcroot.cpp // compile with: /clr #include diff --git a/docs/dotnet/swap-function-auto-handle.md b/docs/dotnet/swap-function-auto-handle.md index a6555a2ef4..f7cf449bda 100644 --- a/docs/dotnet/swap-function-auto-handle.md +++ b/docs/dotnet/swap-function-auto-handle.md @@ -30,7 +30,7 @@ Another `auto_handle`. ## Example -``` +```cpp // msl_swap_auto_handle.cpp // compile with: /clr #include diff --git a/docs/dotnet/user-defined-conversions-cpp-cli.md b/docs/dotnet/user-defined-conversions-cpp-cli.md index 2ac235a3b7..d33e974126 100644 --- a/docs/dotnet/user-defined-conversions-cpp-cli.md +++ b/docs/dotnet/user-defined-conversions-cpp-cli.md @@ -16,7 +16,7 @@ A native class's constructor can be used to convert a reference or value type to For more information about conversions, see [Boxing](../extensions/boxing-cpp-component-extensions.md) and [Standard Conversions](../cpp/standard-conversions.md). -``` +```cpp // mcpp_User_Defined_Conversions.cpp // compile with: /clr #include "stdio.h" @@ -89,7 +89,7 @@ Convert-from operators: The following sample shows an implicit and explicit "convert-from", user-defined conversion (UDC) operator. -``` +```cpp // clr_udc_convert_from.cpp // compile with: /clr value struct MyDouble { @@ -139,7 +139,7 @@ in constructor Convert-to operators convert an object of the class in which the operator is defined to some other object. The following sample shows an implicit, convert-to, user-defined conversion operator: -``` +```cpp // clr_udc_convert_to.cpp // compile with: /clr using namespace System; @@ -169,7 +169,7 @@ int main() { An explicit user-defined convert-to conversion operator is appropriate for conversions that potentially lose data in some way. To invoke an explicit convert-to operator, a cast must be used. -``` +```cpp // clr_udc_convert_to_2.cpp // compile with: /clr value struct MyDouble { @@ -201,7 +201,7 @@ int main() { You can convert a generic class to T. -``` +```cpp // clr_udc_generics.cpp // compile with: /clr generic @@ -233,7 +233,7 @@ True A converting constructor takes a type and uses it to create an object. A converting constructor is called with direct initialization only; casts will not invoke converting constructors. By default, converting constructors are explicit for CLR types. -``` +```cpp // clr_udc_converting_constructors.cpp // compile with: /clr public ref struct R { diff --git a/docs/dotnet/using-a-windows-form-user-control-in-mfc.md b/docs/dotnet/using-a-windows-form-user-control-in-mfc.md index cbaa94ea99..9c997537ef 100644 --- a/docs/dotnet/using-a-windows-form-user-control-in-mfc.md +++ b/docs/dotnet/using-a-windows-form-user-control-in-mfc.md @@ -1,6 +1,6 @@ --- title: "Using a Windows Form User Control in MFC" -ms.date: "1/08/2018" +ms.date: "01/08/2018" helpviewer_keywords: ["MFC [C++], Windows Forms support", "interoperability [C++], Windows Forms in MFC", "interoperability [C++], MFC", "interop [C++], Windows Forms in MFC", "interop [C++], MFC", "Windows Forms [C++], MFC support"] ms.assetid: 63fb099b-1dff-469c-9e34-dab52e122fcd --- diff --git a/docs/dotnet/using-cpp-interop-implicit-pinvoke.md b/docs/dotnet/using-cpp-interop-implicit-pinvoke.md index c7dfc0c91a..a95c8afdeb 100644 --- a/docs/dotnet/using-cpp-interop-implicit-pinvoke.md +++ b/docs/dotnet/using-cpp-interop-implicit-pinvoke.md @@ -20,7 +20,7 @@ Explicit PInvoke is supported by the .NET Framework and is available in most .NE ## C++ Interop -C++ Interop is recommended over explicit PInvoke because it provides better type safety, is typically less tedious to implement, is more forgiving if the unmanaged API is modified, and makes performance enhancements possible that are not possible with explicit PInvoke. However, C++ Interop is not possible if the unmanaged source code is not available. +C++ Interop provides better type safety, and it is typically less tedious to implement. However, C++ Interop is not an option if the unmanaged source code is not available, or for cross-platform projects. ## C++ COM Interop diff --git a/docs/dotnet/vector-stl-clr.md b/docs/dotnet/vector-stl-clr.md index 855167976a..0f785132bb 100644 --- a/docs/dotnet/vector-stl-clr.md +++ b/docs/dotnet/vector-stl-clr.md @@ -938,7 +938,7 @@ front() = a x b c ``` -# vector::front_item (STL/CLR) +## vector::front_item (STL/CLR) Accesses the first element. ### Syntax @@ -988,7 +988,7 @@ front_item = a x b c ``` -# vector::generic_container (STL/CLR) +## vector::generic_container (STL/CLR) The type of the generic interface for the container. ### Syntax @@ -1111,7 +1111,7 @@ a b c a a c ``` -# vector::generic_reverse_iterator (STL/CLR) +## vector::generic_reverse_iterator (STL/CLR) The type of a reverse iterator for use with the generic interface for the container. ### Syntax diff --git a/docs/dotnet/windows-forms-mfc-programming-differences.md b/docs/dotnet/windows-forms-mfc-programming-differences.md index 38f4b86efc..08fe02c4c8 100644 --- a/docs/dotnet/windows-forms-mfc-programming-differences.md +++ b/docs/dotnet/windows-forms-mfc-programming-differences.md @@ -14,7 +14,7 @@ However, if you are accustomed to MFC, you might be used to creating certain typ For more information about Windows Forms applications, see [Introduction to Windows Forms](/dotnet/framework/winforms/windows-forms-overview). -For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/downloads/details.aspx?FamilyID=987021bc-e575-4fe3-baa9-15aa50b0f599&displaylang=en). +For a sample application that shows Windows Forms used with MFC, see [MFC and Windows Forms Integration](https://www.microsoft.com/download/details.aspx?id=2113). The following MFC view or document and command routing features have no equivalents in Windows Forms: diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md index 3307da5702..ae305c11f1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2001.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2001.md @@ -21,7 +21,7 @@ Ending the first line with \n is not sufficient. The following sample generates C2001: -``` +```cpp // C2001.cpp // C2001 expected #include @@ -39,7 +39,7 @@ int main() Spaces at the beginning of the next line after a line-continuation character are included in the string constant. None of the examples shown above embed a newline character into the string constant. You can embed a newline character as shown here: -``` +```cpp // C2001b.cpp #include @@ -63,4 +63,4 @@ int main() printf_s("Hello,\ world"); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2004.md b/docs/error-messages/compiler-errors-1/compiler-error-c2004.md index d66ef98f52..b43ae79e93 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2004.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2004.md @@ -17,7 +17,7 @@ This error can also be generated as a result of compiler conformance work that w The following sample generates C2004: -``` +```cpp // C2004.cpp // compile with: /DDEBUG #include @@ -34,7 +34,7 @@ int main() Possible resolution: -``` +```cpp // C2004b.cpp // compile with: /DDEBUG #include @@ -45,4 +45,4 @@ int main() printf_s("DEBUG defined\n"); #endif } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2005.md b/docs/error-messages/compiler-errors-1/compiler-error-c2005.md index 602c87039a..124c8e5259 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2005.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2005.md @@ -13,7 +13,7 @@ The `#line` directive must be followed by a line number. The following sample generates C2005: -``` +```cpp // C2005.cpp int main() { int i = 0; @@ -23,10 +23,10 @@ int main() { Possible resolution: -``` +```cpp // C2005b.cpp int main() { int i = 0; #line 0 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2006.md b/docs/error-messages/compiler-errors-1/compiler-error-c2006.md index 66d2a271c7..5ea126f408 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2006.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2006.md @@ -13,15 +13,15 @@ Directives such as [#include](../../preprocessor/hash-include-directive-c-cpp.md The following sample generates C2006: -``` +```cpp // C2006.cpp #include stdio.h // C2006 ``` Possible resolution: -``` +```cpp // C2006b.cpp // compile with: /c #include -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2007.md b/docs/error-messages/compiler-errors-1/compiler-error-c2007.md index 11ee75a5dc..e330e371be 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2007.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2007.md @@ -13,15 +13,15 @@ No identifier appears after a `#define`. To resolve the error, use an identifier The following sample generates C2007: -``` +```cpp // C2007.cpp #define // C2007 ``` Possible resolution: -``` +```cpp // C2007b.cpp // compile with: /c #define true 1 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2008.md b/docs/error-messages/compiler-errors-1/compiler-error-c2008.md index 468e350896..13d6855516 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2008.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2008.md @@ -13,15 +13,15 @@ The character appears immediately following the macro name. To resolve the error The following sample generates C2008: -``` +```cpp // C2008.cpp #define TEST1"mytest1" // C2008 ``` Possible resolution: -``` +```cpp // C2008b.cpp // compile with: /c #define TEST2 "mytest2" -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2009.md b/docs/error-messages/compiler-errors-1/compiler-error-c2009.md index 9af11a76b2..dfa0117021 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2009.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2009.md @@ -15,7 +15,7 @@ The formal parameter list of a macro definition uses the identifier more than on The following sample generates C2009: -``` +```cpp // C2009.cpp #include @@ -31,7 +31,7 @@ int main() Possible resolution: -``` +```cpp // C2009b.cpp #include @@ -43,4 +43,4 @@ int main() printf_s("%d\n", macro2(2)); printf_s("%d\n", macro3(2,4)); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2010.md b/docs/error-messages/compiler-errors-1/compiler-error-c2010.md index e854feab6c..2758fe7eb2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2010.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2010.md @@ -13,9 +13,9 @@ The character is used incorrectly in the formal parameter list of a macro defini The following sample generates C2010: -``` +```cpp // C2010.cpp // compile with: /c #define mymacro(a|) (2*a) // C2010 #define mymacro(a) (2*a) // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2011.md b/docs/error-messages/compiler-errors-1/compiler-error-c2011.md index 80c9957184..87a1ce2c40 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2011.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2011.md @@ -17,10 +17,10 @@ If you need to find the initial declaration of the redefined type, you can use t The following sample generates C2011 and shows one way to fix it: -``` +```cpp // C2011.cpp // compile with: /c struct S; union S; // C2011 union S2; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2012.md b/docs/error-messages/compiler-errors-1/compiler-error-c2012.md index 8356f9f140..02149b0f6f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2012.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2012.md @@ -13,15 +13,15 @@ An `#include` directive lacks the required filename. The following sample generates C2012: -``` +```cpp // C2012.cpp #include < // C2012 include the filename to resolve ``` Possible resolution: -``` +```cpp // C2012b.cpp // compile with: /c #include -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2013.md b/docs/error-messages/compiler-errors-1/compiler-error-c2013.md index c0a242f3b2..c5e853903b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2013.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2013.md @@ -13,15 +13,15 @@ An `#include` directive lacks a closing angle bracket. Add the closing bracket t The following sample generates C2013: -``` +```cpp // C2013.cpp #include -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md index 4079fa3a3f..c50646000e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2014.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2014.md @@ -13,16 +13,16 @@ The `#` sign of a preprocessor directive must be the first character on a line t The following sample generates C2014: -``` +```cpp // C2014.cpp int k; #include // C2014 ``` Possible resolution: -``` +```cpp // C2014b.cpp // compile with: /c int k; #include -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2015.md b/docs/error-messages/compiler-errors-1/compiler-error-c2015.md index 529376f703..14db0ddffc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2015.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2015.md @@ -17,7 +17,7 @@ An escape sequence, such as \t, is converted to a single character. The following sample generates C2015: -``` +```cpp // C2015.cpp // compile with: /c @@ -29,7 +29,7 @@ char test2 = 'e'; // OK C2015 can also occur when using a Microsoft extension, character constants converted to integers. The following sample generates C2015: -``` +```cpp // C2015b.cpp #include @@ -40,4 +40,4 @@ int main() int b = 'a'; // 'a' = ascii 0x61 printf_s("%x\n", b); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md index 5c60ac8286..a59a0cf353 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2017.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2017.md @@ -13,7 +13,7 @@ An escape sequence, such as \t, appears outside of a character or string constan The following sample generates C2017: -``` +```cpp // C2017.cpp int main() { char test1='a'\n; // C2017 @@ -25,8 +25,8 @@ C2017 can occur when the stringize operator is used with strings that include es The following sample generates C2017: -``` +```cpp // C2017b.cpp #define TestDfn(x) AfxMessageBox(#x) TestDfn(CString("\\") + CString(".h\"\n\n")); // C2017 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2019.md b/docs/error-messages/compiler-errors-1/compiler-error-c2019.md index b1eb08865f..0edb424681 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2019.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2019.md @@ -13,15 +13,15 @@ The character followed a `#` sign but it is not the first letter of a preprocess The following sample generates C2019: -``` +```cpp // C2019.cpp #!define TRUE 1 // C2019 ``` Possible resolution: -``` +```cpp // C2019b.cpp // compile with: /c #define TRUE 1 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2021.md b/docs/error-messages/compiler-errors-1/compiler-error-c2021.md index c79617428c..50106c9740 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2021.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2021.md @@ -15,7 +15,7 @@ The character used as the exponent of a floating-point constant is not a valid n The following sample generates C2021: -``` +```cpp // C2021.cpp float test1=1.175494351E; // C2021 ``` @@ -24,8 +24,8 @@ float test1=1.175494351E; // C2021 Possible resolution: -``` +```cpp // C2021b.cpp // compile with: /c float test2=1.175494351E8; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2027.md b/docs/error-messages/compiler-errors-1/compiler-error-c2027.md index 51e7dc83af..c31bee2b78 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2027.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2027.md @@ -15,7 +15,7 @@ A type cannot be used until it is defined. To resolve the error, be sure the typ The following sample generates C2027. -``` +```cpp // C2027.cpp class C; class D { @@ -39,7 +39,7 @@ It is possible to declare a pointer to a declared but undefined type. But C++ do The following sample generates C2027. -``` +```cpp // C2027_b.cpp class A; A& CreateA(); @@ -51,4 +51,4 @@ int main() { CreateA(); // C2027 CreateB(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2032.md b/docs/error-messages/compiler-errors-1/compiler-error-c2032.md index 91ceda5f1d..067fe16cab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2032.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2032.md @@ -13,7 +13,7 @@ The structure or union has a member function, which is allowed in C++ but not in The following sample generates C2032: -``` +```c // C2032.c struct z { int i; @@ -23,10 +23,10 @@ struct z { Possible resolution: -``` +```c // C2032b.c // compile with: /c struct z { int i; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md index cf323bdc3f..16e299458a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2033.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2033.md @@ -13,7 +13,7 @@ The bit field was declared as a pointer, which is not allowed. The following sample generates C2033: -``` +```cpp // C2033.cpp struct S { int *b : 1; // C2033 @@ -22,10 +22,10 @@ struct S { Possible resolution: -``` +```cpp // C2033b.cpp // compile with: /c struct S { int b : 1; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2034.md b/docs/error-messages/compiler-errors-1/compiler-error-c2034.md index e6ad36494b..bf37e750a3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2034.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2034.md @@ -13,7 +13,7 @@ The number of bits in the bit-field declaration exceeds the size of the base typ The following sample generates C2034: -``` +```cpp // C2034.cpp struct A { char test : 9; // C2034, char has 8 bits @@ -22,10 +22,10 @@ struct A { Possible resolution: -``` +```cpp // C2034b.cpp // compile with: /c struct A { char test : 8; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2036.md b/docs/error-messages/compiler-errors-1/compiler-error-c2036.md index c140796673..0a95d8cee8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2036.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2036.md @@ -15,7 +15,7 @@ An operation on `identifier` requires the size of the data object, which cannot The following sample generates C2036. -``` +```c // C2036.c // a C program struct A* pA; @@ -32,7 +32,7 @@ int main() { The following sample generates C2036. -``` +```cpp // C2036_2.cpp // a C++ program struct A* pA; @@ -40,4 +40,4 @@ int main() { pA++; // C2036, size of A not known ((char*&)pA)++; // OK, if sizeof(A) == sizeof(char) } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2039.md b/docs/error-messages/compiler-errors-1/compiler-error-c2039.md index 9dce6f246b..9f4c27f607 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2039.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2039.md @@ -15,7 +15,7 @@ The code incorrectly calls or refers to a member of a structure, class, or union The following sample generates C2039. -``` +```cpp // C2039.cpp struct S { int mem0; @@ -31,7 +31,7 @@ int main() { The following sample generates C2039. -``` +```cpp // C2039_b.cpp // compile with: /clr using namespace System; @@ -46,7 +46,7 @@ int main() { The following sample generates C2039. -``` +```cpp // C2039_c.cpp // compile with: /clr /c ref struct S { @@ -81,7 +81,7 @@ public class B { The following sample generates C2039. -``` +```cpp // C2039_e.cpp // compile with: /clr using namespace System; @@ -100,7 +100,7 @@ int main() { C2039 can also occur if you use generics. The following sample generates C2039. -``` +```cpp // C2039_f.cpp // compile with: /clr interface class I {}; @@ -127,7 +127,7 @@ C2039 can occur when you try to release managed or unmanaged resources. For more The following sample generates C2039. -``` +```cpp // C2039_g.cpp // compile with: /clr using namespace System; @@ -144,4 +144,4 @@ int main() { stateTimer->~Timer(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2040.md b/docs/error-messages/compiler-errors-1/compiler-error-c2040.md index d3df32cf33..db5de33ecf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2040.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2040.md @@ -13,7 +13,7 @@ An expression involving the specified operands has incompatible operand types or This sample generates C2040 and shows how to fix it. -``` +```cpp // C2040.cpp // Compile by using: cl /c /W3 C2040.cpp bool test() { @@ -21,4 +21,4 @@ bool test() { return c == "3"; // C2446, C2040 // return c == '3'; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2041.md b/docs/error-messages/compiler-errors-1/compiler-error-c2041.md index e2deced869..bf2681cf5a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2041.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2041.md @@ -13,15 +13,15 @@ The specified character is not a valid digit for the base (such as octal or hex) The following sample generates C2041: -``` +```cpp // C2041.cpp int i = 081; // C2041 8 is not a base 8 digit ``` Possible resolution: -``` +```cpp // C2041b.cpp // compile with: /c int j = 071; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2042.md b/docs/error-messages/compiler-errors-1/compiler-error-c2042.md index 92f5c91f05..801a68c0b9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2042.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2042.md @@ -13,16 +13,16 @@ The keywords `signed` and `unsigned` are used in a single declaration. The following sample generates C2042: -``` +```cpp // C2042.cpp unsigned signed int i; // C2042 ``` Possible resolution: -``` +```cpp // C2042b.cpp // compile with: /c unsigned int i; signed int ii; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2045.md b/docs/error-messages/compiler-errors-1/compiler-error-c2045.md index 6d8df124bb..72496e68d6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2045.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2045.md @@ -13,7 +13,7 @@ The label appears before multiple statements in the same function. The following sample generates C2045: -``` +```cpp // C2045.cpp int main() { label: { @@ -21,4 +21,4 @@ int main() { goto label; label: {} // C2045 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2046.md b/docs/error-messages/compiler-errors-1/compiler-error-c2046.md index 6b93bb1428..c51788e8fb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2046.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2046.md @@ -13,7 +13,7 @@ The keyword `case` can appear only in a `switch` statement. The following sample generates C2046: -``` +```cpp // C2046.cpp int main() { case 0: // C2046 @@ -22,7 +22,7 @@ int main() { Possible resolution: -``` +```cpp // C2046b.cpp int main() { int i = 0; @@ -35,4 +35,4 @@ int main() { break; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2047.md b/docs/error-messages/compiler-errors-1/compiler-error-c2047.md index a7dd02de9c..ba27a4a607 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2047.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2047.md @@ -13,7 +13,7 @@ The keyword `default` can appear only in a `switch` statement. The following sample generates C2047: -``` +```cpp // C2047.cpp int main() { int i = 0; @@ -27,7 +27,7 @@ int main() { Possible resolution: -``` +```cpp // C2047b.cpp int main() { int i = 0; @@ -38,4 +38,4 @@ int main() { break; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2048.md b/docs/error-messages/compiler-errors-1/compiler-error-c2048.md index 901d5785f3..9316731eb4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2048.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2048.md @@ -13,7 +13,7 @@ A `switch` statement contains multiple `default` labels. Delete one of the `defa The following sample generates C2048: -``` +```cpp // C2048.cpp int main() { int a = 1; @@ -30,7 +30,7 @@ int main() { Possible resolution: -``` +```cpp // C2048b.cpp int main() { int a = 1; @@ -41,4 +41,4 @@ int main() { a = 2; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2050.md b/docs/error-messages/compiler-errors-1/compiler-error-c2050.md index 995569f3ba..11122d1942 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2050.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2050.md @@ -13,7 +13,7 @@ The `switch` expression evaluates to a noninteger value. To resolve the error, u The following sample generates C2050: -``` +```cpp // C2050.cpp int main() { int a = 1; @@ -28,7 +28,7 @@ int main() { Possible resolution: -``` +```cpp // C2050b.cpp int main() { int a = 1; @@ -39,4 +39,4 @@ int main() { a = 2; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2051.md b/docs/error-messages/compiler-errors-1/compiler-error-c2051.md index 891d684000..3a3f9d3995 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2051.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2051.md @@ -13,7 +13,7 @@ Case expressions must be integer constants. The following sample generates C2051: -``` +```cpp // C2051.cpp class X {}; @@ -32,7 +32,7 @@ int main() { Possible resolution: -``` +```cpp // C2051b.cpp class X {}; @@ -47,4 +47,4 @@ int main() { break; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2052.md b/docs/error-messages/compiler-errors-1/compiler-error-c2052.md index d8fcadfae1..9d535dcf4b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2052.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2052.md @@ -13,7 +13,7 @@ Case expressions must be integer constants. The following sample generates C2052: -``` +```cpp // C2052.cpp int main() { int index = 0; @@ -26,4 +26,4 @@ int main() { return 23; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2053.md b/docs/error-messages/compiler-errors-1/compiler-error-c2053.md index f36ddf2354..ba3c8b8db7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2053.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2053.md @@ -13,9 +13,9 @@ The wide string is assigned to an incompatible type. The following sample generates C2053: -``` +```c // C2053.c int main() { char array[] = L"Rika"; // C2053 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2054.md b/docs/error-messages/compiler-errors-1/compiler-error-c2054.md index 08d5aee94d..8018d42dcc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2054.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2054.md @@ -15,16 +15,16 @@ This error can be caused by omitting an equal sign (=) on a complex initializati The following sample generates C2054: -``` +```c // C2054.c int array1[] { 1, 2, 3 }; // C2054, missing = ``` Possible resolution: -``` +```c // C2054b.c int main() { int array2[] = { 1, 2, 3 }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2055.md b/docs/error-messages/compiler-errors-1/compiler-error-c2055.md index 5f78cdfa1f..c397a36710 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2055.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2055.md @@ -13,9 +13,9 @@ A function definition contains a parameter type list instead of a formal paramet The following sample generates C2055: -``` +```c // C2055.c // compile with: /c void func(int, char) {} // C2055 void func (int i, char c) {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2057.md b/docs/error-messages/compiler-errors-1/compiler-error-c2057.md index d0986b79f2..57402d9463 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2057.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2057.md @@ -17,7 +17,7 @@ The compiler must know the size of a type at compile time in order to allocate s The following sample generates C2057 and shows how to fix it: -``` +```cpp // C2057.cpp int i; int b[i]; // C2057 - value of i is unknown at compile time @@ -31,7 +31,7 @@ int main() { C has more restrictive rules for constant expressions. The following sample generates C2057 and shows how to fix it: -``` +```c // C2057b.c #define ArraySize1 10 int main() { @@ -39,4 +39,4 @@ int main() { int h[ArraySize2]; // C2057 - C does not allow variables here int h[ArraySize1]; // OK - uses preprocessor constant } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2059.md b/docs/error-messages/compiler-errors-1/compiler-error-c2059.md index 2d49a94af1..e6adcbc55d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2059.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2059.md @@ -13,7 +13,7 @@ The token caused a syntax error. The following example generates an error message for the line that declares `j`. -``` +```cpp // C2059e.cpp // compile with: /c // C2143 expected @@ -31,14 +31,14 @@ C2059 is raised when a preprocessor symbol name is re-used as an identifier. In #define ONE 1 enum class DIGITS { - ZERO, - ONE // error C2059 + ZERO, + ONE // error C2059 }; ``` You may get C2059 if a symbol evaluates to nothing, as can occur when **/D**_symbol_**=** is used to compile. -``` +```cpp // C2059a.cpp // compile with: /DTEST= #include @@ -56,7 +56,7 @@ Another case in which C2059 can occur is when you compile an application that sp The following example generates C2059: -``` +```cpp // C2059b.cpp // compile with: /c struct ag_type { @@ -74,7 +74,7 @@ C2059 can occur for an ill-formed cast. The following sample generates C2059: -``` +```cpp // C2059c.cpp // compile with: /clr using namespace System; @@ -92,7 +92,7 @@ C2059 can also occur if you attempt to create a namespace name that contains a p The following sample generates C2059: -``` +```cpp // C2059d.cpp // compile with: /c namespace A.B {} // C2059 diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md index 69eaec4216..3c4e3d3bea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2061.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2061.md @@ -17,7 +17,7 @@ This error could also be caused when the compiler detects an expression as a cla The following sample generates C2061: -``` +```cpp // C2061.cpp // compile with: /c template < A a > // C2061 @@ -28,7 +28,7 @@ class c{}; C2061 can occur if you pass an instance name to [typeid](../../extensions/typeid-cpp-component-extensions.md): -``` +```cpp // C2061b.cpp // compile with: /clr ref struct G { @@ -40,4 +40,4 @@ int main() { System::Type ^ pType = typeid; // C2061 System::Type ^ pType2 = typeid; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md index 471db2ca37..11438c5766 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2062.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2062.md @@ -13,11 +13,11 @@ The compiler did not expect a type name. The following sample generates C2062: -``` +```cpp // C2062.cpp // compile with: /c struct A { : int l; }; // C2062 struct B { private: int l; }; // OK ``` -C2062 can also occur due to the way the compiler handles undefined types in a constructor's parameter list. If the compiler encounters an undefined (misspelled?) type, it assumes the constructor is an expression, and issues C2062. To resolve, only use defined types in a constructor parameter list. \ No newline at end of file +C2062 can also occur due to the way the compiler handles undefined types in a constructor's parameter list. If the compiler encounters an undefined (misspelled?) type, it assumes the constructor is an expression, and issues C2062. To resolve, only use defined types in a constructor parameter list. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md index a11f0a923f..501173757d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2063.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2063.md @@ -13,7 +13,7 @@ The identifier is used as a function but not declared as a function. The following sample generates C2063: -``` +```c // C2063.c int main() { int i, j; @@ -23,11 +23,11 @@ int main() { Possible resolution: -``` +```c // C2063b.c int i() { return 0;} int main() { int j; j = i(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md index 0da133861e..065d51b062 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2064.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2064.md @@ -13,7 +13,7 @@ A call is made to a function through an expression. The expression does not eval In this example, the code attempts to call non-functions as functions. The following sample generates C2064: -``` +```cpp // C2064.cpp int i, j; char* p; @@ -25,7 +25,7 @@ void func() { You must call pointers to non-static member functions from the context of an object instance. The following sample generates C2064, and shows how to fix it: -``` +```cpp // C2064b.cpp struct C { void func1(){} @@ -44,7 +44,7 @@ int main() { Within a class, member function pointers must also indicate the calling object context. The following sample generates C2064 and shows how to fix it: -``` +```cpp // C2064d.cpp // Compile by using: cl /c /W4 C2064d.cpp struct C { @@ -61,4 +61,4 @@ struct C { (this->*funcArray[0])(); // OK - called in this instance context } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md index 74e9b7aa94..71ecf0bb60 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2070.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2070.md @@ -13,7 +13,7 @@ The [sizeof](../../cpp/sizeof-operator.md) operator requires an expression or ty The following sample generates C2070: -``` +```cpp // C2070.cpp void func() {} int main() { @@ -24,11 +24,11 @@ int main() { Possible resolution: -``` +```cpp // C2070b.cpp void func() {} int main() { int a; a = sizeof(a); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md index d1a7faf524..d11608f7f3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2071.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2071.md @@ -17,7 +17,7 @@ To fix this issue, understand the intended storage class of the identifier—for The following sample generates C2071. -``` +```cpp // C2071.cpp // compile with: /c struct C { @@ -32,9 +32,9 @@ struct D { The following sample generates C2071. -``` +```cpp // C2071_b.cpp // compile with: /c typedef int x(int i) { return i; } // C2071 typedef int (x)(int); // OK, no local definition in typedef -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md index d4224e5870..88fc70b2eb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2073.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2073.md @@ -13,7 +13,7 @@ Too few initializers were specified for an array of user-defined types or consta The following sample generates C2073: -``` +```cpp // C2073.cpp class A { public: @@ -22,7 +22,7 @@ public: A a[3] = { A(1), A(2) }; // C2073, no default constructor ``` -``` +```cpp // C2073b.cpp // compile with: /c class B { @@ -31,4 +31,4 @@ public: B( int ); }; B b[3] = { B(1), B(2) }; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md index 3bf391c863..64aaefd6ab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2075.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2075.md @@ -13,7 +13,7 @@ There were no curly braces around the specified array initializer. The following sample generates C2075: -``` +```c // C2075.c int main() { int i[] = 1, 2, 3 }; // C2075 @@ -22,9 +22,9 @@ int main() { Possible resolution: -``` +```c // C2075b.c int main() { int j[] = { 1, 2, 3 }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md index beff2177c6..d3b10bfb4d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2078.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2078.md @@ -15,7 +15,7 @@ The compiler can deduce the correct assignment of initializers to objects and in The following sample generates C2078 and shows how to fix it: -``` +```cpp // C2078.cpp // Compile by using: cl /c /W4 C2078.cpp struct S { @@ -37,4 +37,4 @@ int main() { S s3{{1, 2, 3, 4}}; // OK S s4{{{1, 2}, {3, 4}}}; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md index de5d767a5b..d4bd5ffece 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2079.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2079.md @@ -15,7 +15,7 @@ This error can be caused by initializing an anonymous union. The following sample generates C2079: -``` +```cpp // C2079.cpp // compile with: /EHsc #include @@ -26,7 +26,7 @@ int main() { Possible resolution: -``` +```cpp // C2079b.cpp // compile with: /EHsc #include @@ -37,7 +37,7 @@ int main( ) { C2079 can also occur if you attempt to declare an object on the stack of a type whose forward declaration is only in scope. -``` +```cpp // C2079c.cpp class A; @@ -50,7 +50,7 @@ class A {}; Possible resolution: -``` +```cpp // C2079d.cpp // compile with: /c class A; @@ -62,4 +62,4 @@ class B { }; class A {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md index 7a3700cb90..9c3ec1dcbc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2081.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2081.md @@ -15,15 +15,15 @@ This error can be caused by using the old style for the formal parameter list. Y The following sample generates C2081: -``` +```c // C2081.c void func( int i, j ) {} // C2081, no type specified for j ``` Possible resolution: -``` +```c // C2081b.c // compile with: /c void func( int i, int j ) {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md index 2c93926a5d..cdb8827c50 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2082.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2082.md @@ -13,10 +13,10 @@ A formal parameter to a function is redeclared within the function body. To reso The following sample generates C2082: -``` +```cpp // C2082.cpp void func(int i) { int i; // C2082 int ii; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md index ed7cb9c550..311e53ce54 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2084.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2084.md @@ -30,9 +30,9 @@ void Func(int) {} // C2084 second definition To correct this error, remove the duplicate definition: -``` +```cpp // C2084b.cpp // compile with: /c void Func(int); void Func(int) {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md index 54f73598ea..c33c6f24dd 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2085.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2085.md @@ -13,7 +13,7 @@ The identifier was declared in a function definition but not in the formal param The following sample generates C2085: -``` +```c // C2085.c void func1( void ) int main( void ) {} // C2085 @@ -21,10 +21,10 @@ int main( void ) {} // C2085 Possible resolution: -``` +```c // C2085b.c void func1( void ); int main( void ) {} ``` -With the semicolon missing, `func1()` looks like a function definition, not a prototype, so `main` is defined within `func1()`, generating Error C2085 for identifier `main`. \ No newline at end of file +With the semicolon missing, `func1()` looks like a function definition, not a prototype, so `main` is defined within `func1()`, generating Error C2085 for identifier `main`. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md index d5e8ee7cff..c9dd9589bc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2086.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2086.md @@ -15,10 +15,10 @@ C2086 can also be the result of incremental building for a referenced C# assembl The following sample generates C2086: -``` +```cpp // C2086.cpp main() { int a; int a; // C2086 not an error in ANSI C } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md index 1883460b66..37fae5d572 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2087.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2087.md @@ -13,7 +13,7 @@ The definition of an array with multiple subscripts is missing a subscript value The following sample generates C2087: -``` +```cpp // C2087.cpp int main() { char a[10][]; // C2087 @@ -22,9 +22,9 @@ int main() { Possible resolution: -``` +```cpp // C2087b.cpp int main() { char b[4][5]; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md index 46ce627dcf..35376862e6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2088.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2088.md @@ -13,7 +13,7 @@ The operator was not defined for the structure or union. This error is only vali The following sample generates C2088 three times: -``` +```c // C2088.c struct S { int m_i; @@ -24,4 +24,4 @@ int main() { struct S s2 = +s; // C2088 s++; // C2088 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md index df3e49bcf3..e0e8894562 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2090.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2090.md @@ -13,17 +13,17 @@ A function cannot return an array. Return a pointer to an array instead. The following sample generates C2090: -``` +```cpp // C2090.cpp int func1(void)[] {} // C2090 ``` Possible resolution: -``` +```cpp // C2090b.cpp // compile with: /c int* func2(int * i) { return i; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md index e1e26f2e88..1070c8aea6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2092.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2092.md @@ -15,7 +15,7 @@ Arrays of functions are not allowed. Use an array of pointers to functions. The following sample generates C2092: -``` +```cpp // C2092.cpp typedef void (F) (); typedef F AT[10]; // C2092 @@ -25,9 +25,9 @@ typedef F AT[10]; // C2092 Possible resolution: -``` +```cpp // C2092b.cpp // compile with: /c typedef void (F) (); typedef F * AT[10]; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md index fd256761c3..78050650bc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2093.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2093.md @@ -13,7 +13,7 @@ When compiling with [/Za](../../build/reference/za-ze-disable-language-extension The following sample generates C2093: -``` +```c // C2093.c // compile with: /Za /c void func() { @@ -24,4 +24,4 @@ void func() { static int li2; int * s2[]= { &li2 }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md index 87ed0871ff..6126862fbf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2099.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2099.md @@ -15,7 +15,7 @@ This error is issued only by the C compiler and occurs only for non-automatic va The following sample generates C2099. -``` +```c // C2099.c int j; int *p; @@ -34,9 +34,9 @@ For more information, see [/fp (Specify Floating-Point Behavior)](../../build/re The following sample generates C2099. -``` +```c // C2099_2.c // compile with: /fp:strict /c float X = 2.0 - 1.0; // C2099 float X2 = 1.0; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md index 206ac05bec..7d7ba5f25f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2100.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2100.md @@ -13,7 +13,7 @@ Indirection operator ( `*` ) is applied to a nonpointer value. The following sample generates C2100: -``` +```cpp // C2100.cpp int main() { int r = 0, *s = 0; @@ -21,4 +21,4 @@ int main() { *r = 200; // C2100 *s = 200; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md index 53caffb342..5641555fd2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2101.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2101.md @@ -13,11 +13,11 @@ The address-of operator ( `&` ) must have an l-value as operand. The following sample generates C2101: -``` +```cpp // C2101.cpp int main() { char test; test = &'a'; // C2101 test = 'a'; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md index c72135fe4b..033fc91e93 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2104.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2104.md @@ -13,7 +13,7 @@ You cannot take the address of a bit field. The following sample generates C2104: -``` +```cpp // C2104.cpp struct X { int sb : 1; @@ -24,4 +24,4 @@ int main() { &x.sb; // C2104 x.sb; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md index 6b1cdbc188..299bbeb560 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2105.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2105.md @@ -13,7 +13,7 @@ The operator must have an l-value as operand. The following sample generates C2105: -``` +```cpp // C2105.cpp int main() { unsigned char * p1 = 0; @@ -30,7 +30,7 @@ int main() { The following sample generates C2105: -``` +```cpp // C2105b.cpp int main() { int a[10] = {0}; @@ -41,4 +41,4 @@ int main() { ++(a[0] , b[0]); ++a[0]; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md index 0523e9d4fe..1c8c2b602a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2106.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2106.md @@ -13,11 +13,11 @@ The operator must have an l-value as its left operand. The following sample generates C2106: -``` +```cpp // C2106.cpp int main() { int a; 1 = a; // C2106 a = 1; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md index 579e3a28d9..942294db4c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2107.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2107.md @@ -17,7 +17,7 @@ C2107 can occur if you incorrectly use the `this` pointer of a value type to acc The following sample generates C2107. -``` +```cpp // C2107.cpp // compile with: /clr using namespace System; @@ -38,4 +38,4 @@ int main() { B ^ myb = gcnew B(); myb->Test(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md index 888b79825f..50b056741f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2108.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2108.md @@ -17,7 +17,7 @@ C2108 can occur if you incorrectly use the `this` pointer of a value type to acc The following sample generates C2108. -``` +```cpp // C2108.cpp // compile with: /clr using namespace System; @@ -38,4 +38,4 @@ int main() { B ^ myb = gcnew B(); myb->Test(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md index be1def2d20..820b107500 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2109.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2109.md @@ -13,11 +13,11 @@ The subscript was used on a variable that was not an array. The following sample generates C2109: -``` +```cpp // C2109.cpp int main() { int a, b[10] = {0}; a[0] = 1; // C2109 b[0] = 1; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md index 54ac627af6..d05c5d2c55 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2110.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2110.md @@ -13,7 +13,7 @@ An attempt was made to add two pointer values using the plus ( `+` ) operator. The following sample generates C2110: -``` +```cpp // C2110.cpp int main() { int a = 0; @@ -21,4 +21,4 @@ int main() { int *pb; a = pa + pb; // C2110 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md index 7f24ec287f..9f60202b64 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2111.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2111.md @@ -13,7 +13,7 @@ An attempt was made to add a nonintegral value to a pointer using the plus ( `+` The following sample generates C2111: -``` +```cpp // C2111.cpp int main() { int *a = 0, *pa = 0, b = 0; @@ -22,4 +22,4 @@ int main() { a = pa + d; // C2111 a = pa + b; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md index 66fd4e1522..d3afcad14f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2117.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2117.md @@ -17,10 +17,10 @@ An array has too many initializers: The following sample generates C2117: -``` +```cpp // C2117.cpp int main() { char abc[4] = "abcd"; // C2117 char def[4] = "abd"; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md index d6223c2ee8..3a26b85d8f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2118.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2118.md @@ -13,10 +13,10 @@ The value defining the array size is larger than the maximum array size or small The following sample generates C2118: -``` +```cpp // C2118.cpp int main() { int array1[-1]; // C2118 int array2[3]; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md index 73723ba3e2..09c8d5c22f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2120.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2120.md @@ -13,10 +13,10 @@ The `void` type is used in a declaration with another type. The following sample generates C2120: -``` +```cpp // C2120.cpp int main() { void int i; // C2120 int j; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md index fe3eb82f12..3e919e5aa3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2124.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2124.md @@ -13,10 +13,10 @@ A constant expression has a zero denominator. To resolve the error, do not divid The following sample generates C2124: -``` +```cpp // C2124.cpp int main() { int i = 1 / 0; // C2124 do not divide by zero int i2 = 12 / 2; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md index 77713656aa..650583e151 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2128.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2128.md @@ -13,7 +13,7 @@ ms.assetid: 08cbf734-75b3-49f2-9026-9b319947612d The following sample generates C2128: -``` +```cpp // C2128.cpp // compile with: /c @@ -27,4 +27,4 @@ void func(); #pragma alloc_text("my segment", func) void func() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md index cc0b48f6c0..f68aeffaae 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2130.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2130.md @@ -13,10 +13,10 @@ The optional file name token following [#line](../../preprocessor/hash-line-dire The following sample generates C2130: -``` +```cpp // C2130.cpp int main() { #line 1000 test // C2130 #line 1000 "test" // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md index 28f26ada54..9b9f56881d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2133.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2133.md @@ -13,7 +13,7 @@ An unsized array is declared as a member of a class, structure, union, or enumer The following sample generates C2133: -``` +```cpp // C2133.cpp // compile with: /Za struct X { @@ -23,10 +23,10 @@ struct X { Possible resolution: -``` +```cpp // C2133b.cpp // compile with: /c struct X { int a[0]; // no /Za }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md index eae5070ddf..dcbcc91d88 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2134.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2134.md @@ -12,7 +12,7 @@ A function declared as constexpr can only call other functions declared as const The following sample generates C2134: -``` +```cpp // C2134.cpp // compile with: /c int A() { @@ -26,7 +26,7 @@ constexpr int B() { Possible resolution: -``` +```cpp // C2134b.cpp constexpr int A() { // add constexpr to A, since it meets the requirements of constexpr. return 42; @@ -35,4 +35,4 @@ constexpr int A() { // add constexpr to A, since it meets the requirements of c constexpr int B() { return A(); // No error } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md index ea0326a586..052b017453 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2135.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2135.md @@ -13,7 +13,7 @@ The address-of operator (`&`) cannot be applied to a bit field. The following sample generates C2135: -``` +```cpp // C2135.cpp struct S { int i : 1; @@ -26,4 +26,4 @@ int main() { &S::i; // C2135 address of a bit field &T::j; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md index 994569ec7e..02faeeda72 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2137.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2137.md @@ -13,10 +13,10 @@ The empty character constant ( ' ' ) is not permitted. The following sample generates C2137: -``` +```cpp // C2137.cpp int main() { char c = ''; // C2137 char d = ' '; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md index 005ce7d895..3c4da856af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2139.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2139.md @@ -17,7 +17,7 @@ For more information, see [Compiler Support for Type Traits](../../extensions/co The following sample generates C2139. -``` +```cpp // C2139.cpp // compile with: /EHsc #include @@ -41,4 +41,4 @@ int main() { cout << is_polymorphic::value << endl; // OK cout << is_polymorphic::value << endl; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md index b75b60612d..238cbd19b2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2140.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2140.md @@ -17,7 +17,7 @@ For more information, see [Compiler Support for Type Traits](../../extensions/co The following sample generates C2140. -``` +```cpp // C2140.cpp // compile with: /clr /c template @@ -38,4 +38,4 @@ ref class C { System::Console::WriteLine(is_polymorphic::value); // OK } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md index 6b03a944bf..8a880875ba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2141.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2141.md @@ -15,7 +15,7 @@ An array exceeds the 2GB limit. Reduce the size of the array. The following sample generates C2141. -``` +```cpp // C2141.cpp // processor: IPF class A { @@ -30,4 +30,4 @@ int main() A* pA2 = (A*)(-1); pA2 = new A[0x80000000000000F]; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md index f6d51abca6..69a2da29ab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2142.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2142.md @@ -13,10 +13,10 @@ One declaration of the function contains a variable parameter list. Another decl The following sample generates C2142: -``` +```c // C2142.c // compile with: /Za /c void func(); void func( int, ... ); // C2142 void func2( int, ... ); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md index 15d24dfecc..9bc8524283 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2146.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2146.md @@ -21,7 +21,7 @@ This error may be caused by a typographical error. Error [C2065](../../error-mes The following sample generates C2146. -``` +```cpp // C2146.cpp class CDeclaredClass {}; @@ -42,7 +42,7 @@ This error can also be generated as a result of compiler conformance work that w The following sample compiles in Visual Studio .NET 2002 but will fail in Visual Studio .NET 2003: -``` +```cpp // C2146b.cpp // compile with: /c template @@ -69,7 +69,7 @@ The use of `T` from the primary template is not allowed in the explicit speciali The following sample compiles in Visual Studio .NET but will fail in Visual Studio .NET 2003: -``` +```cpp // C2146_c.cpp // compile with: /c template @@ -80,4 +80,4 @@ struct S { T m_t; // C2146 int m_t2; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md index 318106d645..84eddcc11c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2147.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2147.md @@ -13,11 +13,11 @@ An identifier was used that is now a reserved keyword in the language. The following sample generates C2147: -``` +```cpp // C2147.cpp // compile with: /clr int main() { int gcnew = 0; // C2147 int i = 0; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md index 716de32483..4d490dd2e5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2148.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2148.md @@ -15,7 +15,7 @@ An array exceeds the limit. Reduce the size of the array. The following sample generates C2148: -``` +```cpp // C2148.cpp #include #include @@ -29,4 +29,4 @@ int main( ) { else printf_s("It didn't work."); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md index 2ac239b961..9b11ecdb3b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2149.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2149.md @@ -13,11 +13,11 @@ Bit fields can have zero width only if unnamed. The following sample generates C2149: -``` +```cpp // C2149.cpp // compile with: /c struct C { int i : 0; // C2149 int j : 2; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md index 9884c81464..02b3897284 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2153.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2153.md @@ -13,10 +13,10 @@ Hexadecimal constants 0x, 0X, and \x are not valid. At least one hex digit must The following sample generates C2153: -``` +```cpp // C2153.cpp int main() { int a= 0x; // C2153 int b= 0xA; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md index ebd9daf818..0ecbf33e59 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2156.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2156.md @@ -13,10 +13,10 @@ A pragma that must be specified at a global level (outside a function body) is w The following sample generates C2156: -``` +```cpp // C2156.cpp #pragma optimize( "l", on ) // OK int main() { #pragma optimize( "l", on ) // C2156 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md index 84e063e042..66a94f08b8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2157.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2157.md @@ -13,7 +13,7 @@ The function name is not declared before being referenced in the list of functio The following sample generates C2157: -``` +```cpp // C2157.cpp // compile with: /c #pragma alloc_text( "func", func) // C2157 @@ -21,4 +21,4 @@ The following sample generates C2157: // OK extern "C" void func(); #pragma alloc_text( "func", func) -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md index 4b2686dd81..b6128bb799 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2158.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2158.md @@ -15,7 +15,7 @@ The [make_public](../../preprocessor/make-public.md) pragma can only be applied The following sample generates C2158. -``` +```cpp // C2158.cpp // compile with: /clr /c ref class A {}; @@ -31,4 +31,4 @@ void C () {} class D {}; #pragma make_public(D) // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md index 1ecd2910ba..5d256d8d51 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2159.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2159.md @@ -13,9 +13,9 @@ A declaration contains more than one storage class. The following sample generates C2159: -``` +```cpp // C2159.cpp // compile with: /c static int i; // OK extern static int i; // C2159 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md index 895d9298a1..9b8ff5d7f8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2160.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2160.md @@ -13,9 +13,9 @@ A macro definition began with a token-pasting operator (##). The following sample generates C2160: -``` +```cpp // C2160.cpp // compile with: /c #define mac(a,b) #a // OK #define mac(a,b) ##a // C2160 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md index 2726cd8907..a678ebe296 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2161.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2161.md @@ -13,9 +13,9 @@ A macro definition ended with a token-pasting operator (##). The following sample generates C2161: -``` +```cpp // C2161.cpp // compile with: /c #define mac(a,b) a // OK #define mac(a,b) a## // C2161 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md index 59ec0d4780..cfe4611e07 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2162.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2162.md @@ -15,11 +15,11 @@ The token following a stringizing operator (#) is not a formal parameter name. The following sample generates C2162: -``` +```cpp // C2162.cpp // compile with: /c #include #define print(a) printf_s(b) // OK #define print(a) printf_s(#b) // C2162 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md index 3a32f38597..4daf883c21 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2164.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2164.md @@ -13,7 +13,7 @@ An `intrinsic` pragma uses an undeclared function (only occurs with **/Oi**). Or The following sample generates C2164: -``` +```c // C2164.c // compile with: /c // processor: x86 @@ -22,4 +22,4 @@ The following sample generates C2164: void b(float *p) { _mm_load_ss(p); // C2164 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md index 4d496250b1..9d9fb19523 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2165.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2165.md @@ -13,9 +13,9 @@ The `__stdcall`, `__cdecl`, or `__fastcall` keyword attempts to modify a pointer The following sample generates C2165: -``` +```cpp // C2165.cpp // compile with: /c char __cdecl *p; // C2165 char *p; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2166.md b/docs/error-messages/compiler-errors-1/compiler-error-c2166.md index 1ba0ca1541..85cbae24eb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2166.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2166.md @@ -13,10 +13,10 @@ Code attempts to modify an item declared `const`. The following sample generates C2166: -``` +```cpp // C2166.cpp int f(); int main() { ( (const int&) 1 ) = 5; // C2166 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md index e82f8a27e9..3187bf747d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2171.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2171.md @@ -15,7 +15,7 @@ A unary operator is used with an invalid operand type. The following sample generates C2171. -``` +```cpp // C2171.cpp int main() { double d, d1; @@ -31,7 +31,7 @@ int main() { The following sample generates C2171. -``` +```cpp // C2171_b.cpp // compile with: /c class A { @@ -51,4 +51,4 @@ public: private: void (A::*TF)(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md index e6bac8c810..bc7e47127c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2177.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2177.md @@ -13,10 +13,10 @@ A constant value is too large for the variable type it is assigned. The following sample generates C2177: -``` +```cpp // C2177.cpp int main() { int a=18446744073709551616; // C2177 int b=18446744073709551615; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md index 186b2094dd..76742b6cb5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2178.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2178.md @@ -17,7 +17,7 @@ The `mutable` specifier can be applied only to names of class data members, and The following sample shows how C2178 may occur, and how to fix it. -``` +```cpp // C2178.cpp // compile with: cl /c /W4 C2178.cpp diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md index 2f5900aa20..2bce26c793 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2179.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2179.md @@ -15,7 +15,7 @@ A generic type parameter is resolved at runtime. However, an attribute parameter The following sample generates C2179. -``` +```cpp // C2179.cpp // compile with: /clr using namespace System; @@ -39,4 +39,4 @@ public: // [Attr(G::typeid)] T t; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md index 81b9cad023..3eac3cd340 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2180.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2180.md @@ -13,7 +13,7 @@ The controlling expression in an `if`, `while`, `for`, or `do` statement is an e The following sample generates C2180: -``` +```c // C2180.c int main() { @@ -22,4 +22,4 @@ int main() { while (1) // OK return 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md index 9136a561f3..1e13e4cd10 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2181.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2181.md @@ -13,7 +13,7 @@ Each `else` must have a matching `if`. The following sample generates C2181: -``` +```cpp // C2181.cpp int main() { int i = 0; @@ -24,7 +24,7 @@ int main() { Possible resolution: -``` +```cpp // C2181b.cpp int main() { int i = 0; @@ -33,4 +33,4 @@ int main() { else i = 1; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md index c5091075b6..f24dbad276 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2182.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2182.md @@ -13,7 +13,7 @@ A variable is declared type `void`. The following sample generates C2182: -``` +```cpp // C2182.cpp // compile with: /c int main() { @@ -21,4 +21,4 @@ int main() { void &ir = i; // C2182 cannot have a reference to type void int &ir = i; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md index bc9023f503..d202cd0666 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2184.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2184.md @@ -13,7 +13,7 @@ A type was used in an [__except](../../c-language/try-except-statement-c.md) sta The following sample generates C2184: -``` +```cpp // C2184.cpp void f() { int * p; @@ -24,7 +24,7 @@ void f() { Possible resolution: -``` +```cpp // C2184b.cpp // compile with: /c void f() { @@ -32,4 +32,4 @@ void f() { __try{} __except(i){}; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md index 28c178cf4d..cf03fb1e2a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2186.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2186.md @@ -13,11 +13,11 @@ The operator has a `void` operand. The following sample generates C2186: -``` +```cpp // C2186.cpp // compile with: /c void func1( void ); int func2( void ); int i = 2 + func1(); // C2186 func1() is type void int j = 2 + func2(); // OK both operands are type int -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md index e82038d893..fedfb6890f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2190.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2190.md @@ -13,10 +13,10 @@ A C function was declared a second time with a shorter parameter list. C does no The following sample generates C2190: -``` +```c // C2190.c // compile with: /Za /c void func( int, float ); void func( int ); // C2190, different parameter list void func2( int ); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md index 0b94f52b1f..04a406bb2e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2191.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2191.md @@ -15,10 +15,10 @@ A C function was declared a second time with a longer parameter list. C does not The following sample generates C2191: -``` +```c // C2191.c // compile with: /Za /c void func( int ); void func( int, float ); // C2191 different parameter list void func2( int, float ); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md index dd84849467..60735b80f9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2192.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2192.md @@ -13,10 +13,10 @@ A C function was declared a second time with a different parameter list. C does The following sample generates C2192: -``` +```c // C2192.c // compile with: /Za /c void func( float, int ); void func( int, float ); // C2192, different parameter list void func2( int, float ); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md index b1a90e9ad5..0b568e15df 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2193.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2193.md @@ -13,7 +13,7 @@ A function was placed in two different segments using `alloc_text` and `code_seg The following sample generates C2193: -``` +```cpp // C2193.cpp // compile with: /c extern "C" void MYFUNCTION(); @@ -21,4 +21,4 @@ extern "C" void MYFUNCTION(); #pragma code_seg("MYCODE2") extern "C" void MYFUNCTION() {} // C2193 extern "C" void MYFUNCTION2() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md index 9043bf333f..612a8d68c8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2194.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2194.md @@ -13,10 +13,10 @@ The `data_seg` pragma uses a segment name used with `code_seg`. The following sample generates C2194: -``` +```cpp // C2194.cpp // compile with: /c #pragma code_seg("MYCODE") #pragma data_seg("MYCODE") // C2194 #pragma data_seg("MYCODE2") // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md index 76093de827..13b496c0f4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2195.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2195.md @@ -13,9 +13,9 @@ The `code_seg` pragma uses a segment name used with the `data_seg` pragma. The following sample generates C2195: -``` +```cpp // C2195.cpp #pragma data_seg("MYDATA") #pragma code_seg("MYDATA") // C2195 #pragma code_seg("MYDATA2") // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md index a915b2504a..de42d4fffb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2196.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2196.md @@ -13,7 +13,7 @@ A switch statement uses the same case value more than once. The following sample generates C2196: -``` +```cpp // C2196.cpp int main() { int i = 0; @@ -26,4 +26,4 @@ int main() { break; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md index a857f62248..9d29b99d5b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2197.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2197.md @@ -13,7 +13,7 @@ The compiler detected too many parameters for a call to the function, or an inco The following sample generates C2197: -``` +```c // C2197.c // compile with: /Za /c void func( int ); @@ -21,4 +21,4 @@ int main() { func( 1, 2 ); // C2197 two actual parameters func( 2 ); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md index 819ed4c985..9c97fa54a8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2198.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2198.md @@ -13,7 +13,7 @@ The compiler found too few parameters for a call to the function, or an incorrec The following sample generates C2198: -``` +```c // C2198.c // compile with: /c void func( int, int ); @@ -21,4 +21,4 @@ int main() { func( 1 ); // C2198 only one actual parameter func( 1, 1 ); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md index 4950e62b87..c5a1594bd7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2199.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2199.md @@ -13,9 +13,9 @@ The specified context caused a syntax error. There may be incorrect declaration The following sample generates C2199: -``` +```cpp // C2199.cpp // compile with: /c int j = int(1) int(1); // C2199 int j = 1; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md index 9127f21033..d729af1bef 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2201.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2201.md @@ -13,7 +13,7 @@ The exported identifier is `static`. The following sample generates C2286: -``` +```cpp // C2201.cpp // compile with: /c __declspec(dllexport) static void func() {} // C2201 func() is static @@ -22,4 +22,4 @@ __declspec(dllexport) void func2() {} // OK ## See also -[Types of Linkage](../../cpp/types-of-linkage.md) \ No newline at end of file +[Types of Linkage](../../cpp/types-of-linkage.md) diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md index 43e2acab51..40ee71b34e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2203.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2203.md @@ -13,7 +13,7 @@ With the **/Za** (ANSI) option, the `delete` operator can delete an entire array The following sample generates C2203: -``` +```cpp // C2203.cpp // compile with: /Za int main() { @@ -22,4 +22,4 @@ int main() { // try the following line instead // delete [] ar; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md index 23f6fbc827..01b05893f6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2206.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2206.md @@ -13,7 +13,7 @@ A `typedef` is used to define a function type. The following sample generates C2206: -``` +```cpp // C2206.cpp typedef int functyp(); typedef int MyInt; @@ -21,4 +21,4 @@ functyp func1 {}; // C2206 int main() { MyInt i = 0; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md index b73e3be43e..146262d92a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2208.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2208.md @@ -13,10 +13,10 @@ An identifier resolving to a type name is in an aggregate declaration, but the c The following sample generates C2208: -``` +```cpp // C2208.cpp class C { C; // C2208 C(){} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md index 9e6fbfe4e3..2822c5c5ec 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2213.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2213.md @@ -13,11 +13,11 @@ The argument modifying `__based` is invalid. The following sample generates C2213: -``` +```cpp // C2213.cpp // compile with: /c int i; int *j; char __based(i) *p; // C2213 char __based(j) *p2; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md index 1656b11514..0a3b0c0732 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2216.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2216.md @@ -15,7 +15,7 @@ Two keywords that are mutually exclusive were used together. The following sample generates C2216. -``` +```cpp // C2216.cpp // compile with: /clr /c ref struct Y1 { @@ -28,7 +28,7 @@ ref struct Y1 { The following sample generates C2216. -``` +```cpp // C2216b.cpp // compile with: /clr /c public ref class X { @@ -41,7 +41,7 @@ public ref class X { The following sample generates C2216. -``` +```cpp // C2216c.cpp // compile with: /clr /c public interface struct I { @@ -55,4 +55,4 @@ public ref struct R : I { virtual double g() new { return 0.0; } // OK virtual double h() override { return 0.0; } // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md index 1f4d31f718..8d58faca8f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2217.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2217.md @@ -21,7 +21,7 @@ The first function attribute requires the second attribute. C2217 can also occur if you attempt to bind a delegate to a CLR function that takes a variable number of arguments. If the function also has e param array overload, use that instead. The following sample generates C2217. -``` +```cpp // C2217.cpp // compile with: /clr using namespace System; @@ -37,4 +37,4 @@ int main() { // wl("{0}, {1}", 0, 1); wl("{0}, {1}", x); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md index 8f65f9f6d9..d86cda43c1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2227.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2227.md @@ -13,7 +13,7 @@ The operand to the left of `->` is not a pointer to a class, structure, or union The following sample generates C2227: -``` +```cpp // C2227.cpp int *pInt; struct S { @@ -25,4 +25,4 @@ int main() { pInt->member = 0; // C2227 pInt points to an int pS->member = 0; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md index f6007aabc3..8c125ac97a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2228.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2228.md @@ -13,7 +13,7 @@ The operand to the left of the period (.) is not a class, structure, or union. The following sample generates C2228: -``` +```cpp // C2228.cpp int i; struct S { @@ -34,4 +34,4 @@ You will also see this error if you use incorrect syntax when using Managed Exte Wrong: `String * myString = checkedListBox1->CheckedItems->Item[0].ToString();` -Right: `String * myString = checkedListBox1->CheckedItems->Item[0]->ToString();` \ No newline at end of file +Right: `String * myString = checkedListBox1->CheckedItems->Item[0]->ToString();` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md index 5e73caed8b..b222da7332 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2229.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2229.md @@ -17,7 +17,7 @@ If the zero sized array is not the last member of the struct, the compiler can't The following sample generates C2229: -``` +```cpp // C2229.cpp struct S { int a[0]; // C2229 zero-sized array @@ -34,4 +34,4 @@ int main() { S2* s2 = (S2*)new int[sizeof(S2) + 7*sizeof(int)]; s2->b[6] = 100; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md index 380db97c81..8686146ef3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2231.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2231.md @@ -13,7 +13,7 @@ The operand to the left of the member-selection operation (.) is a pointer inste The following sample generates C2231: -``` +```c // C2231.c struct S { int member; @@ -25,4 +25,4 @@ int main() { ps->member = 0; // crash s.member = 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md index d1195c72dc..e03c7d8619 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2232.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2232.md @@ -13,7 +13,7 @@ The operand to the left of the `->` operator is not a pointer. Use the period (. The following sample generates C2232: -``` +```c // C2232.c struct X { int member; @@ -24,4 +24,4 @@ int main() { px->member = 0; x.member = 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md index 80da398693..3e2fb1a27f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2233.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2233.md @@ -13,7 +13,7 @@ Each object in an array must contain at least one element. The following sample generates C2233: -``` +```cpp // C2233.cpp // compile with: /c class A { @@ -26,4 +26,4 @@ class B { A array[100]; // OK B array2[100]; // C2233 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md index c6d8114329..2d2b64cbce 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2234.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2234.md @@ -13,11 +13,11 @@ Because pointers to references are not allowed, arrays of references are not pos The following sample generates C2234: -``` +```cpp // C2234.cpp int main() { int i = 0, j = 0, k = 0, l = 0; int &array[4] = {i,j,k,l}; // C2234 int array2[4] = {i,j,k,l}; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md index 7c24132ed1..c8c72ea797 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2236.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2236.md @@ -13,10 +13,10 @@ The identifier is already defined as a type and cannot be overridden by a user-d The following sample generates C2236: -``` +```cpp // C2236.cpp // compile with: /c int class A {}; // C2236 "int class" is unexpected int i; class B {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md index 4cb953c466..bb2810549d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2238.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2238.md @@ -13,10 +13,10 @@ An incorrect token was found. The following sample generates C2238: -``` +```cpp // C2238.cpp // compile with: /c class v { virtual: int vvv; // C2238 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md index 21969f040c..d92e9f01e8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2243.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2243.md @@ -13,7 +13,7 @@ Access protection (`protected` or `private`) prevented conversion from a pointer The following sample generates C2243: -``` +```cpp // C2243.cpp // compile with: /c class B {}; @@ -27,4 +27,4 @@ E e; B *p2 = &e; ``` -Base classes with `protected` or `private` access are not accessible to clients of the derived class. These levels of access control are used to indicate that the base class is an implementation detail that should be invisible to clients. Use public derivation if you want clients of the derived class to have access to implicit conversion of a derived class pointer to a pointer to the base class. \ No newline at end of file +Base classes with `protected` or `private` access are not accessible to clients of the derived class. These levels of access control are used to indicate that the base class is an implementation detail that should be invisible to clients. Use public derivation if you want clients of the derived class to have access to implicit conversion of a derived class pointer to a pointer to the base class. diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md index db44cfc55a..fdc2402bf1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2244.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2244.md @@ -15,7 +15,7 @@ This error only occurs in C++ projects. The following sample generates C2244: -``` +```cpp // C2244.cpp int func(char) { return 0; @@ -32,7 +32,7 @@ int main() { C2244 can also occur when an incorrect function signature is used for a member function of a class template. -``` +```cpp // C2244b.cpp // compile with: /c template @@ -48,7 +48,7 @@ void XYZ::func(int i) {} // C2244 wrong function signature C2244 can also occur when an incorrect function signature is used for a member function template. -``` +```cpp // C2244c.cpp // compile with: /c class ABC { @@ -64,7 +64,7 @@ void ABC::func(int i) {} // C2244 wrong signature You cannot partially specialize a function template. -``` +```cpp // C2244d.cpp template class QRS { @@ -73,4 +73,4 @@ class QRS { template void QRS::func(T t, int u) {} // C2244 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md index 4bd3a8fb31..80e8ce4c04 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2245.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2245.md @@ -13,7 +13,7 @@ A function specified as a friend was not found by the compiler. The following sample generates C2245: -``` +```cpp // C2245.cpp // compile with: /c class B { @@ -31,4 +31,4 @@ void B::f(int i) { A a; a.m_i = 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md index 599ad68c52..8efd048e9f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2246.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2246.md @@ -13,11 +13,11 @@ A member of a class, structure, or union with local scope is declared `static`. The following sample generates C2246: -``` +```cpp // C2246.cpp // compile with: /c void func( void ) { class A { static int i; }; // C2246 i is local to func static int j; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md index 5bd5ccf2be..e12789cd8f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2247.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2247.md @@ -13,7 +13,7 @@ ms.assetid: 72efa03e-615e-4ef9-aede-0a98654b20fd The following sample generates C2247: -``` +```cpp // C2247.cpp class A { public: @@ -28,7 +28,7 @@ This error can also be generated as a result of compiler conformance work that w For code that is valid in both the Visual Studio .NET 2003 and Visual Studio .NET versions of Visual C++, declare the member to be a friend of the type. Public inheritance could also be used. -``` +```cpp // C2247b.cpp // compile with: /c // C2247 expected @@ -53,7 +53,7 @@ C2247 can also be generated as a result of compiler conformance work that was do For code that is valid in both the Visual Studio .NET 2003 and Visual Studio .NET versions of Visual C++, use the scope operator. -``` +```cpp // C2247c.cpp // compile with: /c struct A {}; @@ -67,4 +67,4 @@ struct C : B { // ::A *p2 = (::A*) this; } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md index 4c9e18c6cc..7277329c0e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2249.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2249.md @@ -15,7 +15,7 @@ The `member` is inherited from a nonpublic `virtual` base class or structure. The following sample generates C2249. -``` +```cpp // C2249.cpp class A { private: @@ -36,7 +36,7 @@ int main() { C2249 can also occur if you try to assign a stream from the C++ Standard Library to another stream. The following sample generates C2249. -``` +```cpp // C2249_2.cpp #include using namespace std; @@ -44,4 +44,4 @@ int main() { cout = cerr; // C2249 #define cout cerr; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md index b957229eb5..960c5ee99c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2250.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2250.md @@ -13,7 +13,7 @@ The derived class inherits more than one override of a virtual function of a vir The following sample generates C2286: -``` +```cpp // C2250.cpp // compile with: /c // C2250 expected @@ -33,4 +33,4 @@ struct D : A, B { // Uncomment the following line to resolve. // void vf(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md index b8f6f187bb..1abc857594 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2251.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2251.md @@ -13,7 +13,7 @@ The compiler was not able to find an identifier in the specified namespace. The following sample generates C2251: -``` +```cpp // C2251.cpp // compile with: /c namespace A { @@ -26,4 +26,4 @@ namespace A { void A::f1() {} // C2251 void A::B::f1() {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md index b814042db9..cb2eb40963 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2252.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2252.md @@ -13,7 +13,7 @@ The compiler detected a problem with an explicit instantiation of a template. F The following sample generates C2252: -``` +```cpp // C2252.cpp class A { public: @@ -31,4 +31,4 @@ int main() { // cannot explicitly instantiate in function template int A::getit(int i, long * it); // C2252 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md index f45ef0fed9..d09739bd2f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2253.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2253.md @@ -13,7 +13,7 @@ A nonvirtual function is specified as pure `virtual`. The following sample generates C2253: -``` +```cpp // C2253.cpp // compile with: /c class A { @@ -25,7 +25,7 @@ public: The following sample generates C2253: -``` +```cpp // C2253_2.cpp // compile with: /clr /c ref struct A { @@ -39,4 +39,4 @@ ref struct A { // virtual void set(int i) abstract; } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md index 475e8126c2..abf7308761 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2254.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2254.md @@ -13,7 +13,7 @@ A `friend` function is specified as pure `virtual`. The following sample generates C2254: -``` +```cpp // C2254.cpp // compile with: /c class A { @@ -25,4 +25,4 @@ public: void func1() {}; void func3() {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md index 41ec4c1d90..5eb808be30 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2255.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2255.md @@ -13,7 +13,7 @@ For example, a nonmember function is declared a `friend`. The following sample generates C2255: -``` +```cpp // C2255.cpp // compile with: /c class A { @@ -24,4 +24,4 @@ private: friend void func1() {} // C2255 void func2(){} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md index 088771b8c7..24e3057216 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2256.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2256.md @@ -13,7 +13,7 @@ A destructor or constructor cannot be specified as a [friend](../../cpp/friend-c The following sample generates C2256: -``` +```cpp // C2256.cpp // compile with: /c class C { @@ -21,4 +21,4 @@ public: friend ~C(); // C2256 ~C(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md index 87929711cf..129508e94a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2258.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2258.md @@ -13,7 +13,7 @@ A pure virtual function is declared with incorrect syntax. The following sample generates C2258: -``` +```cpp // C2258.cpp // compile with: /c class A { @@ -21,4 +21,4 @@ public: void virtual func1() = 1; // C2258 void virtual func2() = 0; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md index e4c1542530..fbcd8fd361 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2259.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2259.md @@ -17,7 +17,7 @@ For more information, see [Implicitly abstract classes](../../dotnet/how-to-defi The following sample generates C2259: -``` +```cpp // C2259.cpp // compile with: /c class V { @@ -46,7 +46,7 @@ C2259 can also occur as a result of conformance work that was done in Visual Stu The following sample generates C2259: -``` +```cpp // C2259b.cpp // compile with: /c #include @@ -84,7 +84,7 @@ MyClass4 y; The following sample generates C2259: -``` +```cpp // C2259c.cpp // compile with: /clr interface class MyInterface { diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md index 2f26090e3b..0e898489ea 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2261.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2261.md @@ -19,11 +19,11 @@ For more on the correct syntax when specifying friend assemblies, see [Friend As The following sample generates C2261. -``` +```cpp // C2261.cpp // compile with: /clr /c using namespace System::Runtime::CompilerServices; [assembly: InternalsVisibleTo("a,a,a")]; // C2261 [assembly: InternalsVisibleTo("a.a")]; // OK [assembly: InternalsVisibleTo("a")]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md index 986b0cda0e..94d37bf583 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2262.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2262.md @@ -15,10 +15,10 @@ The attribute The following sample generates C2262. -``` +```cpp // C2262.cpp // compile with: /clr /c using namespace System::Runtime::CompilerServices; [assembly: InternalsVisibleTo("assembly_name, version=1.2.3.7")]; // C2262 [assembly: InternalsVisibleTo("assembly_name ")]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md index 97893c1094..4be2d6d35d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2264.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2264.md @@ -13,7 +13,7 @@ The function cannot be called due to an incorrect definition or declaration. The following sample generates C2264: -``` +```cpp // C2264.cpp struct C { // Delete the following line to resolve. @@ -33,4 +33,4 @@ int main() { D d; i = d; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md index dfd3567d24..ad51bf3428 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2267.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2267.md @@ -13,10 +13,10 @@ A local function is declared `static`. Static functions must have global scope. The following sample generates C2267: -``` +```cpp // C2267.cpp static int func2(); // OK int main() { static int func1(); // C2267 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md index 90364719cd..7290b90548 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2268.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2268.md @@ -13,7 +13,7 @@ A function defined in your source code has the same name as an internal compiler The following sample generates C2268: -``` +```c // C2268.c // compile with: /c // processor: x86 @@ -33,7 +33,7 @@ void* mainCRTStartup(void* p) { and then: -``` +```c // C2268b.c // compile with: C2268.c /EHsc /GL /Ob0 /O2 /Fa /GS- /link /nodefaultlib // processor: x86 @@ -72,4 +72,4 @@ int main(void) { g = SHFusionLoadLibrary(10); return 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md index 8ead55bda8..08482c4427 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2270.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2270.md @@ -13,7 +13,7 @@ A nonmember function is declared with [const](../../cpp/const-cpp.md), [volatile The following sample generates C2270: -``` +```cpp // C2270.cpp // compile with: /c void func1(void) const; // C2270, nonmember function @@ -24,4 +24,4 @@ class CMyClass { public: void func2(void) const; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md index a1f0c9a154..81906de6e1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2271.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2271.md @@ -13,7 +13,7 @@ The operator (`new` or `delete`) is declared with a memory-model specifier. The following sample generates C2271: -``` +```cpp // C2271.cpp // compile with: /c void* operator new(size_t) const { // C2271 @@ -27,4 +27,4 @@ struct X { // try the following line instead // void * X::operator new(size_t) const; // static member operator new }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md index 39694b25e9..fc65a9e8df 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2272.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2272.md @@ -13,7 +13,7 @@ A `static` member function is declared with a memory-model specifier, such as [c The following sample generates C2272: -``` +```cpp // C2272.cpp // compile with: /c class CMyClass { @@ -21,4 +21,4 @@ public: static void func1() const volatile; // C2272 func1 is static void func2() const volatile; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md index 51acf7714f..0c7347ad5e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2273.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2273.md @@ -15,7 +15,7 @@ This error can be caused by trying to access a user-defined type conversion. Use The following sample generates C2273: -``` +```cpp // C2273.cpp struct MyClass { operator int() { @@ -27,4 +27,4 @@ int main() { int i = ClassPtr->int(); // C2273 int j = ClassPtr-> operator int(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md index 1147337bf1..eae68c963c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2274.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2274.md @@ -15,7 +15,7 @@ This error can be caused by trying to access a user-defined type conversion. Use The following sample generates C2286: -``` +```cpp // C2274.cpp struct MyClass { operator int() { @@ -28,4 +28,4 @@ int main() { int i = ClassName.int(); // C2274 int j = ClassName.operator int(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md index ee16980aa2..ebf08f92ee 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2275.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2275.md @@ -13,7 +13,7 @@ An expression uses the `->` operator with a `typedef` identifier. The following sample generates C2275: -``` +```cpp // C2275.cpp typedef struct S { int mem; @@ -22,4 +22,4 @@ void func1( int *parm ); void func2() { func1( &S_t->mem ); // C2275, S_t is a typedef } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md index d6246c94e6..3e9a2bb2af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2276.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2276.md @@ -13,7 +13,7 @@ The compiler found a problem with the syntax to create a pointer-to-member. The following sample generates C2276: -``` +```cpp // C2276.cpp class A { public: @@ -39,4 +39,4 @@ int main() { // try the following line instead // &A::func; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md index a5c8f2ea94..e6dd365855 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2277.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2277.md @@ -13,11 +13,11 @@ You cannot take the address of a member function. The following sample generates C2277: -``` +```cpp // C2277.cpp class A { public: A(); }; (*pctor)() = &A::A; // C2277 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md index 2cdfd0e8b5..24494c5e23 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2279.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2279.md @@ -13,9 +13,9 @@ Under **/Za**, [exception specifications](../../cpp/exception-specifications-thr The following sample generates C2279: -``` +```cpp // C2279.cpp // compile with: /Za /c typedef int (*xy)() throw(...); // C2279 typedef int (*xyz)(); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md index 702597af9f..1a8df67ec0 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2283.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2283.md @@ -13,7 +13,7 @@ A member function of an unnamed class or structure is declared with a pure speci The following sample generates C2283: -``` +```cpp // C2283.cpp // compile with: /c struct { @@ -22,4 +22,4 @@ struct { struct T { virtual void func() = 0; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md index c772862d87..c04592eaf8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2286.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2286.md @@ -17,10 +17,10 @@ For more information, see [Inheritance Keywords](../../cpp/inheritance-keywords. The following sample generates C2286: -``` +```cpp // C2286.cpp // compile with: /c class __single_inheritance X; class __multiple_inheritance X; // C2286 class __multiple_inheritance Y; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md index 1fdb018bbf..0b174b6612 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2287.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2287.md @@ -13,7 +13,7 @@ A class is declared with a simpler representation than required. The following sample generates C2287: -``` +```cpp // C2287.cpp // compile with: /vmg /c class __single_inheritance X; @@ -23,4 +23,4 @@ struct A { }; struct B { }; struct X : A, B { }; // C2287 X uses multiple inheritance struct Y : A { }; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md index dfd15216bb..63f82b2dd2 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2289.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2289.md @@ -13,9 +13,9 @@ A type declaration or definition uses a type qualifier (`const`, `volatile`, `si The following sample generates C2286: -``` +```cpp // C2289.cpp // compile with: /Za /c volatile volatile int i; // C2289 volatile int j; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2292.md b/docs/error-messages/compiler-errors-1/compiler-error-c2292.md index 1b7b56c92a..2f286f0b2d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2292.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2292.md @@ -11,7 +11,7 @@ ms.assetid: 256b392f-2b8f-4162-b578-e7633984e162 Compiling the following code with [/vmb](../../build/reference/vmb-vmg-representation-method.md) ("Best-case always" representation) causes C2292. -``` +```cpp // C2292.cpp // compile with: /vmb class __single_inheritance X; @@ -19,4 +19,4 @@ class __single_inheritance X; struct A { }; struct B { }; struct X : A, B { }; // C2292, X uses multiple inheritance -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2293.md b/docs/error-messages/compiler-errors-1/compiler-error-c2293.md index 33919242a0..99b5028eca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2293.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2293.md @@ -13,7 +13,7 @@ Specifiers for `__based` modifier must be nonmember pointers. The following sample generates C2293: -``` +```cpp // C2293.cpp // compile with: /c class A { @@ -21,4 +21,4 @@ class A { void __based(i) *bp; // C2293 void *bp2; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2296.md b/docs/error-messages/compiler-errors-1/compiler-error-c2296.md index 46fc16f570..7ccca43c2f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2296.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2296.md @@ -15,7 +15,7 @@ For example, the compiler may see a declaration where you intended a function ca The following sample generates C2296: -``` +```cpp // C2296.cpp struct MyStruct { struct Help { @@ -46,4 +46,4 @@ int main() { MyStruct m_MyStruct3 = m_MyStruct1 * m_MyStruct2; // C2296 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2297.md b/docs/error-messages/compiler-errors-1/compiler-error-c2297.md index 1c1e5e0488..56e7b28052 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2297.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2297.md @@ -15,7 +15,7 @@ For example, the compiler may see a declaration where you intended a function ca The following sample generates C2297: -``` +```cpp // C2297.cpp struct MyStruct { struct Help { @@ -48,4 +48,4 @@ int main() { MyStruct m_MyStruct3 = m_MyStruct1 * m_MyStruct2; // C2297 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2298.md b/docs/error-messages/compiler-errors-1/compiler-error-c2298.md index e7bcb9d095..8da9354682 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2298.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2298.md @@ -15,7 +15,7 @@ A pointer to member-function expression must call the member function. The following sample generates C2298. -``` +```cpp // C2298.cpp #include @@ -51,7 +51,7 @@ int main() { The following sample generates C2298. -``` +```cpp // C2298_b.cpp // compile with: /c void F() {} @@ -67,4 +67,4 @@ private: void (Measure::*TrackingFunction)(void); void (*GlobalTracker)(void); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2299.md b/docs/error-messages/compiler-errors-1/compiler-error-c2299.md index a97e9212c0..2305fc553b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2299.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2299.md @@ -15,7 +15,7 @@ To resolve C2299, do not make the copy constructor or assignment operator a temp The following sample generates C2299: -``` +```cpp // C2299.cpp // compile with: /c class C { @@ -25,4 +25,4 @@ class C { template <> C (const C&); // C2299 C (const C&); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2309.md b/docs/error-messages/compiler-errors-1/compiler-error-c2309.md index 8e8ee8609c..591f83bd17 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2309.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2309.md @@ -13,7 +13,7 @@ A catch handler has no parenthesized type. The following sample generates C2309: -``` +```cpp // C2309.cpp // compile with: /EHsc #include @@ -26,4 +26,4 @@ int main() { // try the following line instead // catch( C ) {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2310.md b/docs/error-messages/compiler-errors-1/compiler-error-c2310.md index 76dd0fa4fe..36f1e8aeb6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2310.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2310.md @@ -13,7 +13,7 @@ A catch handler specified no type or multiple types. The following sample generates C2310: -``` +```cpp // C2310.cpp // compile with: /EHsc #include @@ -25,4 +25,4 @@ int main() { // try the following line instead // catch( int) {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2311.md b/docs/error-messages/compiler-errors-1/compiler-error-c2311.md index a1707dc4f1..13eb7b404d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2311.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2311.md @@ -13,7 +13,7 @@ The catch handler for the ellipsis (...) must be the last handler for a throw. The following sample generates C2311: -``` +```cpp // C2311.cpp // compile with: /EHsc #include @@ -24,4 +24,4 @@ int main() { catch( ... ) {} catch( int ) {} // C2311 ellipsis handler not last catch } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2312.md b/docs/error-messages/compiler-errors-1/compiler-error-c2312.md index 7d2beb89ef..1160f1e6c4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2312.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2312.md @@ -13,7 +13,7 @@ Two handlers catch the same exception type. The following sample generates C2312: -``` +```cpp // C2312.cpp // compile with: /EHsc #include @@ -24,4 +24,4 @@ int main() { catch( signed int ) {} catch( int ) {} // C2312 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2313.md b/docs/error-messages/compiler-errors-1/compiler-error-c2313.md index 6d17cdc779..593dd5531e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2313.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2313.md @@ -13,7 +13,7 @@ The exception type has two handlers. The type for the second catch is a referenc The following sample generates C2313: -``` +```cpp // C2313.cpp // compile with: /EHsc #include @@ -25,4 +25,4 @@ int main() { catch( C& ) {} catch( C ) {} // C2313 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2317.md b/docs/error-messages/compiler-errors-1/compiler-error-c2317.md index 83b5dcde24..2ca4924676 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2317.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2317.md @@ -13,7 +13,7 @@ A `try` block must have at least one catch handler. The following sample generates C2317: -``` +```cpp // C2317.cpp // compile with: /EHsc #include @@ -27,7 +27,7 @@ int main() { Possible resolution: -``` +```cpp // C2317b.cpp // compile with: /EHsc #include @@ -37,4 +37,4 @@ int main() { } catch(char*) {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2318.md b/docs/error-messages/compiler-errors-1/compiler-error-c2318.md index 7cde439260..1af162dd3d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2318.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2318.md @@ -13,7 +13,7 @@ A `catch` handler is defined but not preceded by a `try` block. The following sample generates C2318: -``` +```cpp // C2318.cpp // compile with: /EHsc #include @@ -25,7 +25,7 @@ int main() { Possible resolution: -``` +```cpp // C2318b.cpp // compile with: /EHsc #include @@ -33,4 +33,4 @@ int main() { try{} catch( int ) {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2319.md b/docs/error-messages/compiler-errors-1/compiler-error-c2319.md index 58db26e1de..91dcf639ca 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2319.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2319.md @@ -13,7 +13,7 @@ A `try` or `catch` block is not found following the `try` or `catch` statement. The following sample generates C2319: -``` +```cpp // C2319.cpp // compile with: /EHsc #include @@ -26,4 +26,4 @@ int main() { // try the following line instead // catch( C ) {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2324.md b/docs/error-messages/compiler-errors-1/compiler-error-c2324.md index eb61415f4e..c871518965 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2324.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2324.md @@ -13,7 +13,7 @@ A destructor is called using an incorrect identifier. The following sample generates C2324: -``` +```cpp // C2324.cpp class A {}; typedef A* pA_t; @@ -24,4 +24,4 @@ int main() { ppa->~i; // C2324 ppa->~pA_t(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2325.md b/docs/error-messages/compiler-errors-1/compiler-error-c2325.md index 351c09ad9b..2477628e04 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2325.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2325.md @@ -13,7 +13,7 @@ A call is made to a destructor of incorrect type. The following sample generates C2325: -``` +```cpp // C2325.cpp // compile with: /c class A {}; @@ -25,4 +25,4 @@ void f() { pA_t *ppa2 = new pA_t; ppa2->~pA_t(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2326.md b/docs/error-messages/compiler-errors-1/compiler-error-c2326.md index 01e6fff697..a3c836a8ad 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2326.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2326.md @@ -15,7 +15,7 @@ The code tries to modify a member variable, which is not possible. The following sample generates C2326: -``` +```cpp // C2326.cpp void MyFunc() { int i; @@ -27,4 +27,4 @@ void MyFunc() { } }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2327.md b/docs/error-messages/compiler-errors-1/compiler-error-c2327.md index ecbc4c0e82..beafe55598 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2327.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2327.md @@ -15,7 +15,7 @@ When compiling with **/clr**, a common cause for C2327 is a property with the sa The following sample generates C2327: -``` +```cpp // C2327.cpp int x; class enclose { @@ -34,7 +34,7 @@ public: C2327 can also occur if the name of a type is hidden by the name of a member: -``` +```cpp // C2327b.cpp class X {}; @@ -48,7 +48,7 @@ class S { C2327 can also fire in this situation, where you need to fully specify the data type of the parameter: -``` +```cpp // C2327c.cpp // compile with: /c struct A {}; @@ -63,7 +63,7 @@ struct B { The following sample generates C2327: -``` +```cpp // C2327d.cpp // compile with: /clr /c using namespace System; @@ -97,7 +97,7 @@ namespace NA { The following sample shows C2327 when a property has the same name as the property type: -``` +```cpp // C2327f.cpp // compile with: /clr /c public value class Address {}; diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2332.md b/docs/error-messages/compiler-errors-1/compiler-error-c2332.md index 3e60a15cba..48a4f19901 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2332.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2332.md @@ -13,7 +13,7 @@ The compiler found an incomplete type definition. The following sample generates C2332: -``` +```cpp // C2332.cpp // compile with: /c struct S { @@ -26,4 +26,4 @@ typedef struct S* pS; // OK int get_S_i(pS p) { return p->i; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2333.md b/docs/error-messages/compiler-errors-1/compiler-error-c2333.md index 33d6742667..b58310796f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2333.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2333.md @@ -13,9 +13,9 @@ This error occurs after another error, for member functions defined inside their The following sample generates C2333: -``` +```cpp // C2333.cpp struct s1 { s1(s1) {} // C2333 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2334.md b/docs/error-messages/compiler-errors-1/compiler-error-c2334.md index 7c7344dc06..1d850cee16 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2334.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2334.md @@ -11,7 +11,7 @@ unexpected token(s) preceding ': or {'; skipping apparent function body The following sample generates C2334. This error occurs after error C2059: -``` +```cpp // C2334.cpp // compile with: /c // C2059 expected @@ -19,4 +19,4 @@ struct s1 { s1 {} // C2334 s1() {} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2337.md b/docs/error-messages/compiler-errors-1/compiler-error-c2337.md index ddf6ab1c60..b29788a494 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2337.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2337.md @@ -1,23 +1,23 @@ --- title: "Compiler Error C2337" -ms.date: "11/04/2016" +ms.date: "09/19/2019" f1_keywords: ["C2337"] helpviewer_keywords: ["C2337"] ms.assetid: eccc9178-a15e-42cd-bbd0-3cea7cf2d55b --- # Compiler Error C2337 -'attribute name' : attribute not found +> '*attribute-name*' : attribute not found -You have used an attribute that is not supported in this version of Visual C++. +Your code uses an attribute that isn't supported in this context. Or, the attribute isn't available in this version of the compiler. To resolve this issue, remove the unsupported attribute. The following sample generates C2337: -``` +```cpp // C2337.cpp // compile with: /c [emitidl]; [module(name="x")]; [grasshopper] // C2337, not a supported attribute class a{}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2341.md b/docs/error-messages/compiler-errors-1/compiler-error-c2341.md index 165073b871..2f649c298f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2341.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2341.md @@ -13,7 +13,7 @@ An [allocate](../../cpp/allocate.md) statement refers to a segment not yet defin The following sample generates C2341: -``` +```cpp // C2341.cpp // compile with: /c __declspec(allocate(".test")) // C2341 @@ -22,10 +22,10 @@ int j = 1; Possible resolution: -``` +```cpp // C2341b.cpp // compile with: /c #pragma data_seg(".test") __declspec(allocate(".test")) int j = 1; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2344.md b/docs/error-messages/compiler-errors-1/compiler-error-c2344.md index fc66b594d2..02230b0d1b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2344.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2344.md @@ -13,9 +13,9 @@ When using the [align](../../cpp/align-cpp.md) keyword, the value you pass must For example, the following code generates C2344 because 3 is not a power of two: -``` +```cpp // C2344.cpp // compile with: /c __declspec(align(3)) int a; // C2344 __declspec(align(4)) int b; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2345.md b/docs/error-messages/compiler-errors-1/compiler-error-c2345.md index c0a3b08d4c..25b43916ba 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2345.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2345.md @@ -13,9 +13,9 @@ You passed a value to the [align](../../cpp/align-cpp.md) keyword that is outsid The following code generates C2345 -``` +```cpp // C2345.cpp // compile with: /c __declspec(align(0)) int a; // C2345 __declspec(align(1)) int a; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2346.md b/docs/error-messages/compiler-errors-1/compiler-error-c2346.md index 5c15bc7b31..5fe61b2b7d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2346.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2346.md @@ -23,7 +23,7 @@ For more information, see [managed, unmanaged](../../preprocessor/managed-unmana The following sample generates C2346. -``` +```cpp // C2346.cpp // processor: x86 // compile with: /clr @@ -37,8 +37,8 @@ struct S virtual __clrcall ~S() { } }; -void main() +int main() { S s; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2348.md b/docs/error-messages/compiler-errors-1/compiler-error-c2348.md index 8f285d82d5..3a819a27d3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2348.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2348.md @@ -13,7 +13,7 @@ To place a `struct` in a .idl file with the [export](../../windows/export.md) at The following sample generates C2348: -``` +```cpp // C2348.cpp // C2348 error expected [ module(name="SimpleMidlTest") ]; @@ -27,4 +27,4 @@ struct Point { int m_i; int m_j; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md index 8a4f195c23..6b7e748091 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2351.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2351.md @@ -13,7 +13,7 @@ In a new-style initialization list for a constructor, you must explicitly name e The following sample generates C2351: -``` +```cpp // C2351.cpp // compile with: /c class B { @@ -21,4 +21,4 @@ public: B() : () {} // C2351 B() {} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md index e9b418aa43..393d90c5e5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2352.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2352.md @@ -13,7 +13,7 @@ A `static` member function called a nonstatic member function. Or, a nonstatic m The following sample generates C2352 and shows how to fix it: -``` +```cpp // C2352.cpp // compile with: /c class CMyClass { @@ -29,7 +29,7 @@ public: The following sample generates C2352 and shows how to fix it: -``` +```cpp // C2352b.cpp class MyClass { public: @@ -41,4 +41,4 @@ int main() { MyClass::MyFunc(); // C2352 MyClass::MyFunc2(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md index fdf527512a..a6d8482cc3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2353.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2353.md @@ -13,11 +13,11 @@ Exception specifications are not allowed on member functions of managed classes. The following sample generates C2353: -``` +```cpp // C2353.cpp // compile with: /clr /c ref class X { void f() throw(int); // C2353 void f(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md index 0958238f0a..9de2199f9b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2355.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2355.md @@ -15,7 +15,7 @@ To fix this issue, make sure the member function definition matches a member fun The following sample generates C2355 and shows how to fix it: -``` +```cpp // C2355.cpp // compile with: /c class MyClass {}; @@ -28,4 +28,4 @@ public: MyClass2 *p = this; } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md index 2a657c121a..6093153324 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2356.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2356.md @@ -19,7 +19,7 @@ To resolve, move the segment initialization code to the beginning of the module. The following sample generates C2356: -``` +```cpp // C2356.cpp #pragma warning(disable : 4075) @@ -28,4 +28,4 @@ int __cdecl myexit2(void (__cdecl *)()); #pragma init_seg(".mine$m",myexit) #pragma init_seg(".mine$m",myexit2) // C2356 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md index 1af17228b7..f01f47990e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2357.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2357.md @@ -19,7 +19,7 @@ For more information, see [init_seg](../../preprocessor/init-seg.md). The following sample generates C2357: -``` +```cpp // C2357.cpp // compile with: /c // C2357 expected @@ -27,4 +27,4 @@ The following sample generates C2357: // Uncomment the following line to resolve. // int __cdecl myexit(void (__cdecl *)()); #pragma init_seg(".mine$m",myexit) -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md index 3f96d6f520..d3b1ef06a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2360.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2360.md @@ -13,7 +13,7 @@ The initialization of `identifier` can be skipped in a `switch` statement. You c The following sample generates C2360: -``` +```cpp // C2360.cpp int main() { int x = 0; @@ -29,7 +29,7 @@ int main() { Possible resolution: -``` +```cpp // C2360b.cpp int main() { int x = 0; @@ -40,4 +40,4 @@ int main() { int k = 1; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md index eaf377b126..f3ea39bdbc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2361.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2361.md @@ -13,7 +13,7 @@ The initialization of `identifier` can be skipped in a `switch` statement. You c The following sample generates C2361: -``` +```cpp // C2361.cpp void func( void ) { int x; @@ -29,7 +29,7 @@ void func( void ) { Possible resolution: -``` +```cpp // C2361b.cpp // compile with: /c void func( void ) { @@ -41,4 +41,4 @@ void func( void ) { int k = 1; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md index f104e2b0f9..4f1102027c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2364.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2364.md @@ -15,7 +15,7 @@ Named arguments for custom attributes are limited to compile time constants. For The following sample generates C2364. -``` +```cpp // c2364.cpp // compile with: /clr /c using namespace System; @@ -27,4 +27,4 @@ public: ABC( Enum^ ) {} // C2364 ABC( int ) {} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md index 259987d359..de3ef82632 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2365.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2365.md @@ -13,7 +13,7 @@ You attempted to redefine a class member. The following sample generates C2365. -``` +```cpp // C2365.cpp // compile with: /c class C1 { @@ -23,4 +23,4 @@ class C1 { int CMem; char *CMem(); // C2365, already exists as a data member }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md index c54e2f02a3..cf9335db99 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2369.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2369.md @@ -13,10 +13,10 @@ The array is already declared with a different subscript. The following sample generates C2369: -``` +```cpp // C2369.cpp // compile with: /c int a[10]; int a[20]; // C2369 int b[20]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md index 9c9086330b..ad0bbf0b1c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2370.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2370.md @@ -15,7 +15,7 @@ The identifier is already declared with a different storage class. The following sample generates C2370: -``` +```cpp // C2370.cpp // compile with: /Za /c extern int i; @@ -27,10 +27,10 @@ int i; // OK The following sample generates C2370: -``` +```cpp // C2370b.cpp #define Thread __declspec( thread ) extern int tls_i; int Thread tls_i; // C2370 declaration and the definition differ int tls_i; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md index e990615ca5..397a2b8130 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2371.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2371.md @@ -13,11 +13,11 @@ The identifier is already declared. The following sample generates C2371: -``` +```cpp // C2371.cpp int main() { int i; float i; // C2371, redefinition float f; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md index fe120b3e91..5a02f4c9d8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2372.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2372.md @@ -13,10 +13,10 @@ The identifier is already defined with a different derived type. The following sample generates C2326: -``` +```cpp // C2372.cpp // compile with: /c extern int *fp; extern int fp[]; // C2372 extern int fp2[]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md index 53349adda8..7d35685f10 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2373.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2373.md @@ -21,7 +21,7 @@ const int i = 20; And then: -``` +```cpp // C2373.cpp // compile with: /c #include "C2373.h" @@ -30,4 +30,4 @@ extern void __clrcall func( void ); // OK extern int i; // C2373 extern const int i; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md index 07b9c1ce9a..492f4904da 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2374.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2374.md @@ -13,10 +13,10 @@ The identifier is initialized more than once. The following sample generates C2374: -``` +```cpp // C2374.cpp // compile with: /c int i = 0; int i = 1; // C2374 int j = 1; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md index f9efa0ce86..157ba8476b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2375.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2375.md @@ -13,10 +13,10 @@ The function is already declared with a different linkage specifier. The following sample generates C2375: -``` +```cpp // C2375.cpp // compile with: /Za /c extern void func( void ); static void func( void ); // C2375 static void func2( void ); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md index 1836b69006..c6e432d605 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2377.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2377.md @@ -13,10 +13,10 @@ A `typedef` identifier is redefined. The following sample generates C2377: -``` +```cpp // C2377.cpp // compile with: /c typedef int i; int i; // C2377 int j; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md index f592fe40cd..fbe976f695 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2378.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2378.md @@ -13,10 +13,10 @@ The identifier was redefined as a `typedef`. The following sample generates C2378: -``` +```cpp // C2378.cpp // compile with: /c int i; typedef int i; // C2378 typedef int b; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md index 8c62db5fe2..0b2f77ae4c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2379.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2379.md @@ -13,9 +13,9 @@ The type of the specified parameter is not compatible, through default promotion The following sample generates C2379: -``` +```c // C2379.c // compile with: /Za void func(); void func(char); // C2379, char promotes to int -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md index 23560d2433..bb0192915d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2380.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2380.md @@ -13,7 +13,7 @@ A constructor returns a value or redefines the class name. The following sample generates C2326: -``` +```cpp // C2380.cpp // compile with: /c class C { @@ -22,4 +22,4 @@ public: int C; // C2380, redefinition of i C(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md index 93dd76ee5e..55019a748e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2381.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2381.md @@ -13,10 +13,10 @@ A function was declared and then defined but the definition used the [noreturn]( The following sample generates C2381: -``` +```cpp // C2381.cpp // compile with: /c void f1(); void __declspec(noreturn) f1() {} // C2381 void __declspec(noreturn) f2() {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md index 010bbd9290..d33aaecef4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2382.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2382.md @@ -13,10 +13,10 @@ Under [/Za](../../build/reference/za-ze-disable-language-extensions.md), this er The following sample generates C2382: -``` +```cpp // C2382.cpp // compile with: /Za /c void f1(void) throw(int) {} void f1(void) throw(char) {} // C2382 void f2(void) throw(char) {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md index 2a4cb7d36b..a54d060b2c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2384.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2384.md @@ -15,7 +15,7 @@ Static thread local storage in managed code can only be used for statically load The following line generates C2384 and shows how to fix it in C++/CLI code: -``` +```cpp // C2384.cpp // compile with: /clr /c public ref class B { @@ -26,4 +26,4 @@ public: [System::ThreadStaticAttribute] static int tls_j; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md index 7bea48d5e0..10006c0cd5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2385.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2385.md @@ -19,7 +19,7 @@ The member can derive from more than one object (it is inherited from more than The following sample generates C2385. -``` +```cpp // C2385.cpp // C2385 expected #include @@ -62,4 +62,4 @@ struct C : A, B using B::x; using A::x; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md index 0871d40038..776364e41b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2386.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2386.md @@ -13,7 +13,7 @@ You tried to create a namespace alias, but the name you chose already exists. The following sample generates C2386: -``` +```cpp // C2386.cpp namespace A { int k; @@ -21,4 +21,4 @@ namespace A { int i; namespace i = A; // C2386, i already exists -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md index a7477436b8..e9056724df 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2387.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2387.md @@ -15,7 +15,7 @@ To resolve this error, either remove one of the base classes from the inheritanc The following sample generates C2387: -``` +```cpp // C2387.cpp namespace N1 { struct B { @@ -43,4 +43,4 @@ int main() { D aD; aD.f(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md index ddd9c1a22b..737ada98df 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2388.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2388.md @@ -15,9 +15,9 @@ For more information, see [appdomain](../../cpp/appdomain.md) and [process](../. The following sample generates C2388: -``` +```cpp // C2388.cpp // compile with: /clr /c __declspec(process) __declspec(appdomain) int i; // C2388 __declspec(appdomain) int i; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md index fdf91a7143..a51c23454c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2389.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2389.md @@ -13,10 +13,10 @@ ms.assetid: 6122dc81-4ee3-49a5-a67d-d867808c9bac The following sample generates C2389: -``` +```cpp // C2389.cpp // compile with: /clr int main() { throw nullptr; // C2389 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md index 8cc43ba6bc..65534fd982 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2390.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2390.md @@ -23,11 +23,11 @@ Possible resolutions: - The following sample generates C2390: -``` +```cpp // C2390.cpp register int i; // C2390 int main() { register int j; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md index e075f1ae8d..1d4c5c5a62 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2391.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2391.md @@ -13,7 +13,7 @@ The `friend` declaration includes a complete class declaration. A `friend` decla The following sample generates C2326: -``` +```cpp // C2391.cpp // compile with: /c class D { @@ -27,4 +27,4 @@ class A { friend class C; friend void D::func(int); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md index 53ee9894b9..ac498263b9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2392.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2392.md @@ -15,7 +15,7 @@ Covariant return types are not allowed for Windows Runtime member functions or w The following sample generates C2392 and shows how to fix it. -``` +```cpp // C2392.cpp // compile with: /clr public ref struct B { @@ -51,4 +51,4 @@ int main() { B^ pB = pB1->mf(); D^ pD = dynamic_cast(pB); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md index 85d1b977c8..d6544a4239 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2394.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2394.md @@ -13,7 +13,7 @@ An operator in a Windows Runtime or managed type did not have at least one param The following sample generates C2394: -``` +```cpp // C2394.cpp // compile with: /clr /c ref struct Y { @@ -24,4 +24,4 @@ ref struct Y { // or static Y^ operator -(int i, Y^& rhY); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md index d0690df1f4..af577e56f7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2395.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2395.md @@ -13,7 +13,7 @@ An operator in a Windows Runtime or managed type did not have at least one param The following sample generates C2395 and shows how to fix it: -``` +```cpp // C2395.cpp // compile with: /clr /c value struct V { @@ -24,4 +24,4 @@ value struct V { // or static V operator *(int i, V& rv); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md index 1dceb60799..d6c3ef7de3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2396.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2396.md @@ -13,7 +13,7 @@ A conversion function in a Windows Runtime or managed type did not have at least The following sample generates C2396 and shows how to fix it: -``` +```cpp // C2396.cpp // compile with: /clr /c @@ -25,4 +25,4 @@ ref struct Y { // or static operator Y^(char c); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md index 99e01b7b67..02410e437a 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2400.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2400.md @@ -13,7 +13,7 @@ The token caused a syntax error in the specified context. The following sample generates C2400: -``` +```cpp // C2400.cpp // processor: x86 int main() { @@ -22,4 +22,4 @@ int main() { mov ax,bx; // OK } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md index 35e1dff675..bdf33bdcdf 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2422.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2422.md @@ -21,7 +21,7 @@ Inline assembly code incorrectly uses a segment override operator (colon) on an The following sample generates C2422: -``` +```cpp // C2422.cpp // processor: x86 int main() { @@ -30,4 +30,4 @@ int main() { mov AX, ES // OK } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md index 90a1f8ab11..e264e038fb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2423.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2423.md @@ -13,7 +13,7 @@ Inline assembly code uses a number other than 1, 2, 4, or 8 to scale a register. The following sample generates C2423: -``` +```cpp // C2423.cpp // processor: x86 int main() { @@ -22,4 +22,4 @@ int main() { lea EAX, [EAX+EAX*2] // OK } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md index 8b38e65554..2e72a65ee6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2425.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2425.md @@ -15,7 +15,7 @@ To fix this issue, replace the token with a constant literal or with a calculati The following sample generates C2425: -``` +```cpp // C2425.cpp // processor: x86 int main() { @@ -25,4 +25,4 @@ int main() { mov eax, [ebp - 3] // OK } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md index 43810d50d2..d4a3b5edd4 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2427.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2427.md @@ -13,7 +13,7 @@ An attempt was made to define a nested class, but the nested class is a member o The following sample generates C2427: -``` +```cpp // C2427.cpp // compile with: /c template @@ -28,4 +28,4 @@ struct Y::Inner {}; // C2427 // OK template struct S::Inner {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md index 296da58990..5fe638d344 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2428.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2428.md @@ -13,10 +13,10 @@ You cannot apply a decrement operator to objects of type `bool`. The following sample generates C2428: -``` +```cpp // C2428.cpp void g(bool fFlag) { --fFlag; // C2428 fFlag--; // C2428 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md index 5f0a393020..55cfa8081e 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2430.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2430.md @@ -15,10 +15,10 @@ More than one register is scaled. The compiler supports scaled indexing, but you The following sample generates C2430. -``` +```cpp // C2430.cpp // processor: x86 int main() { _asm mov eax, [ebx*2+ecx*4] // C2430 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md index 1602d94868..17a2d653af 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2431.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2431.md @@ -13,11 +13,11 @@ The ESP register is scaled or used as both index and base register. The SIB enco The following sample generates C2431: -``` +```cpp // C2431.cpp // processor: x86 int main() { _asm mov ax, [ESI + 2*ESP] // C2431 _asm mov ax, [esp + esp] // C2431 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md index 74d181a7fe..da267abde8 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2432.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2432.md @@ -13,10 +13,10 @@ A 16-bit register is used as an index or base register. The compiler does not su The following sample generates C2432: -``` +```cpp // C2432.cpp // processor: x86 int main() { _asm mov eax, DWORD PTR [bx] // C2432 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2433.md b/docs/error-messages/compiler-errors-1/compiler-error-c2433.md index 8e28f5e768..591077c075 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2433.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2433.md @@ -15,11 +15,11 @@ The `friend`, `virtual`, and `inline` modifiers cannot be used for data declarat The following sample generates C2433. -``` +```cpp // C2433.cpp class C{}; int main() { inline C c; // C2433 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md index 8a37ca95f1..d5e2155562 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2436.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2436.md @@ -13,7 +13,7 @@ Member functions or local classes in the constructor initializer list cannot be The following sample generates C2436: -``` +```cpp // C2436.cpp struct S{ int f(); @@ -22,4 +22,4 @@ struct S{ }; S():f(10), Inner(0){} // C2436 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md index fdd7f5cb8e..d5c6ccf11c 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2437.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2437.md @@ -13,7 +13,7 @@ An object can be initialized only once. The following sample generates C2437: -``` +```cpp // C2437.cpp // compile with: /c class A { @@ -25,4 +25,4 @@ class B : A { B() : A(1), A(2) {} // C2437 B() : A(1) {} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md index 2bb303490b..27461bc1a7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2438.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2438.md @@ -13,7 +13,7 @@ A constructor is used to initialize a static member of a class. Static members m The following sample generates C2438: -``` +```cpp // C2438.cpp struct X { X(int i) : j(i) {} // C2438 @@ -25,4 +25,4 @@ int X::j; int main() { X::j = 1; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md index 514b00b6bd..fdffb739b7 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2443.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2443.md @@ -13,7 +13,7 @@ The instruction requires operands to be the same size. The following sample generates C2443: -``` +```cpp // C2443.cpp // processor: x86 short var; @@ -22,4 +22,4 @@ int main() { __asm mov al,red // C2443 __asm mov al,BYTE PTR var // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md index f9d8cd5f14..1a68afc55b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2447.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2447.md @@ -15,8 +15,8 @@ This error can also be caused by an old-style C-language formal argument list. T The following sample generates C2447: -``` +```cpp // C2447.cpp int c; {} // C2447 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md index 80767f17f7..ee83167b1f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2448.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2448.md @@ -15,9 +15,9 @@ This error can be caused by an old-style C-language formal list. The following sample generates C2448: -``` +```cpp // C2448.cpp void func(c) int c; {} // C2448 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md index 37edda39d7..7f1342e899 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2449.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2449.md @@ -15,10 +15,10 @@ This error can be caused by a semicolon between a function header and the openin The following sample generates C2499: -``` +```c // C2449.c // compile with: /c void __stdcall func(void) {} // OK void __stdcall func(void); // extra semicolon on this line { // C2449 detected here -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md index f609c21b49..939791120f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2450.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2450.md @@ -13,7 +13,7 @@ The `switch` expression evaluates to an invalid type. It must evaluate to an int The following sample generates C2450: -``` +```cpp // C2450.cpp class X { public: @@ -34,4 +34,4 @@ int main() { default: ; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md index a943fd48dd..d6f3dbe351 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2451.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2451.md @@ -13,7 +13,7 @@ The conditional expression evaluates to an integer type. The following sample generates C2451: -``` +```cpp // C2451.cpp class B {}; @@ -25,4 +25,4 @@ int main () { // if (i) ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md index 2e42e4a291..01ed9d4ce1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2452.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2452.md @@ -13,7 +13,7 @@ The source type for [safe_cast](../../extensions/safe-cast-cpp-component-extensi The following sample generates C2452: -``` +```cpp // C2452.cpp // compile with: /clr @@ -31,4 +31,4 @@ int main() { C ^ c = gcnew C; safe_cast(c); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md index 9c2d223627..449331067f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2458.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2458.md @@ -13,9 +13,9 @@ A class, structure, union, or enumeration is redefined in its own declaration. The following sample generates C2458: -``` +```cpp // C2458.cpp class C { enum i { C }; // C2458 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md index 69054f3169..e3a2b6d3ed 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2459.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2459.md @@ -13,11 +13,11 @@ A class, structure, or union is redefined in its own scope by a member of an ano The following sample generates C2459: -``` +```cpp // C2459.cpp // compile with: /c class C { union { int C; }; // C2459 union { int D; }; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md index c2c42e91d3..b19adc30ab 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2460.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2460.md @@ -13,7 +13,7 @@ A class or structure (`identifier2`) is declared as a member of itself (`identif The following sample generates C2460: -``` +```cpp // C2460.cpp class C { C aC; // C2460 @@ -22,9 +22,9 @@ class C { Instead, use a pointer reference in the class. -``` +```cpp // C2460.cpp class C { C * aC; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md index 4e90ba6f0e..33e0c27fcb 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2462.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2462.md @@ -13,9 +13,9 @@ You cannot define a type in the operand field of the `new` operator. Put the typ The following sample generates C2462: -``` +```cpp // C2462.cpp int main() { new struct S { int i; }; // C2462 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md index c897e44ebc..9ff40fc1a6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2464.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2464.md @@ -13,9 +13,9 @@ A reference identifier was allocated with the `new` operator. References are not The following sample generates C2464: -``` +```cpp // C2464.cpp int main() { new ( int& ir ); // C2464 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md index 6d9bdace0a..60505ef865 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2466.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2466.md @@ -13,10 +13,10 @@ An array is allocated or declared with size zero. The constant expression for th The following sample generates C2466: -``` +```cpp // C2466.cpp // compile with: /c int i[0]; // C2466 int j[1]; // OK char *p; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md index 19c0181964..cba1d8f790 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2467.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2467.md @@ -13,7 +13,7 @@ A nested user-defined type was declared. This is an error when compiling C sourc The following sample generates C2467: -``` +```c //C2467.c // compile with: /Za int main() { @@ -21,4 +21,4 @@ int main() { union { int i; }; // C2467, nested declaration }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md index 339648ef33..f69dc54135 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2469.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2469.md @@ -13,10 +13,10 @@ An operator was passed an invalid type. The following sample generates C2469: -``` +```cpp // C2469.cpp int main() { int *i = new void; // C2469 int *i = new int; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md index 595abd6135..0d8ffbdba9 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2470.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2470.md @@ -13,7 +13,7 @@ A function definition is missing its argument list. The following sample generates C2470: -``` +```cpp // C2470.cpp int MyFunc {}; // C2470 void MyFunc2() {}; //OK @@ -22,4 +22,4 @@ int main(){ MyFunc(); MyFunc2(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md index 12f8e1a102..8816c45a45 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2473.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2473.md @@ -15,7 +15,7 @@ The compiler detected what looked like a function, without the parameter list. The following sample generates C2473. -``` +```cpp // C2473.cpp // compile with: /clr /c class A { @@ -25,4 +25,4 @@ class A { class B { int i() {} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md index db70ad34a1..6ac8cf2dbc 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2474.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2474.md @@ -15,7 +15,7 @@ The compiler expected to find a semicolon, and was unable to determine your inte The following sample generates C2474. -``` +```cpp // C2474.cpp // compile with: /clr /c @@ -34,4 +34,4 @@ ref class E { ref class F {} property; int i; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md index 010816a07b..9e2a9a0a18 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2477.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2477.md @@ -13,7 +13,7 @@ A static data member of a template class was initialized incorrectly. This is a The following sample generates C2477: -``` +```cpp // C2477.cpp // compile with: /Za /c template @@ -28,4 +28,4 @@ int A::n = 0; // C2477 template<> int S::n = 0; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md index 49a783e5a5..6b367772c3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2479.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2479.md @@ -13,10 +13,10 @@ The `__declspec( allocate())` syntax can be used for static data only. The following sample generates C2479: -``` +```cpp // C2479.cpp // compile with: /c #pragma section("mycode", read) static __declspec(allocate("mycode")) void DoNothing() {} // C2479 __declspec(allocate("mycode")) int i = 0; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md index bf10505750..4dbb2c8ce1 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2480.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2480.md @@ -15,9 +15,9 @@ Use the `thread` attribute for global variables, static data members, and local The following sample generates C2480: -``` +```cpp // C2480.cpp // compile with: /c __declspec( thread ) void func(); // C2480 __declspec( thread ) static int i; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md index 22feee7622..4360caba1f 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2486.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2486.md @@ -13,7 +13,7 @@ In inline assembly functions, the name `__LOCAL_SIZE` is reserved for functions The following sample generates C2486: -``` +```cpp // C2486.cpp // processor: x86 void __declspec(naked) f1() { @@ -26,4 +26,4 @@ void f2() { mov eax, __LOCAL_SIZE // C2486 } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md index d72242c92a..e962967b45 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2488.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2488.md @@ -13,7 +13,7 @@ The [naked](../../cpp/naked-cpp.md) attribute was applied to a function declarat The following sample generates C2488: -``` +```cpp // C2488.cpp // compile with: /c // processor: x86 @@ -21,4 +21,4 @@ __declspec( naked ) void func(); // C2488 declaration, not definition __declspec( naked ) void i; // C2488 i is not a function __declspec( naked ) void func() {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md index 73c04daad2..8b1649732b 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2489.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2489.md @@ -13,11 +13,11 @@ For more information, see [naked](../../cpp/naked-cpp.md). The following sample generates C2489: -``` +```cpp // C2489.cpp // processor: x86 __declspec( naked ) int func() { int i = 1; // C2489 register int j = 1; // C2489 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md index 7d6d247bd7..476774dad3 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2490.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2490.md @@ -13,10 +13,10 @@ A function defined as [naked](../../cpp/naked-cpp.md) cannot use structured exce The following sample generates C2490: -``` +```cpp // C2490.cpp // processor: x86 __declspec( naked ) int func() { __try{} // C2490, structured exception handling } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md index 09bcee1851..5ba51439c6 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2491.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2491.md @@ -15,7 +15,7 @@ To fix this issue, remove the `__declspec(dllimport)` specifier from the definit The following sample generates C2491: -``` +```cpp // C2491.cpp // compile with: /c // function definition @@ -23,4 +23,4 @@ void __declspec(dllimport) funcB() {} // C2491 // function declaration void __declspec(dllimport) funcB(); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md index 9a6be93c47..a0df8490ac 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2492.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2492.md @@ -13,7 +13,7 @@ The variable is declared with the [thread](../../cpp/thread.md) attribute and wi The following sample generates C2492: -``` +```cpp // C2492.cpp // compile with: /c class C { @@ -23,4 +23,4 @@ public: __declspec(dllexport) __declspec(thread) C c_1; // C2492 __declspec(thread) C c_1; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md index a4c46a823d..0c053e07a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2493.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2493.md @@ -13,7 +13,7 @@ A `__based` expression must be based on a pointer. The following sample generates C2493: -``` +```cpp // C2493.cpp // compile with: /c char mybase; @@ -22,4 +22,4 @@ int __based(mybase) ptr; // C2493 // OK char * mybase; int __based(mybase) * ptr; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md index 7d6cd64bb1..a17f97059d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2494.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2494.md @@ -13,7 +13,7 @@ You cannot use `keyword` in a `__finally` or finally block. The following sample generates C2494: -``` +```cpp // C2494.cpp #include @@ -29,7 +29,7 @@ int main() { C2494 can also occur when using **/clr**. -``` +```cpp // C2494b.cpp // compile with: /clr #include @@ -42,4 +42,4 @@ int main() { _alloca(100); // C2494 } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md index 8e9f5a5547..f73a38fced 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2495.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2495.md @@ -13,7 +13,7 @@ The [nothrow](../../cpp/nothrow-cpp.md) extended attribute can be applied to fun The following sample generates C2495: -``` +```cpp // C2495.cpp // compile with: /c __declspec(nothrow) class X { // C2495 @@ -21,4 +21,4 @@ __declspec(nothrow) class X { // C2495 } x; __declspec(nothrow) void test(); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md index 9d354747e6..2d1bdf32a5 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2496.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2496.md @@ -13,7 +13,7 @@ The [selectany](../../cpp/selectany.md) attribute can be applied only to externa The following sample generates C2496: -``` +```cpp // C2496.cpp // compile with: /c __declspec(selectany) int x1 = 1; @@ -31,4 +31,4 @@ __declspec(selectany) int x5 = f(); extern const int x7; // OK - redeclaration of x7 that is extern const __declspec(selectany) int x7 = 7; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md index 5d489e12b7..7a8215715d 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2498.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2498.md @@ -15,9 +15,9 @@ This error can be caused by using `__declspec(novtable)` with a function. The following sample generates C2498: -``` +```cpp // C2498.cpp // compile with: /c void __declspec(novtable) f() {} // C2498 class __declspec(novtable) A {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md index e3aa6045c8..f543f6ca34 100644 --- a/docs/error-messages/compiler-errors-1/compiler-error-c2499.md +++ b/docs/error-messages/compiler-errors-1/compiler-error-c2499.md @@ -13,9 +13,9 @@ You attempted to specify the class that you are defining as a base class. The following sample generates C2499: -``` +```cpp // C2499.cpp // compile with: /c class CMyClass : public CMyClass {}; // C2499 class CMyClass{}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md index 591638f7b0..606fd2d4ed 100644 --- a/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md +++ b/docs/error-messages/compiler-errors-1/compiler-fatal-errors-c999-through-c1999.md @@ -1,8 +1,8 @@ --- title: "Compiler fatal errors C999 through C1999" ms.date: "04/21/2019" -f1_keywords: ["C1034", "C1036", "C1041", "C1048", "C1049", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1193", "C1195", "C1300", "C1301", "C1302", "C1306", "C1384", "C1451", "C1505", "C1901"] -helpviewer_keywords: ["C1034", "C1036", "C1041", "C1048", "C1049", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1193", "C1195", "C1300", "C1301", "C1302", "C1306", "C1384", "C1451", "C1505", "C1901"] +f1_keywords: ["C1034", "C1036", "C1041", "C1048", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1193", "C1195", "C1300", "C1301", "C1302", "C1306", "C1384", "C1451", "C1505", "C1901"] +helpviewer_keywords: ["C1034", "C1036", "C1041", "C1048", "C1063", "C1069", "C1101", "C1102", "C1105", "C1110", "C1111", "C1112", "C1114", "C1193", "C1195", "C1300", "C1301", "C1302", "C1306", "C1384", "C1451", "C1505", "C1901"] ms.assetid: 6c8df109-7594-48ed-987a-97d9fe2b04af --- # Compiler fatal errors C999 through C1999 @@ -48,7 +48,7 @@ The articles in this section of the documentation explain a subset of the error |[Fatal error C1046](../../error-messages/compiler-errors-1/fatal-error-c1046.md)|compiler limit: *structure* nested too deeply| |[Fatal error C1047](fatal-error-c1047.md)|The object or library file '*file*' was created with an older compiler than other objects; rebuild old objects and libraries| |Fatal error C1048|unknown option '*string*' in '*option*'| -|Fatal error C1049|invalid numerical argument '*value*'| +|[Fatal error C1049](fatal-error-c1049.md)|invalid numerical argument '*value*'| |[Fatal error C1051](../../error-messages/compiler-errors-1/fatal-error-c1051.md)|program database file, '*file*', has an obsolete format, delete it and recompile| |[Fatal error C1052](fatal-error-c1052.md)|program database file, '*filename*', was generated by the linker with /DEBUG:fastlink; compiler cannot update such PDB files; please delete it or use /Fd to specify a different PDB filename| |[Fatal error C1053](fatal-error-c1053.md)|'*function*': function too large| diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1004.md b/docs/error-messages/compiler-errors-1/fatal-error-c1004.md index ada4eb91ad..3fc490519c 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1004.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1004.md @@ -29,7 +29,7 @@ To resolve this error, check for the following: The following sample generates C1004: -``` +```cpp // C1004.cpp #if TEST int main() {} @@ -38,10 +38,10 @@ int main() {} Possible resolution: -``` +```cpp // C1004b.cpp #if TEST #endif int main() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1016.md b/docs/error-messages/compiler-errors-1/fatal-error-c1016.md index 89bd67e8ad..7b7ca92c3e 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1016.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1016.md @@ -13,7 +13,7 @@ The conditional compilation directive ([#ifdef](../../preprocessor/hash-ifdef-an The following sample generates C1016: -``` +```cpp // C1016.cpp #ifdef // C1016 #define FC1016 @@ -24,11 +24,11 @@ int main() {} Possible resolution: -``` +```cpp // C1016b.cpp #ifdef X #define FC1016 #endif int main() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1017.md b/docs/error-messages/compiler-errors-1/fatal-error-c1017.md index 24ca09fd7a..e69cd9cd3a 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1017.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1017.md @@ -15,7 +15,7 @@ Constants defined using `#define` must have values that evaluate to an integer c The following sample generates C1017: -``` +```cpp // C1017.cpp #define CONSTANT_NAME "YES" #if CONSTANT_NAME // C1017 @@ -24,7 +24,7 @@ The following sample generates C1017: Possible resolution: -``` +```cpp // C1017b.cpp // compile with: /c #define CONSTANT_NAME 1 @@ -36,7 +36,7 @@ Because `CONSTANT_NAME` evaluates to a string and not an integer, the `#if` dire In other cases, the preprocessor evaluates an undefined constant as zero. This can cause unintended results, as shown in the following sample. `YES` is undefined, so it evaluates to zero. The expression `#if` `CONSTANT_NAME` evaluates to false and the code to be used on `YES` is removed by the preprocessor. `NO` is also undefined (zero), so `#elif` `CONSTANT_NAME==NO` evaluates to true (`0 == 0`), causing the preprocessor to leave the code in the `#elif` portion of the statement — exactly the opposite of the intended behavior. -``` +```cpp // C1017c.cpp // compile with: /c #define CONSTANT_NAME YES @@ -47,4 +47,4 @@ In other cases, the preprocessor evaluates an undefined constant as zero. This c #endif ``` -To see exactly how the compiler handles preprocessor directives, use [/P](../../build/reference/p-preprocess-to-a-file.md), [/E](../../build/reference/e-preprocess-to-stdout.md), or [/EP](../../build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md). \ No newline at end of file +To see exactly how the compiler handles preprocessor directives, use [/P](../../build/reference/p-preprocess-to-a-file.md), [/E](../../build/reference/e-preprocess-to-stdout.md), or [/EP](../../build/reference/ep-preprocess-to-stdout-without-hash-line-directives.md). diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1018.md b/docs/error-messages/compiler-errors-1/fatal-error-c1018.md index 9973bea648..552289c5a0 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1018.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1018.md @@ -13,7 +13,7 @@ The `#elif` directive appears outside an `#if`, `#ifdef`, or `#ifndef` construct The following sample generates C1018: -``` +```cpp // C1018.cpp #elif // C1018 #endif @@ -23,11 +23,11 @@ int main() {} Possible resolution: -``` +```cpp // C1018b.cpp #if 1 #elif #endif int main() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1019.md b/docs/error-messages/compiler-errors-1/fatal-error-c1019.md index e02696e7c3..85afbe8d2c 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1019.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1019.md @@ -13,7 +13,7 @@ The `#else` directive appears outside an `#if`, `#ifdef`, or `#ifndef` construct The following sample generates C1019: -``` +```cpp // C1019.cpp #else // C1019 #endif @@ -23,11 +23,11 @@ int main() {} Possible resolution: -``` +```cpp // C1019b.cpp #if 1 #else #endif int main() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1020.md b/docs/error-messages/compiler-errors-1/fatal-error-c1020.md index dcbc3e8d2f..ceb9ca9f97 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1020.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1020.md @@ -13,16 +13,16 @@ The `#endif` directive has no matching `#if`, `#ifdef`, or `#ifndef` directive. The following sample generates C1020: -``` +```cpp // C1020.cpp #endif // C1020 ``` Possible resolution: -``` +```cpp // C1020b.cpp // compile with: /c #if 1 #endif -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1021.md b/docs/error-messages/compiler-errors-1/fatal-error-c1021.md index 12f058307d..05a0d46bc7 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1021.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1021.md @@ -13,7 +13,7 @@ invalid preprocessor command 'string' The following sample generates C1021: -``` +```cpp // C1021.cpp #BadPreProcName // C1021 delete line -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1022.md b/docs/error-messages/compiler-errors-1/fatal-error-c1022.md index 8a6956c6fd..eefca8bd5a 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1022.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1022.md @@ -13,7 +13,7 @@ An `#if`, `#ifdef`, or `#ifndef` directive has no matching `#endif` directive. B The following sample generates C1022: -``` +```cpp // C1022.cpp #define true 1 @@ -24,7 +24,7 @@ The following sample generates C1022: Possible resolution: -``` +```cpp // C1022b.cpp // compile with: /c #define true 1 @@ -32,4 +32,4 @@ Possible resolution: #if (true) #else #endif -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1049.md b/docs/error-messages/compiler-errors-1/fatal-error-c1049.md new file mode 100644 index 0000000000..963b355a0e --- /dev/null +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1049.md @@ -0,0 +1,28 @@ +--- +title: "Fatal Error C1049" +description: "Describes compiler fatal error C1049, invalid numerical argument, and explains how to resolve it." +ms.date: "11/04/2019" +f1_keywords: ["C1049"] +helpviewer_keywords: ["C1049"] +--- +# Fatal Error C1049 + +> invalid numerical argument '*value*' + +The CL.EXE command-line parser found *value* where it was expecting a numerical argument. + +A C1049 error may occur when the compiler can’t find a numerical argument for one of these compiler options: + +[/constexpr:depth](/cpp/build/reference/constexpr-control-constexpr-evaluation)\ +[/constexpr:backtrace](/cpp/build/reference/constexpr-control-constexpr-evaluation)\ +[/constexpr:steps](/cpp/build/reference/constexpr-control-constexpr-evaluation) + +Command-line compiler options that expect a numerical argument may also report `Command line error D8004`, `Command line error D8021`, `Command line warning D9002`, `Command line warning D9014`, or `Command line warning D9024`. + +To resolve this error, examine the command line for misplaced or missing arguments. Verify there's no unexpected whitespace between options and arguments. The final command line may be generated by macros, environment variables, or other build system operations. That's why it's important to look at the actual command line passed to the compiler. + +- In command files or makefiles, you can use an **echo** command to report the actual command line. + +- In Visual Studio, open your project's **Property Pages** dialog. On the **Configuration Properties** > **C/C++** > **General** page, change the **Suppress Startup Banner** property to **No**. Choose **OK** to save your changes. The **Output** window now shows the command line when you build, right after the copyright line. + +Other build systems may have log files or verbose options, to see the actual commands used. For information, check your build system documentation. diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1070.md b/docs/error-messages/compiler-errors-1/fatal-error-c1070.md index 32efe329ff..533d860e98 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1070.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1070.md @@ -13,7 +13,7 @@ An `#if`, `#ifdef`, or `#ifndef` directive has no corresponding `#endif`. The following sample generates C1070: -``` +```cpp // C1070.cpp #define TEST @@ -26,7 +26,7 @@ The following sample generates C1070: Possible resolution: -``` +```cpp // C1070b.cpp // compile with: /c #define TEST @@ -36,4 +36,4 @@ Possible resolution: #ifdef TEST #endif -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1071.md b/docs/error-messages/compiler-errors-1/fatal-error-c1071.md index 0737b4360e..bf69f3e90d 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1071.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1071.md @@ -19,11 +19,11 @@ The compiler reached the end of the file while scanning a comment. The following sample generates C1071: -``` +```cpp // C1071.cpp int main() { } /* this comment is fine */ /* forgot the closing tag // C1071 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1094.md b/docs/error-messages/compiler-errors-1/fatal-error-c1094.md index b72f795318..f1d7485a67 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1094.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1094.md @@ -20,7 +20,7 @@ int func1(); And then, -``` +```cpp // C1094.cpp // compile with: /Yc"C1094.h" /Zm200 int u; @@ -32,9 +32,9 @@ int main() { And then, -``` +```cpp // C1094b.cpp // compile with: /Yu"C1094.h" /Zm300 /c #include "C1094.h" // C1094 compile with /Zm200 void Test() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1103.md b/docs/error-messages/compiler-errors-1/fatal-error-c1103.md index 68f072845b..ff04eccea6 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1103.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1103.md @@ -15,7 +15,7 @@ For more information, see [#import Directive](../../preprocessor/hash-import-dir The following sample will generate C1103: -``` +```cpp // C1103.cpp #import "progid:a.b.id.1.5" no_registry auto_search // C1103 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1104.md b/docs/error-messages/compiler-errors-1/fatal-error-c1104.md index a1aa041525..d4bb148af3 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1104.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1104.md @@ -15,7 +15,7 @@ For more information, see [#import Directive](../../preprocessor/hash-import-dir The following sample will generate C1104: -``` +```cpp // C1104.cpp #import "libid:11111111.1111.1111.1111.111111111111" version("4.0") lcid("9") no_registry auto_search // C1104 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1190.md b/docs/error-messages/compiler-errors-1/fatal-error-c1190.md index 61ae18b622..1865c325c3 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1190.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1190.md @@ -15,9 +15,9 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui The following sample generates C1190: -``` +```cpp // C1190.cpp // compile with: /c __gc class A {}; // C1190 ref class A {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1191.md b/docs/error-messages/compiler-errors-1/fatal-error-c1191.md index b2646d9ac1..2a588b82b9 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1191.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1191.md @@ -13,7 +13,7 @@ The instruction to import mscorlib.dll into a program that uses /clr programming The following sample generates C1191: -``` +```cpp // C1191.cpp // compile with: /clr namespace sample { @@ -23,9 +23,9 @@ namespace sample { Possible resolution: -``` +```cpp // C1191b.cpp // compile with: /clr /c #using namespace sample {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1197.md b/docs/error-messages/compiler-errors-1/fatal-error-c1197.md index 15f1fbe2b4..5b796c4681 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1197.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1197.md @@ -17,11 +17,11 @@ To resolve this error, only reference files from the version of the common langu The following sample generates C1197: -``` +```cpp // C1197.cpp // compile with: /clr /c // processor: x86 #using "C:\Windows\Microsoft.NET\Framework\v1.1.4322\mscorlib.dll" // C1197 // try the following line instead // #using "mscorlib.dll" -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1202.md b/docs/error-messages/compiler-errors-1/fatal-error-c1202.md index 82fc2cea37..5dc872b4d7 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1202.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1202.md @@ -15,7 +15,7 @@ A template definition was recursive or exceeded complexity limits. The following sample generates C1202. -``` +```cpp // C1202.cpp // processor: x86 IPF template @@ -32,7 +32,7 @@ Factorial<7> facSeven; Possible resolution. -``` +```cpp // C1202b.cpp // compile with: /c template @@ -52,4 +52,4 @@ public: }; Factorial<7> facSeven; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1308.md b/docs/error-messages/compiler-errors-1/fatal-error-c1308.md index 0c6adf1054..e460ff8ff6 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1308.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1308.md @@ -15,7 +15,7 @@ For more information, see [.netmodule Files as Linker Input](../../build/referen The following sample generates C1308: -``` +```cpp // C1308.cpp // compile with: /clr:safe /LD public ref class MyClass { @@ -26,7 +26,7 @@ public: and then, -``` +```cpp // C1308b.cpp // compile with: /clr /link C1308b.obj C1308.dll // C1308 expected @@ -34,4 +34,4 @@ and then, int main() { MyClass ^ my = gcnew MyClass(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-1/fatal-error-c1310.md b/docs/error-messages/compiler-errors-1/fatal-error-c1310.md index ef436a6c53..0e58d40fa9 100644 --- a/docs/error-messages/compiler-errors-1/fatal-error-c1310.md +++ b/docs/error-messages/compiler-errors-1/fatal-error-c1310.md @@ -13,7 +13,7 @@ You will not be able to link with [/LTCG:PGI](../../build/reference/ltcg-link-ti The following sample generates C1310: -``` +```cpp // C1310.cpp // compile with: /openmp /GL /link /LTCG:PGI // C1310 expected @@ -28,4 +28,4 @@ int main() --j; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md index 7e08faa9b4..095cbc33f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2500.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2500.md @@ -17,7 +17,7 @@ A class cannot be specified as a direct base class more than once. A class can b The following sample generates C2500: -``` +```cpp // C2500.cpp // compile with: /c class A {}; @@ -27,4 +27,4 @@ class B : public A, public A {}; // C2500 class C : public A {}; class D : public A {}; class E : public C, public D {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md index 8e7bd69b9d..c8d652d35a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2502.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2502.md @@ -13,7 +13,7 @@ The base class has more than one access modifier. Only one access modifier (`pub The following sample generates C2502: -``` +```cpp // C2502.cpp // compile with: /c class A { }; @@ -23,4 +23,4 @@ class C : private public A { }; // C2502 // OK class D : private A {}; class E : public A, private B {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md index aa4ab3a4ac..e5d3fe217c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2503.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2503.md @@ -13,7 +13,7 @@ A base class or structure contains a zero-sized array. An array in a class must The following sample generates C2503: -``` +```cpp // C2503.cpp // compile with: /c class A { @@ -29,4 +29,4 @@ public: }; class D : C {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md index efcd74e1e3..3bf20dd5b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2504.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2504.md @@ -17,7 +17,7 @@ The base class is declared but never defined. Possible causes: The following sample generates C2504: -``` +```cpp // C2504.cpp // compile with: /c class A; @@ -29,4 +29,4 @@ class B : public A {}; // C2504 ``` class C{}; class D : public C {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md index 14d0040586..9c04d164bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2505.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2505.md @@ -15,7 +15,7 @@ For more information, see [appdomain](../../cpp/appdomain.md) and [process](../. The following sample generates C2505: -``` +```cpp // C2505.cpp // compile with: /clr @@ -27,4 +27,4 @@ int main() { __declspec(process) int i; // C2505 __declspec(appdomain) int j; // C2505 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md index cc731db2db..14f911b5b3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2506.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2506.md @@ -17,11 +17,11 @@ See [appdomain](../../cpp/appdomain.md) for more information. The following sample generates C2506. -``` +```cpp // C2506.cpp // compile with: /clr /c ref struct R { __declspec(process) static int n; // C2506 int o; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md index 88e3834226..09089609da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2507.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2507.md @@ -13,10 +13,10 @@ A class or structure is declared as `virtual` more than once. Only one `virtual` The following sample generates C2507: -``` +```cpp // C2507.cpp // compile with: /c class A {}; class B : virtual virtual public A {}; // C2507 class C : virtual public A {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md index c1e5d50c7e..b3de127bc0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2509.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2509.md @@ -15,7 +15,7 @@ The function is not declared in the specified class. The following sample generates C2509. -``` +```cpp // C2509.cpp // compile with: /c struct A { @@ -30,4 +30,4 @@ struct B : private A { int B::vfunc() { return 1; } // C2509 int B::vfunc2() { return 1; } // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md index d0a2f9f343..ce2700075b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2511.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2511.md @@ -19,7 +19,7 @@ No version of the function is declared with the specified parameters. Possible The following sample generates C2511: -``` +```cpp // C2511.cpp // compile with: /c class C { @@ -32,4 +32,4 @@ int C::Func(char *, char *, int i) { // C2511 // int C::Func(char *, char *) { return 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md index a97e78d390..85860a8c1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2513.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2513.md @@ -13,7 +13,7 @@ The type specifier appears in declaration with no variable identifier. The following sample generates C2513: -``` +```cpp // C2513.cpp int main() { int = 9; // C2513 @@ -23,7 +23,7 @@ int main() { This error can also be generated as a result of a compiler conformance work done for Visual Studio .NET 2003: initialization of a typedef no longer allowed. The initialization of a typedef is not allowed by the standard and now generates a compiler error. -``` +```cpp // C2513b.cpp // compile with: /c typedef struct S { @@ -33,4 +33,4 @@ typedef struct S { // } S; ``` -An alternative would be to delete `typedef` to define a variable with aggregate initializer list, but this is not recommended because it will create a variable with the same name as the type and hide the type name. \ No newline at end of file +An alternative would be to delete `typedef` to define a variable with aggregate initializer list, but this is not recommended because it will create a variable with the same name as the type and hide the type name. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md index 193733f08a..3ed0200d47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2514.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2514.md @@ -15,7 +15,7 @@ A class must be fully declared before it can be instantiated. The following sample generates C2514: -``` +```cpp // C2514.cpp // compile with: /c class f; @@ -34,4 +34,4 @@ class fmaker { return new g(2); // OK } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md index 8e2bae2b56..52ae58042d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2516.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2516.md @@ -13,8 +13,8 @@ The class is derived from a type name defined by a `typedef` statement. The following sample generates C2516: -``` +```cpp // C2516.cpp typedef unsigned long ulong; class C : public ulong {}; // C2516 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md index 5489ca5406..b01d31fa60 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2518.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2518.md @@ -13,10 +13,10 @@ The keywords `class` and `struct` should not appear in a base class list. The following sample generates C2518: -``` +```cpp // C2518.cpp // compile with: /c class B {}; class C : public class B {}; // C2518 class D: public B {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md index 34b3717140..dbba720359 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2521.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2521.md @@ -17,7 +17,7 @@ For more information, see [Destructors and finalizers](../../dotnet/how-to-defin The following sample generates C2521. -``` +```cpp // C2521.cpp // compile with: /clr ref class R { @@ -35,4 +35,4 @@ int main() { R^ r = gcnew R(); r->CleanUp(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md index 863078954a..5a400f030d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2523.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2523.md @@ -13,11 +13,11 @@ The name of the destructor must be the class name preceded by a tilde (`~`). The The following sample generates C2523: -``` +```cpp // C2523.cpp // compile with: /c class A { ~B(); // C2523 ~A(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md index 0a70fd209c..b7267b38d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2524.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2524.md @@ -15,7 +15,7 @@ The destructor or finalizer had a parameter list that is not [void](../../cpp/vo The following code reproduces C2524. -``` +```cpp // C2524.cpp // compile with: /c class A { @@ -30,7 +30,7 @@ class A { The following code reproduces C2524. -``` +```cpp // C2524_b.cpp // compile with: /clr /c ref struct I1 { @@ -39,4 +39,4 @@ protected: // try the following line instead // !I1(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md index 208a224b7a..492bba4fdb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2528.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2528.md @@ -13,9 +13,9 @@ You cannot declare a pointer to a reference. Dereference the variable before dec The following sample generates C2528: -``` +```cpp // C2528.cpp int i; int &ir = i; int & (*irptr) = ir; // C2528 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md index 4decad43d3..9cacaf3a10 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2529.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2529.md @@ -13,10 +13,10 @@ This error may be fixed by using pointer syntax and declaring a reference to a p The following sample generates C2529: -``` +```cpp // C2529.cpp // compile with: /c int i; int &ri = i; int &(&rri) = ri; // C2529 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md index 4099189205..1220d92814 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2530.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2530.md @@ -21,11 +21,11 @@ You must initialize a reference when it was declared, unless it is declared alre The following sample generates C2530: -``` +```cpp // C2530.cpp int main() { int i = 0; int &j; // C2530 int &k = i; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md index 7b0c3cbe76..d25c23076c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2531.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2531.md @@ -13,11 +13,11 @@ References to bit fields are not allowed. The following sample generates C2531: -``` +```cpp // C2531.cpp // compile with: /c class P { int &b1 : 10; // C2531 int b2 : 10; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md index af99a57a22..e2affc616e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2533.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2533.md @@ -15,7 +15,7 @@ A common source of this error is a missing semicolon between the end of a class The following sample generates C2533, and shows how to fix it: -``` +```cpp // C2533.cpp // compile with: /c class X { @@ -25,4 +25,4 @@ public: int X::X() {} // C2533 - constructor return type not allowed X::X() {} // OK - fix by using no return type -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md index 32294bb31e..4ad4dd3b4c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2534.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2534.md @@ -15,11 +15,11 @@ This error may be fixed by removing the `return` statement from the constructor The following sample generates C2534: -``` +```cpp // C2534.cpp class A { public: int i; A() { return i; } // C2534 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md index c553625353..74aceb442b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2535.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2535.md @@ -15,7 +15,7 @@ If you get C2535 because of the Dispose function, see [Destructors and finalizer The following sample generates C2535: -``` +```cpp // C2535.cpp // compile with: /c class C { @@ -23,4 +23,4 @@ public: void func(); // forward declaration void func() {} // C2535 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md index 2a9b3af825..840dd49af7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2537.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2537.md @@ -17,9 +17,9 @@ Possible causes: The following sample generates C2537: -``` +```cpp // C2537.cpp // compile with: /c extern "c" void func(); // C2537 extern "C" void func2(); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md index 0a1b3374b2..9eee6c46a5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2540.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2540.md @@ -13,7 +13,7 @@ An array must have a constant bound. The following sample generates C2540: -``` +```cpp // C2540.cpp void func(int n, int pC[]) { int i = ((int [n])pC)[1]; // C2540 @@ -28,4 +28,4 @@ int main() { func(100, pC); func2(100, pC); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md index 6176df73e6..e28c7ae87e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2541.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2541.md @@ -13,7 +13,7 @@ The [delete](../../cpp/delete-operator-cpp.md) operator was used on an object th The following sample generates C2541: -``` +```cpp // C2541.cpp int main() { int i; @@ -23,4 +23,4 @@ int main() { int *ip = new int; delete ip; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md index 933aabed4b..582fcc5a11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2548.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2548.md @@ -15,7 +15,7 @@ The default parameter list is missing a parameter. If you supply a default param The following sample generates C2548: -``` +```cpp // C2548.cpp // compile with: /c void func( int = 1, int, int = 3); // C2548 @@ -23,4 +23,4 @@ void func( int = 1, int, int = 3); // C2548 // OK void func2( int, int, int = 3); void func3( int, int = 2, int = 3); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md index 1cc99f1b2c..c0215ab31a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2549.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2549.md @@ -11,7 +11,7 @@ user-defined conversion cannot specify a return type The following sample generates C2549: -``` +```cpp // C2549.cpp // compile with: /c class X { @@ -23,4 +23,4 @@ public: private: int value; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md index 0552453b81..cb19e7cb79 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2550.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2550.md @@ -13,7 +13,7 @@ A base class initializer list is used on the definition of a function that is no The following sample generates C2550: -``` +```cpp // C2550.cpp // compile with: /c class C { @@ -29,4 +29,4 @@ public: void D::func() : C() {} // C2550 D::D() : C() {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md index 5a9b7b76dc..b0fc156224 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2552.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2552.md @@ -43,7 +43,7 @@ The following represent the reasons C2552 may fire when an aggregate initializat The following sample generates C2552: -``` +```cpp // C2552.cpp // compile with: /clr #include @@ -91,4 +91,4 @@ int main() { Pair_Correct2 pair4 = { name, 0.0 }; System::DateTime dt2(2001, 4, 12, 22, 16, 49, 844); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md index d777f7fb8c..28029f232e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2553.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2553.md @@ -13,7 +13,7 @@ A function in a derived class attempted to override a virtual function in a base The following sample generates C2553: -``` +```cpp // C2553.cpp // compile with: /clr /c ref struct C { @@ -26,4 +26,4 @@ ref struct D : C { // try the following line instead // virtual void f() override; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2556.md b/docs/error-messages/compiler-errors-2/compiler-error-c2556.md index bfe7f07ec4..c99661b9de 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2556.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2556.md @@ -13,7 +13,7 @@ The overloaded functions have different return types but the same parameter list The following sample generates C2556: -``` +```cpp // C2556.cpp // compile with: /c class C { @@ -21,4 +21,4 @@ class C { double func(); // C2556 int func(int i); // ok parameter lists differ }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md index f19240041a..ebac7fa5d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2561.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2561.md @@ -21,7 +21,7 @@ This error can be caused by an incorrect function prototype: The following sample generates C2561: -``` +```cpp // C2561.cpp int Test(int x) { if (x) { @@ -35,4 +35,4 @@ int Test(int x) { int main() { Test(1); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md index ad2bb1c742..5acfbc452b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2562.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2562.md @@ -17,11 +17,11 @@ This error may be fixed if you specify the return type in the function declarati The following sample generates C2562: -``` +```cpp // C2562.cpp // compile with: /c void testfunc() { int i; return i; // C2562 delete the return to resolve } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md index 977a957d9b..3d306ea037 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2563.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2563.md @@ -13,7 +13,7 @@ The formal parameter list of a function (or a pointer to a function) does not ma The following sample generates C2563: -``` +```cpp // C2563.cpp void func( int ); void func( int, int ); @@ -21,4 +21,4 @@ int main() { void *fp(); fp = func; // C2563 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md index 0721ef6d66..72d45d5386 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2569.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2569.md @@ -13,7 +13,7 @@ If you must derive a type from the specified union or enumeration, change the un The following sample generates C2569: -``` +```cpp // C2569.cpp // compile with: /c union ubase {}; @@ -21,4 +21,4 @@ class cHasPubUBase : public ubase {}; // C2569 // OK struct sbase {}; class cHasPubUBase : public sbase {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md index ca2ac4c349..eb8a75af6b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2570.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2570.md @@ -13,10 +13,10 @@ A union derives from a class, structure, or union. This is not allowed. Declare The following sample generates C2570: -``` +```cpp // C2570.cpp // compile with: /c class base {}; union hasPubBase : public base {}; // C2570 union hasNoBase {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md index 2b0e6c3f4e..a75dea718c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2571.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2571.md @@ -17,11 +17,11 @@ A union is declared with a virtual function. You can declare a virtual function The following sample generates C2571: -``` +```cpp // C2571.cpp // compile with: /c union A { virtual void func1(); // C2571 void func2(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md index 0a18308985..2d05e59022 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2572.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2572.md @@ -13,7 +13,7 @@ Default parameters cannot be redefined. If you require another value for the par The following sample generates C2572: -``` +```cpp // C2572.cpp // compile with: /c void f(int i = 1); // function declaration @@ -23,4 +23,4 @@ void f(int i = 1) {} // C2572 // try the following line instead // void f(int i) {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2574.md b/docs/error-messages/compiler-errors-2/compiler-error-c2574.md index d94b4a9144..d79eceea65 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2574.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2574.md @@ -13,7 +13,7 @@ Neither destructors nor constructors can be declared `static`. The following sample generates C2574: -``` +```cpp // C2574.cpp // compile with: /c class A { @@ -21,4 +21,4 @@ class A { // try the following line instead // virtual ~A(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md index a173d2df2d..f6b6235ea2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2575.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2575.md @@ -13,7 +13,7 @@ A global function or class is declared `virtual`. This is not allowed. The following sample generates C2575: -``` +```cpp // C2575.cpp // compile with: /c virtual void func() {} // C2575 @@ -22,4 +22,4 @@ void func2() {} struct A { virtual void func2(){} }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md index 756bee3171..5e8a293582 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2577.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2577.md @@ -15,7 +15,7 @@ A destructor or finalizer cannot return a value of `void` or any other type. Rem The following sample generates C2577. -``` +```cpp // C2577.cpp // compile with: /c class A { @@ -25,4 +25,4 @@ public: return 0; // C2577 } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md index b3a51e1f78..77bc849125 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2581.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2581.md @@ -15,11 +15,11 @@ The assignment (`=`) operator is incorrectly declared as `static`. Assignment op The following sample generates C2581. -``` +```cpp // C2581.cpp // compile with: /clr /c ref struct Y { static Y ^ operator = (Y^ me, int i); // C2581 Y^ operator =(int i); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md index d7bfbf1c50..8fda227031 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2582.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2582.md @@ -13,7 +13,7 @@ An attempt was made to assign to an object that does not have an assignment oper The following sample generates C2582: -``` +```cpp // C2582.cpp // compile with: /clr using namespace System; @@ -30,4 +30,4 @@ int main() { ^st1 = gcnew String(""); // C2582 st1 = "xxx"; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2583.md b/docs/error-messages/compiler-errors-2/compiler-error-c2583.md index 0ffce01a43..a85284c7b0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2583.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2583.md @@ -13,7 +13,7 @@ A constructor or destructor is declared `const` or `volatile`. This is not allow The following sample generates C2583: -``` +```cpp // C2583.cpp // compile with: /c class A { @@ -24,4 +24,4 @@ public: // try the following line instead // A(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md index b9c2d7dda2..e28d89a69e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2584.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2584.md @@ -15,7 +15,7 @@ ms.assetid: 836e2c0a-86c0-4742-b432-beb0191ad20e The following sample generates C2584. -``` +```cpp // C2584.cpp // compile with: /c struct A1 { @@ -43,4 +43,4 @@ struct Z : virtual B2, virtual C { // C2584 // struct Z : virtual C { virtual int MyFunction(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md index a8880aafbc..46697e5f47 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2586.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2586.md @@ -13,11 +13,11 @@ Indirection of a conversion operator is not allowed. The following sample generates C2586: -``` +```cpp // c2586.cpp // compile with: /c struct C { * operator int(); // C2586 operator char(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md index f200bc1484..5a25a3b805 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2587.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2587.md @@ -13,7 +13,7 @@ Local variables are not allowed as default parameters. The following sample generates C2587: -``` +```cpp // C2587.cpp // compile with: /c int i; @@ -22,4 +22,4 @@ void func() { extern void func2( int k = j ); // C2587 -- local variable extern void func3( int k = i ); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md index f441adca7e..3b0fa091fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2588.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2588.md @@ -15,7 +15,7 @@ This error can be caused by a missing class, structure, or union name on the lef The following sample generates C2588: -``` +```cpp // C2588.cpp ~F(); // C2588 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md index e1f3a2719a..1fad951026 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2589.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2589.md @@ -15,7 +15,7 @@ The scope-resolution operator cannot be overloaded. The following sample generates C2589: -``` +```cpp // C2589.cpp void Test(){} class A {}; @@ -24,4 +24,4 @@ void operator :: (); // C2589 int main() { ::Test(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md index ff920fad99..57644f9e86 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2593.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2593.md @@ -15,7 +15,7 @@ This error may be fixed if you use an explicit cast on one or more actual parame The following sample generates C2593: -``` +```cpp // C2593.cpp struct A {}; struct B : A {}; @@ -37,4 +37,4 @@ The following example shows how to archive a floating-point variable (`f`) to ar ``` ar.Write(&f, sizeof( float )); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md index aeb9addf8d..13cbb8f71c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2594.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2594.md @@ -13,7 +13,7 @@ No conversion from *type1* to *type2* was more direct than any other. We suggest The following sample generates C2594. The suggested resolution to the error is a sequence of conversions: -``` +```cpp // C2594.cpp // compile with: /c struct A{}; @@ -27,4 +27,4 @@ A *f (D *p) { // try the following line instead // return static_cast(static_cast(p)); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md index 9e388e1d66..9e96e13886 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2597.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2597.md @@ -19,7 +19,7 @@ Possible causes: 1. The following sample generates C2597 and shows how to fix it: -``` +```cpp // C2597.cpp // compile with: /c struct s1 { @@ -36,4 +36,4 @@ void s1::func() { void s1::func2(s1& a) { a.i = 1; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md index 91a948c93b..8d64d91f40 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2598.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2598.md @@ -13,7 +13,7 @@ The linkage specifier is declared at local scope. The following sample generates C2598: -``` +```cpp // C2598.cpp // compile with: /c void func() { @@ -21,4 +21,4 @@ void func() { } extern "C" int func( int i ); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md index b9b36eccf4..d7d8cb0f7e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2599.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2599.md @@ -15,7 +15,7 @@ Forward declaration of an enum type is not allowed under [/Za](../../build/refer The following sample generates C2599: -``` +```cpp // C2599.cpp // compile with: /clr /c enum class Status; // C2599 @@ -30,4 +30,4 @@ ref struct MyStruct { }; enum class Status { stop, hold, go }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md index b272400132..d4e3eb2e3b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2600.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2600.md @@ -15,7 +15,7 @@ To fix this error, in the class declaration, declare each member function that y The following sample generates C2600: -``` +```cpp // C2600.cpp // compile with: /c class C {}; @@ -26,4 +26,4 @@ class D { }; D::~D() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2601.md b/docs/error-messages/compiler-errors-2/compiler-error-c2601.md index 7e29fa6113..094ed557e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2601.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2601.md @@ -15,7 +15,7 @@ Or, there may be an extra brace in your source code before the location of the C The following sample generates C2601: -``` +```cpp // C2601.cpp int main() { int i = 0; @@ -24,4 +24,4 @@ int main() { j++; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md index 5c78bcba9d..d20ea05ccc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2602.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2602.md @@ -13,7 +13,7 @@ ms.assetid: 6c07a40e-537e-4954-b5c5-1e0e58fe1952 The following sample generates C2602: -``` +```cpp // C2602.cpp // compile with: /c struct X { @@ -26,4 +26,4 @@ struct B : public A { X::x; // C2602 B is not derived from X A::a; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md index 2656e853ab..abde2e1f35 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2605.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2605.md @@ -15,11 +15,11 @@ Certain names are reserved by the compiler for internal functions. For more inf The following sample generates C2605. -``` +```cpp // C2605.cpp // compile with: /clr /c ref class R { protected: void Finalize() {} // C2605 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md index 9faa17ea6f..22722ddd24 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2611.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2611.md @@ -13,11 +13,11 @@ The token is not an identifier. The following sample generates C2611: -``` +```cpp // C2611.cpp // compile with: /c class C { C::~operator int(); // C2611 ~C(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md index 30f4019217..46707260aa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2612.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2612.md @@ -13,11 +13,11 @@ A character appears after the last base or member in an initializer list. The following sample generates C2612: -``` +```cpp // C2612.cpp class A { public: int i; A( int ia ) : i( ia ) + {}; // C2612 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md index 1a1f3b0692..05b59293e1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2614.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2614.md @@ -15,7 +15,7 @@ Only member or base classes can appear in the initialization list for a class or The following sample generates C2614. -``` +```cpp // C2614.cpp // compile with: /c struct A { @@ -28,4 +28,4 @@ struct A2 { int i; A2( int ia ) : B( i ) {}; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md index 1792c2345c..483c1e2e13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2617.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2617.md @@ -13,7 +13,7 @@ The specified function does not have a declared return type, and a previous retu The following sample generates C2617: -``` +```cpp // C2617.cpp int i; func() { // no return type prototype @@ -24,7 +24,7 @@ func() { // no return type prototype Possible resolution: -``` +```cpp // C2617b.cpp // compile with: /c int i; @@ -34,4 +34,4 @@ int MyF() { else return (1); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md index 328bc3b3da..3fb5d2c469 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2619.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2619.md @@ -13,10 +13,10 @@ A member of an anonymous struct or union is declared `static`. The following sample generates C2619, and demonstrates how to fix it by removing the static keyword. -``` +```cpp // C2619.cpp int main() { union { static int j; }; // C2619 union { int j; }; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md index 48edd1fcee..f86587d84b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2624.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2624.md @@ -13,10 +13,10 @@ A local class or structure cannot be used to declare `extern` variables. The following sample generates C2624: -``` +```cpp // C2624.cpp int main() { struct C {}; extern C ac; // C2624 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md index 4a63b0974b..0bb955c768 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2626.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2626.md @@ -13,7 +13,7 @@ A member of an anonymous struct or union must have public access. The following sample generates C2626: -``` +```cpp // C2626.cpp int main() { union { @@ -27,7 +27,7 @@ int main() { To fix this issue, remove any private or protected tags: -``` +```cpp // C2626b.cpp int main() { union { @@ -35,4 +35,4 @@ int main() { int i; // OK, i is public }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md index 58b8930908..2c9951d171 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2627.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2627.md @@ -13,10 +13,10 @@ An [anonymous union](../../cpp/unions.md#anonymous_unions) cannot have member fu The following sample generates C2627: -``` +```cpp // C2627.cpp int main() { union { void f(){} }; // C2627 union X { void f(){} }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md index 0311a40731..6be945e230 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2628.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2628.md @@ -13,7 +13,7 @@ A semicolon may be missing. The following sample generates C2628: -``` +```cpp // C2628.cpp class CMyClass {} int main(){} // C2628 error @@ -21,8 +21,8 @@ int main(){} // C2628 error Possible resolution: -``` +```cpp // C2628b.cpp class CMyClass {}; int main(){} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md index 6e2d3aa9be..f2ba74f450 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2630.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2630.md @@ -13,7 +13,7 @@ The symbol appears in a context that requires a comma. The following sample generates C2630: -``` +```cpp // C2630.cpp // compile with: /c struct D { @@ -30,4 +30,4 @@ class C : public D, public E { C::C() : D(0) ; E(0) { } // C2630 C::C() : D(0), E(0) {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md index bfc13df556..1274655247 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2632.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2632.md @@ -13,7 +13,7 @@ This error can be caused if there is missing code between two type specifiers. The following sample generates C2632: -``` +```cpp // C2632.cpp int float i; // C2632 ``` @@ -22,10 +22,10 @@ This error can also be generated as a result of compiler conformance work that w The following sample generates C2632: -``` +```cpp // C2632_2.cpp // compile with: /LD void f(int bool); // C2632 ``` -To resolve this error so that the code is valid in both the Visual Studio .NET 2003 and Visual Studio .NET versions of Visual C++, rename the identifier. \ No newline at end of file +To resolve this error so that the code is valid in both the Visual Studio .NET 2003 and Visual Studio .NET versions of Visual C++, rename the identifier. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md index 987640afec..cc8745caca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2633.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2633.md @@ -13,11 +13,11 @@ A constructor is declared as a storage class other than inline. The following sample generates C2633: -``` +```cpp // C2633.cpp // compile with: /c class C { extern C(); // C2633, not inline inline C(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md index 30a95e12bb..2d2125a9f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2634.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2634.md @@ -13,7 +13,7 @@ A pointer to a reference member is declared. The following sample generates C2634: -``` +```cpp // C2634.cpp int mem; struct S { @@ -21,4 +21,4 @@ struct S { int &rf; }; int (S::*pdm) = &S::rf; // C2634 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md index 083210f8c0..c291a94f15 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2635.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2635.md @@ -13,7 +13,7 @@ The conversion requires a cast from a `virtual` base class to a derived class, w The following sample generates C2635: -``` +```cpp // C2635.cpp class B {}; class D : virtual public B {}; @@ -29,4 +29,4 @@ int main() { pD = (D*)&b; // C2635 pE = (E*)&b; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md index e7a2104460..54c4b762ab 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2636.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2636.md @@ -13,7 +13,7 @@ A pointer to a reference member was declared. The following sample generates C2636: -``` +```cpp // C2636.cpp struct S {}; int main() { @@ -21,4 +21,4 @@ int main() { int S::*prs1; // OK int *S::*prs2; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md index de4ef098f4..11bf788a1d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2637.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2637.md @@ -13,7 +13,7 @@ A pointer to a data member cannot have a calling convention. To resolve, either The following sample generates C2637: -``` +```cpp // C2637.cpp // compile with: /c struct S {}; @@ -22,4 +22,4 @@ int __stdcall S::*pms1; // C2637 // OK int S::*pms2; int (__stdcall S::*pms3)(...); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md index 5ac1cd0d70..83203d680d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2638.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2638.md @@ -13,7 +13,7 @@ The `__based` modifier cannot be used for pointers to members. The following sample generates C2638: -``` +```cpp // C2638.cpp void *a; @@ -25,4 +25,4 @@ public: }; int __based (a) C::* cpi = &C::i; // C2638 int (__based (a) C::* cpf)() = &C::func; // c2638 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md index 8fdf8d2668..64b42b98c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2640.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2640.md @@ -13,10 +13,10 @@ The `__based` modifier can be used on pointers only. The following sample generates C2640: -``` +```cpp // C2640.cpp void f(int i) { void *vp; int _based(vp) &vr = I; // C2640 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md index 782d4ef194..cfa0023e13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2645.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2645.md @@ -13,11 +13,11 @@ The declaration of a pointer to a member does not specify a class. The following sample generates C2645: -``` +```cpp // C2645.cpp class A {}; int main() { int B::* bp; // C2645 B not defined int A::* ap; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md index dc81f61b20..da9b8306fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2646.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2646.md @@ -13,7 +13,7 @@ An anonymous struct or union has global or namespace scope but is not declared ` The following sample generates C2646 and shows how to fix it: -``` +```cpp // C2646.cpp // compile with: /c union { int i; }; // C2646 not static @@ -21,4 +21,4 @@ union { int i; }; // C2646 not static // OK static union { int j; }; union U { int i; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md index 48b957872d..801d33340f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2647.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2647.md @@ -13,7 +13,7 @@ The left operand of a pointer-to-member operator ( `->*` or `.*` ) cannot be imp The following sample generates C2647: -``` +```cpp // C2647.cpp class C {}; class D {}; @@ -29,4 +29,4 @@ int main() { pc->*pmc = 0; c.*pmc = 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md index c38faf3170..f8e474623d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2648.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2648.md @@ -13,7 +13,7 @@ A non-static member is used as a default parameter. The following sample generates C2648: -``` +```cpp // C2648.cpp // compile with: /c class C { @@ -23,4 +23,4 @@ public: void func1( int i = i ); // C2648 i is not static void func2( int i = j ); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md index ca913c2370..49f62c0192 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2650.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2650.md @@ -15,7 +15,7 @@ A `new` or `delete` operator is declared `virtual`. These operators are `static` The following sample generates C2650: -``` +```cpp // C2650.cpp // compile with: /c class A { @@ -23,4 +23,4 @@ class A { // try the following line instead // void* operator new( unsigned int ); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md index 9f9622995f..cdd3b16089 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2652.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2652.md @@ -13,7 +13,7 @@ The first parameter in the copy constructor has the same type as the class, stru The following sample generates C2651: -``` +```cpp // C2652.cpp // compile with: /c class A { @@ -22,4 +22,4 @@ class A { class B { B( B& ); // OK, reference to B }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md index a662ba5b0f..a92edbb8ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2655.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2655.md @@ -13,7 +13,7 @@ An identifier can be redeclared only at global scope. The following sample generates C2655: -``` +```cpp // C2655.cpp class A {}; class B { @@ -26,4 +26,4 @@ int B::i; // OK int main() { A B::i; // C2655 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md index d9521016ce..e101cb8aba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2657.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2657.md @@ -15,11 +15,11 @@ This error can be caused by a missing type specifier in the declaration of a poi The following sample generates C2657: -``` +```cpp // C2657.cpp class C {}; int main() { C::* pmc1; // C2657 int C::* pmc2; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md index 355cb89bc3..15f72df4d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2658.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2658.md @@ -13,7 +13,7 @@ Two anonymous structures or unions contained member declarations with the same i The following sample generates C2658: -``` +```cpp // C2658.cpp // compile with: /c struct X { @@ -37,4 +37,4 @@ struct Z { // void *ii; }; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md index 7fac6f04f5..4451388a52 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2659.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2659.md @@ -11,7 +11,7 @@ ms.assetid: b0883600-4d27-4ca7-a931-8ca6bd48654d A function was on the left side of the specified operator. The most common reason for this error is that the compiler has parsed the identifier on the left side of the operator as a function when the developer intended it to be a variable. For more information, see Wikipedia article [Most vexing parse](https://en.wikipedia.org/wiki/Most_vexing_parse). This example shows a function declaration and a variable definition that are easily confused: -``` +```cpp // C2659a.cpp // Compile using: cl /W4 /EHsc C2659a.cpp #include @@ -31,7 +31,7 @@ To resolve this issue, change the declaration of the identifier so that it is no Error C2659 can also occur when the function has a type that can’t be used in the expression on the left side of the specified operator. This example generates C2659 when the code assigns a function pointer to a function: -``` +```cpp // C2659b.cpp // Compile using: cl /W4 /EHsc C2659b.cpp int func0(void) { return 42; } @@ -42,4 +42,4 @@ int main() func1 = func0; func0 = func1; // C2659 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md index 83f7f5a8f7..ad630b3d29 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2660.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2660.md @@ -21,7 +21,7 @@ C2660 can occur if you accidentally call a Windows API function rather than an M The following sample generates C2660. -``` +```cpp // C2660.cpp void func( int, int ) {} @@ -35,7 +35,7 @@ int main() { C2660 can also occur if you attempt to directly call the Dispose method of a managed type. For more information, see [Destructors and finalizers](../../dotnet/how-to-define-and-consume-classes-and-structs-cpp-cli.md#BKMK_Destructors_and_finalizers). The following sample generates C2660. -``` +```cpp // C2660_a.cpp // compile with: /clr using namespace System; @@ -57,7 +57,7 @@ int main() { C2660 will occur if a derived class hides a function. -``` +```cpp // C2660b.cpp // C2660 expected #include @@ -88,7 +88,7 @@ int main() { C2660 can occur if you invoke an indexed property incorrectly. -``` +```cpp // C2660c.cpp // compile with: /clr ref class X { @@ -113,7 +113,7 @@ int main() { C2660 can occur if you invoke an indexed property incorrectly. -``` +```cpp // C2660d.cpp // compile with: /clr ref class A{ @@ -136,7 +136,7 @@ int main() { C2660 can occur if you define a new operator in a template class, but where the new operator creates an object whose type is other than the enclosing type. -``` +```cpp // C2660e.cpp // compile with: /c #include @@ -162,4 +162,4 @@ typedef CA int_CA; void AAA() { int_CA list; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md index 991f9ea3b9..39ae1201bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2661.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2661.md @@ -17,7 +17,7 @@ Possible causes: The following sample generates C2661: -``` +```cpp // C2661.cpp void func( int ){} void func( int, int ){} @@ -25,4 +25,4 @@ int main() { func( ); // C2661 func( void ) was not declared func( 1 ); // OK func( int ) was declared } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md index 4b391f888c..6c113e2348 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2662.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2662.md @@ -19,7 +19,7 @@ This error can be caused by invoking a non-`const` member function on a `const` The following sample generates C2662: -``` +```cpp // C2662.cpp class C { public: @@ -35,7 +35,7 @@ int main() { When compiling with **/clr**, you cannot call a function on a `const` or `volatile` qualified managed type. You cannot declare a const member function of a managed class, so you cannot call methods on const managed objects. -``` +```cpp // C2662_b.cpp // compile with: /c /clr ref struct M { @@ -61,7 +61,7 @@ ref struct N { The following sample generates C2662: -``` +```cpp // C2662_c.cpp // compile with: /c // C2662 expected @@ -88,4 +88,4 @@ void F(const LXISXVD *plxisxvd, int iDim) { isxvd = plxisxvd->PMin2()[iDim]; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md index 9552da0b2a..1e2db4efdd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2663.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2663.md @@ -19,7 +19,7 @@ This error can be caused by invoking a non-`const` member function on a `const` The following sample generates C2663: -``` +```cpp // C2663.cpp struct C { void f() volatile {} @@ -38,4 +38,4 @@ int main() { pcc->f(); // C2663 pcd->f(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md index 9839ad59b8..04e0d2b7ea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2664.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2664.md @@ -29,7 +29,7 @@ For more information, see [How to: Convert System::String to wchar_t* or char\*] The following sample generates C2664 and shows how to fix it. -``` +```cpp // C2664.cpp // C2664 struct A { @@ -53,7 +53,7 @@ int main() { This sample also generates C2664 and shows how to fix it. -``` +```cpp // C2664b.cpp // C2664 expected struct A { @@ -72,7 +72,7 @@ int main() { The next sample demonstrates C2664 by using a string literal to call `Test`, and shows how to fix it. Because the parameter is an `szString` reference, an object must be created by the appropriate constructor. The result is a temporary object that cannot be used to initialize the reference. -``` +```cpp // C2664c.cpp // compile with: /EHsc // C2664 expected @@ -113,7 +113,7 @@ int main() { The compiler enforces the C++ standard requirements for applying `const`. This sample generates C2664: -``` +```cpp // C2664d.cpp // C2664 expected #include @@ -138,7 +138,7 @@ int main() Here's a more complex situation where C2664 is generated, including directions on how to fix it: -``` +```cpp // C2664e.cpp // compile with: /EHsc // C2664 expected @@ -183,7 +183,7 @@ int main( ) { An enum variable is not converted to its underlying type such that a function call will be satisfied. For more information, see [enum class](../../extensions/enum-class-cpp-component-extensions.md). The following sample generates C2664 and shows how to fix it. -``` +```cpp // C2664f.cpp // compile with: /clr using namespace System; @@ -230,7 +230,7 @@ C2664 is also raised by using `wchar_t` when porting code from Visual C++ 6.0 to The following sample generates C2664 and shows how to fix it. -``` +```cpp // C2664h.cpp #import "C2664g.tlb" using namespace myproj1; @@ -252,7 +252,7 @@ int main() { C2664 is also caused if the compiler cannot deduce template arguments. -``` +```cpp // C2664i.cpp #include template @@ -278,4 +278,4 @@ int main() { test(img); // OK test(img); // C2664 - qualify as above to fix } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md index a00da2e024..e773380246 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2665.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2665.md @@ -19,7 +19,7 @@ A parameter of the overloaded function cannot be converted to the required type. The following sample generates C2665. -``` +```cpp // C2665.cpp void func(short, char*){} void func(char*, char*){} @@ -28,4 +28,4 @@ int main() { func(0, 1); // C2665 func((short)0, (char*)1); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md index b104271711..1b772adf1f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2666.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2666.md @@ -13,7 +13,7 @@ An overloaded function or operator is ambiguous. Formal parameter lists may be The following sample generates C2666: -``` +```cpp // C2666.cpp struct complex { complex(double); @@ -39,7 +39,7 @@ For code that is valid in both the Visual Studio .NET 2003 and Visual Studio .NE ## Example -``` +```cpp // C2666b.cpp #include #include @@ -98,7 +98,7 @@ int main() The following sample generates C2666 -``` +```cpp // C2666c.cpp // compile with: /c @@ -121,4 +121,4 @@ class A h((int) E_A); } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md index 0fa59d78e1..70d30df80c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2671.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2671.md @@ -13,9 +13,9 @@ A `static` member function tried to access `this`. The following sample generates C2671: -``` +```cpp // C2671.cpp struct S { static S* const func() { return this; } // C2671 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md index 48d27347d0..b28f511a34 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2673.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2673.md @@ -13,9 +13,9 @@ A global function tried to access `this`. The following sample generates C2673: -``` +```cpp // C2673.cpp int main() { this = 0; // C2673 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md index 77aac0445a..94fbe32fce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2674.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2674.md @@ -15,9 +15,9 @@ A generic was declared incorrectly. For more information, see [Generics](../../e The following sample generates C2674. -``` +```cpp // C2674.cpp // compile with: /clr /c void F(generic ref class R1); // C2674 generic ref class R2 {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md index 5e1124e87f..fec97597f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2675.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2675.md @@ -15,7 +15,7 @@ C2675 can also occur when using a unary operator, and the type does not define t The following sample generates C2675. -``` +```cpp // C2675.cpp struct C { C(){} @@ -30,4 +30,4 @@ int main() { -c; // C2675 -d; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2676.md b/docs/error-messages/compiler-errors-2/compiler-error-c2676.md index 53cf16c0e6..72dcbe9ce4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2676.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2676.md @@ -15,7 +15,7 @@ To use the operator, you must overload it for the specified type or define a con The following sample generates C2676. -``` +```cpp // C2676.cpp // C2676 expected struct C { @@ -51,7 +51,7 @@ The `this` pointer is of type handle in a reference type. For more information, The following sample generates C2676. -``` +```cpp // C2676_a.cpp // compile with: /clr using namespace System; @@ -72,4 +72,4 @@ ref struct A { int main() { A ^ mya = gcnew A(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md index 5910983dc3..8c2b1e74fe 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2677.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2677.md @@ -13,7 +13,7 @@ To use the operator, you must overload it for the specified type or define a con The following sample generates C2677: -``` +```cpp // C2677.cpp class C { public: @@ -30,4 +30,4 @@ int main() { int i = 1 >> c; // C2677 int j = 1 >> d; // OK operator int() defined } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md index 83e2a86337..150aa7cfd2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2678.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2678.md @@ -17,7 +17,7 @@ C2678 can occur when the left-hand operand is const-qualified but the operator i The following sample generates C2678 and shows how to fix it: -``` +```cpp // C2678a.cpp // Compile by using: cl /EHsc /W4 C2678a.cpp struct Combo { @@ -45,7 +45,7 @@ C2678 can also occur if you do not pin a native member before calling a member f The following sample generates C2678 and shows how to fix it. -``` +```cpp // C2678.cpp // compile with: /clr /c struct S { int _a; }; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md index af93c4efbe..4c776ad634 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2679.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2679.md @@ -13,7 +13,7 @@ To use the operator, you must overload it for the specified type or define a con The following sample generates C2679: -``` +```cpp // C2679.cpp class C { public: @@ -30,4 +30,4 @@ int main() { c = 10; // C2679 d = 10; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md index 082e96f939..9206199209 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2680.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2680.md @@ -13,7 +13,7 @@ A casting operator tried to convert to a type that is not a pointer or reference The following sample generates C2680: -``` +```cpp // C2680.cpp // compile with: /c class A { virtual void f(); }; @@ -28,7 +28,7 @@ void g(B b) { C2680 can also occur when the target is not defined: -``` +```cpp // C2680b.cpp // compile with: /clr /c // C2680 expected @@ -50,4 +50,4 @@ public ref class B : ArrayList { } } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md index 67ca9efd62..19665ad3f2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2681.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2681.md @@ -13,7 +13,7 @@ A casting operator tried to convert from an invalid type. For example, if you us The following sample generates C2681: -``` +```cpp // C2681.cpp class A { virtual void f(); }; @@ -21,4 +21,4 @@ void g(int i) { A* pa; pa = dynamic_cast(i); // C2681 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md index a7e427127d..09883ecbcf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2682.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2682.md @@ -15,7 +15,7 @@ You can use the `const_cast` operator to remove attributes such as `const`, `vol The following sample generates C2682: -``` +```cpp // C2682.cpp class A { virtual void f(); }; class B: public A {}; @@ -27,7 +27,7 @@ void g(A* pa) { The following sample generates C2682: -``` +```cpp // C2682b.cpp // compile with: /clr ref struct R{}; @@ -44,4 +44,4 @@ int main() { interior_ptrssr = safe_cast >(lr); // C2682 interior_ptrssr = reinterpret_cast >(lr); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md index 88fc4132ed..a748baed62 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2683.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2683.md @@ -15,7 +15,7 @@ You can use [static_cast](../../cpp/static-cast-operator.md) to perform conversi The following sample generates C2683: -``` +```cpp // C2683.cpp // compile with: /c class B { }; @@ -25,4 +25,4 @@ void f(B* pb) { D* pd1 = dynamic_cast(pb); // C2683 D* pd1 = static_cast(pb); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md index 70fd3f913a..b644e25f2c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2687.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2687.md @@ -13,7 +13,7 @@ For a type to be part of an exception declaration, it must be defined and not vo The following sample generates C2687: -``` +```cpp // C2687.cpp class C; @@ -25,7 +25,7 @@ int main() { Possible resolution: -``` +```cpp // C2687b.cpp // compile with: /EHsc class C {}; @@ -34,4 +34,4 @@ int main() { try {} catch (C) {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md index d6c7d0b64d..592068d805 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2688.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2688.md @@ -15,7 +15,7 @@ To resolve this error, either define your functions so that they do not use vari The following sample generates C2688: -``` +```cpp // C2688.cpp struct G1 {}; struct G2 {}; @@ -32,4 +32,4 @@ struct C1 { struct C2 : C1 { virtual G7& fgrv(int,...); // C2688, does not return G4& }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md index af15e50753..97badaca08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2689.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2689.md @@ -13,7 +13,7 @@ You can declare but not define a friend function in a local class. The following sample generates C2689: -``` +```cpp // C2689.cpp // compile with: /c void g() { @@ -23,4 +23,4 @@ void g() { friend void f2(); // OK }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md index 558c14dc67..bd014f5b4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2691.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2691.md @@ -13,7 +13,7 @@ The type of a managed or WinRT array element can be a value type or a reference The following sample generates C2691: -``` +```cpp // C2691a.cpp // compile with: /clr class A {}; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md index 3756aa8eac..f4443b472b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2694.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2694.md @@ -13,7 +13,7 @@ A virtual function was overridden, but under [/Za](../../build/reference/za-ze-d The following sample generates C2694: -``` +```cpp // C2694.cpp // compile with: /Za /c class MyBase { @@ -27,4 +27,4 @@ public: void f(void) throw(...) {} // C2694 void f2(void) throw(int) {} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md index f4ef0c27dd..f08b4a4bb2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2695.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2695.md @@ -13,7 +13,7 @@ The signature of a function in a derived class cannot override a function in a b The following sample generates C2695: -``` +```cpp // C2695.cpp class C { virtual void __fastcall func(); @@ -22,4 +22,4 @@ class C { class D : public C { virtual void __clrcall func(); // C2695 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md index f509daf380..c001e8a518 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2698.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2698.md @@ -13,7 +13,7 @@ Once you have a [using declaration](../../cpp/using-declaration.md) for a data m The following sample generates C2698: -``` +```cpp // C2698.cpp struct A { int x; @@ -27,4 +27,4 @@ struct C : A, B { using A::x; using B::x; // C2698 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md index dbdae549ed..e869b1bc58 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2701.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2701.md @@ -13,7 +13,7 @@ A local class cannot have a template function as a friend function. The following sample generates C2701: -``` +```cpp // C2701.cpp // compile with: /c template // OK @@ -24,4 +24,4 @@ void MyFunction() { template friend void f2(const T &); // C2701 }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md index 59935eaa10..d47053a67c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2702.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2702.md @@ -13,7 +13,7 @@ An exception handler (`__try`/`__except`) cannot be nested inside a `__finally` The following sample generates C2702: -``` +```cpp // C2702.cpp // processor: x86 IPF int Counter; @@ -24,4 +24,4 @@ int main() { __except( Counter ) {} // C2702 } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2703.md b/docs/error-messages/compiler-errors-2/compiler-error-c2703.md index 7131edb5a2..3eb607d086 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2703.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2703.md @@ -13,7 +13,7 @@ A `__leave` statement must be inside a `__try` block. The following sample generates C2703: -``` +```cpp // C2703.cpp int main() { __leave; // C2703 @@ -23,4 +23,4 @@ int main() { } __finally {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2705.md b/docs/error-messages/compiler-errors-2/compiler-error-c2705.md index 1d6c6eefc2..37044f8239 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2705.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2705.md @@ -13,7 +13,7 @@ Execution jumps to a label within a `try`/`catch`, `__try`/`__except`, `__try`/` The following sample generates C2705: -``` +```cpp // C2705.cpp int main() { goto trouble; @@ -25,4 +25,4 @@ goto trouble; // try the following line instead // trouble: ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md index 26367e64be..f2ee7aa8f3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2706.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2706.md @@ -13,7 +13,7 @@ The compiler did not find a closing brace for a `__try` block. The following sample generates C2706: -``` +```cpp // C2706.cpp int main() { __try { @@ -22,4 +22,4 @@ int main() { __except(GetExceptionCode() == 0x0) { } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md index 8cd4760e3d..c9f98ddb1f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2707.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2707.md @@ -23,7 +23,7 @@ To resolve the error, be sure that the exception-handling intrinsics are placed The following sample generates C2707. -``` +```cpp // C2707.cpp #include #include @@ -64,4 +64,4 @@ int main() printf_s("Caught exception\n"); } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md index 8af9f2c6e5..cfcdfcfefb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2710.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2710.md @@ -13,9 +13,9 @@ A function whose return value is a pointer is the only construct to which `modif The following sample generates C2710: -``` +```cpp // C2710.cpp __declspec(restrict) void f(); // C2710 // try the following line instead __declspec(restrict) int * g(); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md index addb040e08..a4bf125478 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2711.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2711.md @@ -13,7 +13,7 @@ Some instructions will prevent the compiler from generating MSIL for the enclosi The following sample generates C2711: -``` +```cpp // C2711.cpp // compile with: /clr // processor: x86 @@ -26,4 +26,4 @@ void bar() { V::t; __asm int 3 // C2711 inline asm can't be compiled managed } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md index 6d56e962cb..8c1ec324db 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2714.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2714.md @@ -17,10 +17,10 @@ See [__alignof Operator](../../cpp/alignof-operator.md) for more information. The following sample generates C2714. -``` +```cpp // C2714.cpp int main() { return __alignof(void); // C2714 return __alignof(char); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md index 5a828ef2cb..6db6f37ce1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2715.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2715.md @@ -11,7 +11,7 @@ ms.assetid: c81567a7-5b65-468f-aaf9-835f91e468e4 Value types are not valid arguments when using exception handling in managed code (see [Exception Handling](../../extensions/exception-handling-cpp-component-extensions.md) for more information). -``` +```cpp // C2715a.cpp // compile with: /clr using namespace System; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md index e8cd16a2b4..90ecacb8ae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2718.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2718.md @@ -13,7 +13,7 @@ The [align](../../cpp/align-cpp.md) `__declspec` modifier is not permitted on fu The following sample generates C2718: -``` +```cpp // C2718.cpp typedef struct __declspec(align(32)) AlignedStruct { int i; @@ -26,4 +26,4 @@ void f4() { f2(0, as); // C2718, actual parameter is aligned } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md index b54d994760..f6be883650 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2719.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2719.md @@ -13,9 +13,9 @@ The [align](../../cpp/align-cpp.md) `__declspec` modifier is not permitted on fu The following sample generates C2719 and shows how to fix it: -``` +```cpp // C2719.cpp void func(int __declspec(align(32)) i); // C2719 // try the following line instead // void func(int i); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md index 73a1d77bcb..44ee5db504 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2723.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2723.md @@ -13,7 +13,7 @@ The specifier cannot appear with a function definition outside of a class declar The following sample generates C2723 and shows how to fix it: -``` +```cpp // C2723.cpp struct X { virtual void f(); @@ -24,4 +24,4 @@ virtual void X::f() {} // C2723 // try the following line instead void X::g() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md index 5f27bcca5a..89c3185eac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2724.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2724.md @@ -13,7 +13,7 @@ Static member functions should be declared with external linkage. The following sample generates C2724: -``` +```cpp // C2724.cpp class C { static void func(); @@ -22,4 +22,4 @@ class C { static void C::func(){}; // C2724 // try the following line instead // void C::func(){}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md index 096bdae3a1..8a3b697a84 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2725.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2725.md @@ -15,7 +15,7 @@ The type of a managed or WinRT exception was not correct. The following sample generates C2725 and shows how to fix it. -``` +```cpp // C2725.cpp // compile with: /clr ref class R { @@ -36,7 +36,7 @@ int main() { The following sample generates C2725 and shows how to fix it. -``` +```cpp // C2725b.cpp // compile with: /clr using namespace System; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md index d618d1ab2e..80dac6f89b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2726.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2726.md @@ -13,7 +13,7 @@ You cannot create an instance of a native type on the garbage-collected heap. The following sample generates C2726 and shows how to fix it: -``` +```cpp // C2726.cpp // compile with: /clr using namespace System; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md index 5125a55465..5d46e6c84c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2728.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2728.md @@ -15,7 +15,7 @@ For more information, see [array](../../extensions/arrays-cpp-component-extensio The following sample generates C2728 and shows how to fix it: -``` +```cpp // C2728.cpp // compile with: /clr diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md index 04aa7eae1e..18d5f44cf1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2731.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2731.md @@ -13,8 +13,8 @@ The functions `main`, `WinMain`, `DllMain`, and `LibMain` cannot be overloaded. The following sample generates C2731: -``` +```cpp // C2731.cpp extern "C" void WinMain(int, char *, char *); void WinMain(int, short, char *, char*); // C2731 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md index ec80f734d3..edaabfe00d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2732.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2732.md @@ -19,8 +19,8 @@ To fix this error, change the `extern` statements so that the linkages agree. In The following sample generates C2732: -``` +```cpp // C2732.cpp extern void func( void ); // implicit C++ linkage extern "C" void func( void ); // C2732 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md index 8cc99f71e4..fcf401d853 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2733.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2733.md @@ -13,7 +13,7 @@ More than one overloaded function is declared with C linkage. When using C linka The following sample generates C2733: -``` +```cpp // C2733.cpp extern "C" { void F1(int); @@ -24,4 +24,4 @@ extern "C" { // try the following line instead // void F2(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md index 527db57d4d..435063027e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2734.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2734.md @@ -13,8 +13,8 @@ The identifier is declared `const` but not initialized or `extern`. The following sample generates C2734: -``` +```cpp // C2734.cpp const int j; // C2734 extern const int i; // OK, declared as extern -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md index 6f2bab6003..c181fbca92 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2735.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2735.md @@ -13,7 +13,7 @@ The keyword is invalid in this context. The following sample generates C2735: -``` +```cpp // C2735.cpp void f(inline int){} // C2735 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md index 6ebb5c9417..e8bbc3209c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2736.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2736.md @@ -13,11 +13,11 @@ The keyword is invalid in a cast. The following sample generates C2736: -``` +```cpp // C2736.cpp int main() { return (virtual) 0; // C2736 // try the following line instead // return 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md index 84530d77e9..574aea2c4a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2738.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2738.md @@ -13,7 +13,7 @@ A function was declared incorrectly. The following sample generates C2738: -``` +```cpp // C2738.cpp struct A { template operator T*(); @@ -30,4 +30,4 @@ A::operator int() { // C2738 return 0; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md index 6c30dd0649..a0773d93d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2739.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2739.md @@ -13,7 +13,7 @@ An array dimension was not between 1 and 32. The following sample generates C2739 and shows how to fix it: -``` +```cpp // C2739.cpp // compile with: /clr int main() { @@ -21,4 +21,4 @@ int main() { // try the following line instead // array^a; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md index b31ff65935..97d45242b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2743.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2743.md @@ -19,7 +19,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui The following sample generates C2743. -``` +```cpp // C2743.cpp // compile with: /clr public struct S { @@ -39,4 +39,4 @@ int main() { try {} catch(S*) {} // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md index 8491d25b7e..e58b30f8f4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2745.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2745.md @@ -13,10 +13,10 @@ Identifiers must be comprised of legal characters. The following sample generates C2745: -``` +```cpp // C2745.cpp // compile with: /clr int main() { int __identifier([)); // C2745 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md index 49992ff6a1..d03d243a17 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2748.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2748.md @@ -13,7 +13,7 @@ A managed or WinRT array was ill formed. For more information, see [array](../.. The following sample generates C2748 and shows how to fix it: -``` +```cpp // C2748.cpp // compile with: /clr int main() { @@ -21,4 +21,4 @@ int main() { // try the following line instead array ^p2 = new array(2); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md index c75260b2f5..38da48e749 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2749.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2749.md @@ -17,7 +17,7 @@ For more information, see [/clr (Common Language Runtime Compilation)](../../bui The following sample generates C2749: -``` +```cpp // C2749.cpp // compile with: /clr:safe ref struct MyStruct { @@ -40,4 +40,4 @@ int main() { } catch(MyStruct ^){} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md index 3ace7a5221..76a39cf6ba 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2750.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2750.md @@ -13,7 +13,7 @@ To create an instance of a CLR type, which causes the instance to be placed on t The following sample generates C2750: -``` +```cpp // C2750.cpp // compile with: /clr ref struct Y1 {}; @@ -24,4 +24,4 @@ int main() { // try the following line instead Y1 ^ x2 = gcnew Y1; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md index 2b3fe1bbe7..c658453af9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2751.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2751.md @@ -13,7 +13,7 @@ You cannot use a qualified name as a function parameter. The following sample generates C2751: -``` +```cpp // C2751.cpp namespace std { template @@ -22,4 +22,4 @@ namespace std { #define list std::list void f(int &list){} // C2751 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md index d275146c02..d84d581317 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2752.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2752.md @@ -13,7 +13,7 @@ An instantiation was ambiguous. The following sample generates C2752: -``` +```cpp // C2752.cpp template struct A {}; @@ -35,4 +35,4 @@ int main() { A a2; A a3; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md index 4e6ae6e57d..8829c828b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2754.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2754.md @@ -13,7 +13,7 @@ An attempt was made to partially specialize a template class that has a dependen The following sample generates C2754: -``` +```cpp // C2754.cpp // compile with: /c @@ -26,4 +26,4 @@ struct B {}; template struct A {}; // C2754 template<> struct A {}; // OK template struct B {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md index 4840fe4160..db2929cd07 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2755.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2755.md @@ -13,7 +13,7 @@ The non-type parameter needs to be a simple identifier, something the compiler c The following sample generates C2755: -``` +```cpp // C2755.cpp template struct A {}; @@ -22,4 +22,4 @@ template struct A {}; // C2755 // try the following line instead // struct A {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md index 2fda199eb0..f36dd0ea06 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2756.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2756.md @@ -13,7 +13,7 @@ The template for a partial specialization may not contain a default argument. The following sample generates C2756 and shows how to fix it: -``` +```cpp // C2756.cpp template struct S {}; @@ -22,4 +22,4 @@ template // try the following line instead // template struct S {}; // C2756 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md index 3498f67ec0..0e73cfa152 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2757.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2757.md @@ -13,7 +13,7 @@ A symbol used in the current compilation as a namespace identifier is already be The following sample generates C2757: -``` +```cpp // C2757a.cpp // compile with: /clr /LD public ref class Nes {}; @@ -21,7 +21,7 @@ public ref class Nes {}; And then, -``` +```cpp // C2757b.cpp // compile with: /clr /c #using diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md index 935b1c0f15..20c055660c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2758.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2758.md @@ -13,7 +13,7 @@ Compiler error C2758 is caused when the constructor does not initialize a member The following sample generates C2758: -``` +```cpp // C2758.cpp // Compile by using: cl /W3 /c C2758.cpp struct A { @@ -23,4 +23,4 @@ struct A { // try the following line instead // A(int n) : i{n} {}; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md index ff86d5cb61..c4ec7f2c04 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2761.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2761.md @@ -15,7 +15,7 @@ You cannot redeclare a member function. You can define it, but not redeclare it. The following sample generates C2761. -``` +```cpp // C2761.cpp class a { int t; @@ -30,7 +30,7 @@ void a::test; // C2761 Nonstatic members of a class or structure cannot be defined. The following sample generates C2761. -``` +```cpp // C2761_b.cpp // compile with: /c struct C { @@ -40,4 +40,4 @@ struct C { int C::s; // C2761 int C::t; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md index f72b554037..6eb2ad9aeb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2762.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2762.md @@ -13,7 +13,7 @@ When using [/Za](../../build/reference/za-ze-disable-language-extensions.md), th The following sample generates C2762: -``` +```cpp // C2762.cpp // compile with: /Za template @@ -24,4 +24,4 @@ void f2() { // try the following line instead // X2(0)> x22; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md index 0886c6c213..95bf72f172 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2764.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2764.md @@ -15,7 +15,7 @@ A template parameter is not used in a partial specialization. This makes the par The following sample generates C2764: -``` +```cpp // C2764.cpp #include template @@ -37,4 +37,4 @@ int main() { s1.m_i = s2.m_c; printf_s("%d\n", s1.m_i); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md index e41d3e54ec..e107659a19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2765.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2765.md @@ -13,11 +13,11 @@ Default arguments are not allowed on an explicit specialization of a function te The following sample generates C2765: -``` +```cpp // C2765.cpp template void f(T t) {}; template<> void f(char c = 'a') {} // C2765 // try the following line instead // template<> void f(char c) {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md index dd788a9fb6..bdcc3e0939 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2766.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2766.md @@ -13,7 +13,7 @@ Duplicate explicit specializations are not allowed. For more information, see [E The following sample generates C2766: -``` +```cpp // C2766.cpp // compile with: /c template @@ -26,4 +26,4 @@ template<> struct A {}; // C2766 // try the following line instead // struct A {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md index e4560d06ea..e461dcc5f6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2767.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2767.md @@ -13,11 +13,11 @@ A managed or WinRT array declaration was ill formed. For more information, see [ The following sample generates C2767 and shows how to fix it: -``` +```cpp // C2767.cpp // compile with: /clr int main() { array ^p1 = new array(2,3); // C2767 array ^p2 = new array(2); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2768.md b/docs/error-messages/compiler-errors-2/compiler-error-c2768.md index 9592e784fd..041a43a377 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2768.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2768.md @@ -15,7 +15,7 @@ This error was introduced in Visual Studio .NET 2003, as part of the compiler co The following sample generates C2768: -``` +```cpp // C2768.cpp template void f(T) {} @@ -28,4 +28,4 @@ void f(int) {} // global nontemplate function overload void f(int) {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md index eb94342c7d..f6c06624c4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2770.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2770.md @@ -13,7 +13,7 @@ Function template candidates with explicit template or generic arguments resulte The following sample generates C2770: -``` +```cpp // C2770.cpp #include template @@ -26,4 +26,4 @@ int main() { // try the following line instead f(0); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md index 973ed45374..11ae8ed18c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2774.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2774.md @@ -13,7 +13,7 @@ A data member declared with [property](../../cpp/property-cpp.md) has no `put` f The following sample generates C2774: -``` +```cpp // C2774.cpp struct A { __declspec(property(get=GetProp)) int prop; @@ -30,4 +30,4 @@ int main() { pa->prop = val; // C2774 pa->prop++; // C2774 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md index 7f53fd8d54..d289f52fda 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2775.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2775.md @@ -13,7 +13,7 @@ A data member declared with the [property](../../cpp/property-cpp.md) extended a The following sample generates C2775: -``` +```cpp // C2775.cpp struct A { __declspec(property(put=PutProp2, get=GetProp2)) int prop2; @@ -31,4 +31,4 @@ int main() { x = pa->prop; // C2775 x = pa->prop2; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md index 93e3424576..b7298ab319 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2776.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2776.md @@ -13,7 +13,7 @@ You can only specify one `get` function in the [property](../../cpp/property-cpp The following sample generates C2776: -``` +```cpp // C2776.cpp struct A { __declspec(property(get=GetProp,get=GetPropToo)) @@ -23,4 +23,4 @@ struct A { int GetProp(void); int GetPropToo(void); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md index ade3658e68..741c29cddf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2777.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2777.md @@ -13,7 +13,7 @@ A [property](../../cpp/property-cpp.md) declspec modifier had more than one `put The following sample generates C2777: -``` +```cpp // C2777.cpp struct A { __declspec(property(put=PutProp,put=PutPropToo)) // C2777 @@ -23,4 +23,4 @@ struct A { int PutProp(void); int PutPropToo(void); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md index 1d2f93e2dc..6d46163988 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2778.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2778.md @@ -13,7 +13,7 @@ An incorrect GUID is supplied to the [uuid](../../cpp/uuid-cpp.md) extended attr The GUID must be a string of hexadecimal numbers with the following format: -``` +```cpp // C2778a.cpp // compile with: /c struct __declspec(uuid("00000000-0000-0000-0000-000000000000")) A {}; @@ -24,8 +24,8 @@ The `uuid` extended attribute accepts strings recognized by [CLSIDFromString](/w The following sample generates C2778: -``` +```cpp // C2778b.cpp struct __declspec(uuid(" 00000000-0000-0000-0000-000000000000 ")) C { }; // C2778 struct __declspec(uuid("00000000000000000000000000000000")) D { }; // C2778 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md index 1893cae949..63cb140286 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2779.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2779.md @@ -13,7 +13,7 @@ The `property` extended attribute is incorrectly applied to a static data member The following sample generates C2779: -``` +```cpp // C2779.cpp struct A { static __declspec(property(put=PutProp)) @@ -22,4 +22,4 @@ struct A { int prop; // C2779 int PutProp(void); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md index 46ebb9056b..8d29f3c9f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2780.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2780.md @@ -13,7 +13,7 @@ A function template has too few or too many arguments. The following sample generates C2780 and shows how to fix it: -``` +```cpp // C2780.cpp template void f(T, T){} @@ -23,4 +23,4 @@ int main() { // try the following line instead // f(1,2); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md index c2b7ca4936..c9a70ad982 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2781.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2781.md @@ -13,7 +13,7 @@ A function template with a variable parameter list has too few arguments. The following sample generates C2781: -``` +```cpp // C2781.cpp template void f(T, T, ...){} @@ -24,4 +24,4 @@ int main() { // try the following line instead f(1,1); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md index b73c02a62d..3cd2445972 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2782.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2782.md @@ -13,7 +13,7 @@ The compiler cannot determine the type of a template argument. The following sample generates C2782: -``` +```cpp // C2782.cpp template void f(T, T) {} @@ -27,7 +27,7 @@ int main() { C2782 can also occur when using generics: -``` +```cpp // C2782b.cpp // compile with: /clr generic void gf(T, T) { } @@ -37,4 +37,4 @@ int main() { // try the following line instead // gf(1, 'c'); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md index 11a743e704..ad8ed7c929 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2783.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2783.md @@ -13,7 +13,7 @@ The compiler cannot determine a template argument. Default arguments cannot be u The following sample generates C2783: -``` +```cpp // C2783.cpp template T1 f(T2) { @@ -29,7 +29,7 @@ int main() { C2783 can also occur when using generics: -``` +```cpp // C2783b.cpp // compile with: /clr using namespace System; @@ -48,4 +48,4 @@ int main() { // OK i = gf(9); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md index 2ecc8354f0..a3733f8438 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2784.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2784.md @@ -13,7 +13,7 @@ The compiler cannot determine a template argument from the supplied function arg The following sample generates C2784 and shows how to fix it: -``` +```cpp // C2784.cpp template class X {}; template void f(X) {} @@ -25,4 +25,4 @@ int main() { // To fix it, try the following line instead f(x); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md index 44db6052da..571d4c7d71 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2785.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2785.md @@ -19,11 +19,11 @@ The return type of function template specialization differs from the return type The following sample generates C2785: -``` +```cpp // C2785.cpp // compile with: /c template void f(T); template<> int f(int); // C2785 template<> void f(int); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md index 288f8dc745..1073ca7bfb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2786.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2786.md @@ -17,7 +17,7 @@ The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type The following sample generates C2786: -``` +```cpp // C2786.cpp struct __declspec(uuid("00000000-0000-0000-0000-000000000000")) A {}; @@ -40,4 +40,4 @@ int main() { __uuidof(pi); // C2786 __uuidof(ppa); // C2786 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md index 8dba4d14c6..c83e30befb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2787.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2787.md @@ -13,7 +13,7 @@ The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type The following sample generates C2787: -``` +```cpp // C2787.cpp #include struct F {}; @@ -24,4 +24,4 @@ int main() { __uuidof(F); // C2787 __uuidof(F2); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md index aa2aa945b5..e4bebdefe2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2788.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2788.md @@ -13,7 +13,7 @@ The [__uuidof](../../cpp/uuidof-operator.md) operator takes a user-defined type The following sample generates C2788: -``` +```cpp // C2788.cpp #include struct __declspec(uuid("00000001-0000-0000-0000-000000000000")) A {}; @@ -28,4 +28,4 @@ int main() { // try the following line instead __uuidof(MyGoodClass); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md index a4362c350d..270664d95f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2790.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2790.md @@ -13,9 +13,9 @@ This error message appears if the user ever tries to uses the keyword [super](.. The following sample generates C2790: -``` +```cpp // C2790.cpp void f() { __super::g(); // C2790 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md index 3783a62c7c..7bed863b69 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2791.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2791.md @@ -13,11 +13,11 @@ The keyword [super](../../cpp/super.md) was used within the context of a member The following sample generates C2791: -``` +```cpp // C2791.cpp struct D { void mf() { __super::mf(); // C2791 } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md index 6e28adbd76..0d065578f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2792.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2792.md @@ -13,7 +13,7 @@ The only token that can follow the keyword `__super` is `::`. The following sample generates C2792: -``` +```cpp // C2792.cpp struct B { void mf(); @@ -27,4 +27,4 @@ struct D : B { // __super::mf(); } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md index b896c29726..495e59ffce 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2793.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2793.md @@ -13,7 +13,7 @@ The only tokens that can follow `__super::` are an identifier or the keyword `op The following sample generates C2793 -``` +```cpp // C2793.cpp struct B { void mf(); @@ -24,4 +24,4 @@ struct D : B { __super::(); // C2793 } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md index 0760a95d90..3ec3295f11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2794.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2794.md @@ -13,7 +13,7 @@ You tried to use [super](../../cpp/super.md) to call a nonexistent member functi The following sample generates C2794 -``` +```cpp // C2794.cpp struct B { void mf(); @@ -24,4 +24,4 @@ struct D : B { __super::f(); // C2794 } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md index f6d1d44c6a..3db561e321 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2798.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2798.md @@ -17,7 +17,7 @@ Multiple inherited structures contain the member you referenced with [super](../ The following sample generates C2798: -``` +```cpp // C2798.cpp struct B1 { int i; @@ -32,4 +32,4 @@ struct D : B1, B2 { __super::i = 4; // C2798 } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md index 0e10d45f55..73e4eee6b5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2800.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2800.md @@ -13,10 +13,10 @@ The following operators cannot be overloaded: class member access (`.`), pointer The following sample generates C2800: -``` +```cpp // C2800.cpp // compile with: /c class C { operator:: (); // C2800 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md index 96a5e69b4f..55448d26d8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2801.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2801.md @@ -27,7 +27,7 @@ Possible C2801 causes: - The following sample generates C2801: -``` +```cpp // C2801.cpp // compile with: /c operator[](); // C2801 not a member @@ -35,4 +35,4 @@ class A { static operator->(); // C2801 static operator()(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md index ce14ec7947..376b74b828 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2802.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2802.md @@ -13,11 +13,11 @@ An operator declared by a `static` member function must have at least one parame The following sample generates C2802: -``` +```cpp // C2802.cpp // compile with: /clr /c ref class A { static operator+ (); // C2802 static operator+ (A^, A^); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md index 619175a456..328dd0fd02 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2803.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2803.md @@ -17,11 +17,11 @@ If both parameters are pointers it will be a pure comparison of pointer addresse The following sample generates C2803: -``` +```cpp // C2803.cpp // compile with: /c class A{}; bool operator< (const A *left, const A *right); // C2803 // try the following line instead // bool operator< (const A& left, const A& right); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md index 24445070e1..79f83bd7a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2804.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2804.md @@ -15,7 +15,7 @@ The overloaded binary operator member function is declared with more than one pa The following sample generates C2804 and shows how to fix it. -``` +```cpp // C2804.cpp // compile by using: cl /c /W4 C2804.cpp class X { @@ -34,7 +34,7 @@ int main() { The following sample generates C2804 and shows how to fix it. -``` +```cpp // C2804_2.cpp // compile with: /clr /c ref struct Y { @@ -42,4 +42,4 @@ ref struct Y { static Y^ operator +(Y^ hY, int i); // OK Y^ operator +(int i); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md index af83b4f20a..1addde51d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2805.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2805.md @@ -13,7 +13,7 @@ The binary operator has no parameters. The following sample generates C2805: -``` +```cpp // C2805.cpp // compile with: /c class X { @@ -21,4 +21,4 @@ public: X operator< ( void ); // C2805 must take one parameter X operator< ( X ); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md index 9547646ffb..9428e4b6d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2806.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2806.md @@ -13,7 +13,7 @@ An overloaded operator has too many parameters. The following sample generates C2806: -``` +```cpp // C2806.cpp // compile with: /c class X { @@ -21,4 +21,4 @@ public: X operator++ ( int, int ); // C2806 more than 1 parameter X operator++ ( int ); // OK } ; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md index 03bdca194d..95a4d3a55c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2807.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2807.md @@ -13,7 +13,7 @@ The second parameter to a postfix operator has the wrong type. The following sample generates C2807: -``` +```cpp // C2807.cpp // compile with: /c class X { @@ -21,4 +21,4 @@ public: X operator++ ( X ); // C2807 nonvoid parameter X operator++ ( int ); // OK, int parameter }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md index 0b61b6c418..789da4b515 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2808.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2808.md @@ -13,7 +13,7 @@ The unary operator has a nonvoid parameter list. The following sample generates C2808: -``` +```cpp // C2808.cpp // compile with: /c class X { @@ -21,4 +21,4 @@ public: X operator! ( X ); // C2808 nonvoid parameter list X operator! ( void ); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md index 8660c48937..dc6276b743 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2809.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2809.md @@ -13,10 +13,10 @@ The operator lacks required parameters. The following sample generates C2809: -``` +```cpp // C2809.cpp // compile with: /c class A{}; int operator+ (); // C2809 int operator+ (A); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md index 45b1ef14cf..2a2d1d9991 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2810.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2810.md @@ -13,7 +13,7 @@ An [interface](../../cpp/interface.md) may only inherit from another interface a The following sample generates C2810: -``` +```cpp // C2810.cpp #include class CBase1 { @@ -33,4 +33,4 @@ struct CBase2 { HRESULT mf1(int a, char *b); HRESULT mf2(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md index 6f8e656d34..dd54fb9f05 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2811.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2811.md @@ -13,11 +13,11 @@ You attempted to use an unmanaged class as a base class for a managed class. The following sample generates C2811: -``` +```cpp // C2811.cpp // compile with: /clr /c struct S{}; ref struct T {}; ref class C : public S {}; // C2811 ref class D : public T {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md index febd045ce4..4f77bed634 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2813.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2813.md @@ -1,6 +1,7 @@ --- title: "Compiler Error C2813" ms.date: "11/04/2016" +f1_keywords: ["C2813"] helpviewer_keywords: ["C2813"] ms.assetid: 6cf2135f-7b82-42d1-909a-5e864308a09c --- @@ -16,11 +17,11 @@ This compiler error and the **/MP** compiler option are new in Visual Studio 200 The following sample generates C2813. The command line in the "compile with:" comment indicates to the compiler to use the **/MP** and **/c** compiler options to compile several files. At least one of the files contains the [#import](../../preprocessor/hash-import-directive-cpp.md) directive. We use the same file twice for the sake of testing this example. -``` +```cpp // C2813.cpp // compile with: /MP /c C2813.cpp C2813.cpp #import "C:\windows\system32\stdole2.tlb" // C2813 int main() { } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md index 949f72ad87..704088cf0d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2814.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2814.md @@ -13,7 +13,7 @@ ms.assetid: 7d165136-a08b-4497-a76d-60a21bb19404 A native type cannot be nested in a CLR or WinRT type. The following sample generates C2814 and shows how to fix it. -``` +```cpp // C2814.cpp // compile with: /clr /c ref class A { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md index 0f4117be85..6006f0aca5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2815.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2815.md @@ -13,7 +13,7 @@ Any user-defined [operator delete](../../standard-library/new-operators.md#op_de The following sample generates C2815: -``` +```cpp // C2815.cpp // compile with: /c class CMyClass { @@ -22,4 +22,4 @@ public: void operator delete(CMyClass *); // C2815 void operator delete(void *); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md index 3f302e52c5..d12666ea13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2819.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2819.md @@ -13,7 +13,7 @@ You need to define `operator->()` to use this pointer operation. The following sample generates C2819: -``` +```cpp // C2819.cpp // compile with: /c class A { @@ -43,7 +43,7 @@ void F(D j) { C2819 can also occur when using [C++ Stack Semantics for Reference Types](../../dotnet/cpp-stack-semantics-for-reference-types.md). The following sample generates C2819: -``` +```cpp // C2819_b.cpp // compile with: /clr ref struct R { @@ -55,4 +55,4 @@ int main() { r->Test(); // C2819 r.Test(); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md index a0dd3070ae..1fc27b3b31 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2824.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2824.md @@ -13,7 +13,7 @@ With non-based pointers, overloads of operator `new` must return `void *`. The following sample generates C2824: -``` +```cpp // C2824.cpp // compile with: /c class A { @@ -21,4 +21,4 @@ class A { // try the following line instead // void* operator new(size_t i, char *m); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md index 64c016edb5..58e687b9bf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2825.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2825.md @@ -17,7 +17,7 @@ For example, make sure that your code does not contain a function declaration wh The following sample generates C2825: -``` +```cpp // C2825.cpp typedef int i; int main() { @@ -26,4 +26,4 @@ int main() { // try the following line instead // p->i::~i(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md index 1440f6b577..f97c6085d1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2831.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2831.md @@ -19,7 +19,7 @@ Only three operators can have default parameters: The following sample generates C2831: -``` +```cpp // C2831.cpp // compile with: /c #define BINOP <= @@ -32,4 +32,4 @@ public: return i+x; } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md index bd56254ea2..c9173b1a9a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2833.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2833.md @@ -15,11 +15,11 @@ For a list of the operators that you can define in a managed type, see [User-def The following sample generates C2833: -``` +```cpp // C2833.cpp // compile with: /c class A {}; void operator ::* (); // C2833 void operator :: (); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md index 9e2bcd2576..9e3fa958a4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2835.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2835.md @@ -13,7 +13,7 @@ User-defined type conversions cannot take formal parameters. The following sample generates C2835: -``` +```cpp // C2835.cpp class A { public: @@ -32,4 +32,4 @@ public: int main() { A a; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md index 2c1d98058e..5a8cd2894d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2838.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2838.md @@ -13,7 +13,7 @@ A class, structure, or union uses a fully qualified name to redeclare a member o The following sample generates C2838: -``` +```cpp // C2838.cpp // compile with: /c class Bellini { @@ -24,4 +24,4 @@ public: class Bottesini { Bellini::Norma(); // C2838 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md index 50327f83a9..4b0407c36f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2843.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2843.md @@ -13,7 +13,7 @@ An instance is needed to take the address of nonstatic data members of a managed The following sample generates C2843 and shows how to fix it: -``` +```cpp // C2843_2.cpp // compile with: /clr public ref class C { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md index 77ccfab9e4..cc7f4d5dd6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2844.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2844.md @@ -15,7 +15,7 @@ Anything other than a property or member function is not allowed in an interface The following sample generates C2844: -``` +```cpp // C2844a.cpp // compile with: /clr /c public interface class IFace { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md index 0b57327a7c..8ed0ac37fd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2846.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2846.md @@ -13,10 +13,10 @@ A Visual C++ [interface](../../cpp/interface.md) cannot have a constructor. The following sample generates C2846: -``` +```cpp // C2846.cpp // compile with: /c __interface C { C(); // C2846 constructor not allowed in an interface }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md index 73477def43..2e35a995c7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2847.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2847.md @@ -13,7 +13,7 @@ The [sizeof](../../cpp/sizeof-operator.md) operator gets the value of an object For example, the following sample generates C2847: -``` +```cpp // C2847.cpp // compile with: /clr ref class A {}; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md index 40075ca0cd..cea2d62e9a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2849.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2849.md @@ -13,10 +13,10 @@ A Visual C++ [interface](../../cpp/interface.md) cannot have a destructor. The following sample generates C2849: -``` +```cpp // C2849.cpp // compile with: /c __interface C { ~C(); // C2849 destructor not allowed in an interface }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md index f25fe486d4..a912ffe7da 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2850.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2850.md @@ -13,7 +13,7 @@ Constructs, such as some pragmas, can only appear at global scope. The following sample generates C2850: -``` +```cpp // C2850.cpp // compile with: /c /Yc // try the following line instead @@ -21,4 +21,4 @@ The following sample generates C2850: namespace X { #pragma hdrstop // C2850 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md index 5758dbf489..19671b4eeb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2854.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2854.md @@ -13,10 +13,10 @@ The `#pragma hdrstop` gives an invalid filename. The pragma can be followed by a The following sample generates C2854: -``` +```cpp // C2854.cpp // compile with: /c #pragma hdrstop( "\\source\\pchfiles\\myheader.pch" ] // C2854 // try the following line instead // #pragma hdrstop( "\\source\\pchfiles\\myheader.pch" ) -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md index 8d9977f991..80c9683c08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2860.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2860.md @@ -13,9 +13,9 @@ Type `void` cannot be used as an argument type with other arguments. The following sample generates C2860: -``` +```cpp // C2860.cpp // compile with: /c void profunc1(void, int i); // C2860 void func10(void); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md index 08d13752f8..d19a500f4f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2861.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2861.md @@ -15,7 +15,7 @@ The compiler encountered the interface keyword or deduced a struct as an interfa The following sample generates C2861: -``` +```cpp // C2861.cpp // compile with: /c #include // required for IUnknown definition @@ -25,4 +25,4 @@ __interface IMyInterface : IUnknown { }; HRESULT IMyInterface::mf(int a) {} // C2861 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md index 82bd491e8e..f4303aa6e5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2862.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2862.md @@ -13,7 +13,7 @@ Protected and private members may be accessed only from other member functions. The following sample will generate C2862: -``` +```cpp // C2862.cpp // compile with: /c #include @@ -26,4 +26,4 @@ protected: private: HRESULT mf3(int *c); // C2862 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md index 5fbb464732..8cc292c953 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2863.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2863.md @@ -13,7 +13,7 @@ Declaring friends on an interface is not allowed. The following sample generates C2863: -``` +```cpp // C2863.cpp // compile with: /c #include @@ -29,4 +29,4 @@ __interface IMyInterface { friend interface IMyInterface1; // C2863 friend void *CMyClass::f(); // C2863 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2864.md b/docs/error-messages/compiler-errors-2/compiler-error-c2864.md index 031357adb4..04f5926cb0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2864.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2864.md @@ -1,19 +1,23 @@ --- title: "Compiler Error C2864" -ms.date: "11/04/2016" +ms.date: 10/04/2019 f1_keywords: ["C2864"] helpviewer_keywords: ["C2864"] ms.assetid: d0ca2ad9-90a6-4aef-8511-98a3b414c102 --- # Compiler Error C2864 -'variable' : a static data member with an in-class initializer must have non-volatile const integral type +> '*member-name*' : a static data member with an in-class initializer must have non-volatile const integral type -To initialize a `static` data member that is defined as `volatile`, non-`const`, or not an integral type, use a member-definition statement. They cannot be initialized in a declaration. +## Remarks + +To initialize a `static` data member that's defined as `volatile`, non-`const`, or not an integral type, use a member-definition statement. They can't be initialized in a declaration. + +## Example This sample generates C2864: -``` +```cpp // C2864.cpp // compile with: /c class B { @@ -22,14 +26,14 @@ private: static int b = 3; // C2864 volatile static int c = 3; // C2864 volatile static const int d = 3; // C2864 - const static long long e = 3; // OK + static const long long e = 3; // OK static const double f = 3.33; // C2864 }; ``` This sample shows how to fix C2864: -``` +```cpp // C2864b.cpp // compile with: /c class C { @@ -48,4 +52,4 @@ int C::b = 3; volatile int C::c = 3; volatile const int C::d = 3; const double C::f = 3.33; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md index 4eacc9551f..558886f42c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2867.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2867.md @@ -13,11 +13,11 @@ A `using` directive is applied to something other than a namespace. The following sample generates C2867: -``` +```cpp // C2867.cpp // compile with: /c namespace N { class X {}; } using namespace N::X; // C2867 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md index 55c1d6ef3b..557fca32e9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2869.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2869.md @@ -13,10 +13,10 @@ You cannot reuse a name already used as a namespace. The following sample generates C2869: -``` +```cpp // C2869.cpp // compile with: /c namespace A { int i; }; class A {}; // C2869, A is already used -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md index 7c8e4e93d6..2ece8f0790 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2870.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2870.md @@ -13,10 +13,10 @@ You defined namespace `name` incorrectly. Namespaces must be defined at file sco The following sample generates C2870: -``` +```cpp // C2870.cpp // compile with: /c int main() { namespace A { int i; }; // C2870 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md index a2c6696765..d1f1bcf625 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2874.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2874.md @@ -13,7 +13,7 @@ The declaration causes the same item to be defined twice. The following sample generates C2874: -``` +```cpp // C2874.cpp namespace Z { int i; @@ -23,4 +23,4 @@ int main() { int i; using Z::i; // C2874, i already declared } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md index 7e0997bcea..a33a648ab3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2875.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2875.md @@ -13,7 +13,7 @@ The declaration causes the same item to be defined twice. The following sample generates C2875: -``` +```cpp // C2875.cpp struct A { void f(int*); @@ -28,4 +28,4 @@ struct AB : A, B { using A::f; // C2875 using B::f; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md index 710d247776..dcaf0f92f1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2876.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2876.md @@ -13,7 +13,7 @@ All overloaded forms of a function in a base class must be accessible to the der The following sample generates C2876: -``` +```cpp // C2876.cpp // compile with: /c class A { @@ -26,4 +26,4 @@ private: class B : public A { using A::a; // C2876 one overload is private in base class }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md index e123b63ad8..b04d615934 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2877.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2877.md @@ -13,7 +13,7 @@ All members derived from a base class must be accessible in the derived class. The following sample generates C2877: -``` +```cpp // C2877.cpp // compile with: /c class A { @@ -24,4 +24,4 @@ private: class B : public A { using A::a; // C2877 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md index 557dedc296..04deabfe97 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2878.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2878.md @@ -13,10 +13,10 @@ You made reference to a namespace or class that is not defined. The following sample generates C2878: -``` +```cpp // C2878.cpp // compile with: /c namespace A {} namespace B = C; // C2878 namespace C doesn't exist namespace B = A; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md index 51a1029dcf..384a402c1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2879.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2879.md @@ -13,10 +13,10 @@ You cannot create a [namespace alias](../../cpp/namespaces-cpp.md#namespace_alia The following sample generates C2879: -``` +```cpp // C2879.cpp int main() { int i; namespace A = i; // C2879 i is not a namespace } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md index 727e84809f..825724f365 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2881.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2881.md @@ -13,7 +13,7 @@ You cannot use the same name as an alias for two namespaces. The following sample generates C2881: -``` +```cpp // C2881.cpp // compile with: /c namespace A { @@ -26,4 +26,4 @@ namespace B { namespace C = A; namespace C = B; // C2881 C is already an alias for A -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md index 5648e71ef0..0287a17414 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2882.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2882.md @@ -13,7 +13,7 @@ You tried to use the name of a namespace in an expression. The following sample generates C2882: -``` +```cpp // C2882.cpp // compile with: /c namespace A { @@ -21,4 +21,4 @@ namespace A { } int i = A; // C2882, can't assign A to i -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md index 56364ac1ea..cbe680f609 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2883.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2883.md @@ -13,7 +13,7 @@ You tried to define a function more than once. The first definition was made fro The following sample generates C2883: -``` +```cpp // C2883.cpp namespace A { void z(int); @@ -23,4 +23,4 @@ int main() { using A::z; void z(int); // C2883 z is already defined } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md index 732be63162..40ac6957d0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2884.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2884.md @@ -13,7 +13,7 @@ You tried to define a function more than once. The first definition is a local d The following sample generates C2884: -``` +```cpp // C2884.cpp namespace A { void z(int); @@ -23,4 +23,4 @@ void f() { void z(int); using A::z; // C2884 z is already defined } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md index da796e9ef4..2ac2f06ad0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2885.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2885.md @@ -17,7 +17,7 @@ This error can be generated as a result of compiler conformance work that was do The following sample generates C2885. -``` +```cpp // C2885.cpp namespace MyNamespace { class X1 {}; @@ -50,7 +50,7 @@ If you use the `using` keyword with a class member, C++ requires you to define t The following sample generates C2885. -``` +```cpp // C2885_b.cpp // compile with: /c class A { @@ -66,4 +66,4 @@ class B : public A { public: using A::i; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md index d4b43709c8..a40b107f9c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2886.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2886.md @@ -13,7 +13,7 @@ A `using` declaration uses a symbol, such as a namespace name. A `using` declara The following sample generates C2886: -``` +```cpp // C2886.cpp // compile with: /c namespace Z { @@ -32,4 +32,4 @@ class D : public B { // OK: B is a base class using B::i; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md index 6849184896..9e091f2203 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2888.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2888.md @@ -13,7 +13,7 @@ A symbol belonging to namespace A must be defined in a namespace that encloses A The following sample generates C2888: -``` +```cpp // C2888.cpp // compile with: /c namespace M { @@ -28,4 +28,4 @@ namespace M { namespace O { void M::N::f2() {} // C2888 namespace O does not enclose M } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md index aa2b761003..0c91a7fcf9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2890.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2890.md @@ -13,7 +13,7 @@ A reference class can only have one base class. The following sample generates C2890: -``` +```cpp // C2890.cpp // compile with: /clr /c ref class A {}; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md index 31ad0d35f3..2354f772a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2892.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2892.md @@ -13,7 +13,7 @@ Templated member functions are not valid in a class that is defined in a functio The following sample generates C2892: -``` +```cpp // C2892.cpp int main() { struct local { @@ -21,4 +21,4 @@ int main() { void f() {} }; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md index 60c5ff637c..e304374110 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2893.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2893.md @@ -17,7 +17,7 @@ In general, the way to resolve a C2893 error is to review the function's signatu C2893 occurs because `f`'s template parameter `T` is deduced to be `std::map`, but `std::map` has no member `data_type` (`T::data_type` can not be instantiated with `T = std::map`.). The following sample generates C2893. -``` +```cpp // C2893.cpp // compile with: /c /EHsc #include @@ -40,4 +40,4 @@ int main() { map m; bar(m); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md index b563d455eb..0b179e943e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2894.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2894.md @@ -13,7 +13,7 @@ This error can be caused by a template defined inside an `extern` "C" block. The following sample generates C2894: -``` +```cpp // C2894.cpp extern "C" { template class stack {}; // C2894 fail @@ -24,10 +24,10 @@ extern "C" { The following sample generates C2894: -``` +```cpp // C2894b.cpp // compile with: /c extern "C" template void f(const T &aT) {} // C2894 template void f2(const T &aT) {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md index 4ffbdf913d..df9942e38c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2896.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2896.md @@ -13,7 +13,7 @@ A function template cannot be an argument to another function template. The following sample generates C2896: -``` +```cpp // C2896.cpp template void f1(void(*)(T1, T2)); template void f2(T1, T2); @@ -25,7 +25,7 @@ int main() { C2896 can also occur when you use generics: -``` +```cpp // C2896b.cpp // compile with: /clr generic void gf1(T1){} @@ -35,4 +35,4 @@ int main() { gf1(gf2); // C2896 gf1(1); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md index 2f387162a0..8a282d8c5f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2897.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2897.md @@ -17,7 +17,7 @@ The following sample generates C2897: The following sample generates C2897. -``` +```cpp // C2897.cpp // compile with: /c class X { @@ -30,11 +30,11 @@ public: The following sample generates C2897. -``` +```cpp // C2897_b.cpp // compile with: /c /clr ref struct R2 { protected: template !R2(){} // C2897 error }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md index f3793564ce..8f8a74dc2f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2898.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2898.md @@ -11,11 +11,11 @@ ms.assetid: 68466e11-2541-4f6b-b772-13a642f30dfb The following sample generates C2898: -``` +```cpp // C2898.cpp // compile with: /c class X { public: template virtual void f(T t) {} // C2898 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md index 3753753c24..e314d68967 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2902.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2902.md @@ -13,7 +13,7 @@ The token following the keyword `template` was not an identifier. The following sample generates C2902: -``` +```cpp // C2902.cpp // compile with: /c namespace N { @@ -31,7 +31,7 @@ void f() { C2902 can also occur when using generics: -``` +```cpp // C2902b.cpp // compile with: /clr /c namespace N { @@ -42,4 +42,4 @@ void f() { N::generic + 1; // C2902 N::generic GC^ x; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md index e54639fe22..39aa2446fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2903.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2903.md @@ -13,7 +13,7 @@ Code attempts explicit instantiation of something that is not a template. The following sample generates C2903: -``` +```cpp // C2903.cpp // compile with: /c namespace N { @@ -28,7 +28,7 @@ void g() { C2903 can also occur when using generics: -``` +```cpp // C2903b.cpp // compile with: /clr /c namespace N { @@ -40,4 +40,4 @@ void f() { N::generic Y y; // C2903 N:: generic Z^ z; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md index 41a22c013c..d5b33d42fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2904.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2904.md @@ -13,9 +13,9 @@ Check the code for duplicate names. The following sample generates C2904: -``` +```cpp // C2904.cpp // compile with: /c void X(); // X is declared as a function template class X{}; // C2904 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md index c7c046e129..38794c45b6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2906.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2906.md @@ -13,10 +13,10 @@ You must use the new syntax for explicit specialization of templates. The following sample generates C2906: -``` +```cpp // C2906.cpp // compile with: /c template class X{}; // primary template class X { } // C2906 template<> class X { }; // new syntax -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md index 6c40691e25..fdf7f0123a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2908.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2908.md @@ -13,7 +13,7 @@ A specialization of the primary template occurs before the explicit specializati The following sample generates C2908: -``` +```cpp // C2908.cpp // compile with: /c template class X {}; @@ -24,4 +24,4 @@ X x; //specialization and instantiation } template<> class X {} // C2908, explicit specialization -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md index 846bb37f64..f0d979a61a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2909.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2909.md @@ -13,10 +13,10 @@ An explicit instantiation of a function template requires explicit specification The following sample generates C2909: -``` +```cpp // C2909.cpp // compile with: /c template int f(T); template f(int); // C2909 template int f(int); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md index 92d1269e0c..fb11d09a44 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2910.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2910.md @@ -13,7 +13,7 @@ The compiler detected an attempt to explicitly specialize a function twice. The following sample generates C2910: -``` +```cpp // C2910.cpp // compile with: /c template @@ -27,7 +27,7 @@ C2910 can also be generated if you try to explicitly specialize a non-template m The following sample generates C2910: -``` +```cpp // C2910b.cpp // compile with: /c template struct A { @@ -52,7 +52,7 @@ For code will be valid in the Visual Studio .NET 2003 and Visual Studio .NET ver The following sample generates C2910: -``` +```cpp // C2910c.cpp // compile with: /c template class A { @@ -66,4 +66,4 @@ template <> class A { template <> void A::f() {} // C2910 // try the following line instead // void A::f(){} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md index 904ec309c9..787488e641 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2911.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2911.md @@ -13,7 +13,7 @@ Inside a namespace, class, or function, you can only define a member of the same The following sample generates C2911: -``` +```cpp // C2911.cpp struct A; @@ -34,4 +34,4 @@ namespace N { struct C {}; // OK C is member of N struct M::D {}; // C2911 D is member of M, M not enclosed by N } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md index 2b1d82ceb7..ea2094c2c6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2912.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2912.md @@ -13,7 +13,7 @@ You cannot specialize a non-template function. The following sample generates C2912: -``` +```cpp // C2912.cpp // compile with: /c void f(char); @@ -23,7 +23,7 @@ template void f(T); // OK This error will also be generated as a result of compiler conformance work that was done in Visual Studio .NET 2003: for every explicit specialization, you must choose the parameters of the explicit specialization, such that, they match the parameters of the primary template. -``` +```cpp // C2912b.cpp class CF { public: @@ -35,4 +35,4 @@ public: // try the following line instead // template <> CF(const char& p) {} }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md index 4c9c49c643..ea31005d0a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2913.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2913.md @@ -13,7 +13,7 @@ You cannot specialize a non-template class. The following sample generates C2913: -``` +```cpp // C2913.cpp // compile with: /c class X{}; @@ -21,4 +21,4 @@ template class Y{}; template<> class X {}; // C2913 template<> class Y {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md index ba5857958d..1f924bf2c5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2914.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2914.md @@ -13,7 +13,7 @@ The compiler cannot determine which overloaded functions to use for a generic or The following sample generates C2914: -``` +```cpp // C2914.cpp // compile with: /c void f(int); @@ -26,7 +26,7 @@ void h() { g(f); } // C2914 C2914 can also occur when using generics. The following sample generates C2914: -``` +```cpp // C2914b.cpp // compile with: /clr /c void f(int); @@ -38,4 +38,4 @@ void gf(void (*) (T)); void h() { gf(f);} // C2914 // try the following line instead void h() { gf(f); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2917.md b/docs/error-messages/compiler-errors-2/compiler-error-c2917.md index da2470a78f..91bb82e6c8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2917.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2917.md @@ -15,7 +15,7 @@ A template parameter list contains an identifier that was not a template paramet The following sample generates C2917. -``` +```cpp // C2917.cpp // compile with: /c template class Vector { @@ -25,4 +25,4 @@ template class Vector { template void Vector::sort() {} // C2917 // try the following line instead // template void Vector::sort() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md index acfe9b203b..759d0382fc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2920.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2920.md @@ -13,7 +13,7 @@ A generic or template class has multiple declarations, which are not equivalent. The following sample generates C2920 and shows how to fix it: -``` +```cpp // C2920.cpp // compile with: /c typedef int TC1; @@ -24,11 +24,11 @@ struct TC2 {}; // OK - fix by using a different name C2920 can also occur when using generics: -``` +```cpp // C2920b.cpp // compile with: /clr /c typedef int GC1; generic ref struct GC1 {}; // C2920 ref struct GC2 {}; // OK - fix by using a different name -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md index 91281eaa41..14a4a0c785 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2921.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2921.md @@ -13,7 +13,7 @@ A generic or template class has multiple declarations that are not equivalent. T The following sample generates C2921: -``` +```cpp // C2921.cpp // compile with: /c template struct TC2 {}; @@ -24,11 +24,11 @@ typedef int TC2; // C2921 C2921 can also occur when using generics. -``` +```cpp // C2921b.cpp // compile with: /clr /c generic ref struct GC2 {}; typedef int GC2; // C2921 // try the following line instead // typedef ref struct GC2 x; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md index b6e547ab04..efa5a30762 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2923.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2923.md @@ -13,7 +13,7 @@ The argument list is missing a type needed to instantiate the template or generi The following sample generates C2923: -``` +```cpp // C2923.cpp template struct TC {}; int x; @@ -25,7 +25,7 @@ int main() { C2923 can also occur when using generics: -``` +```cpp // C2923b.cpp // compile with: /clr /c generic ref struct GC {}; @@ -36,4 +36,4 @@ int main() { GC^ gc2; // C2923 GC^ gc2; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md index ffb7fff336..1869971372 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2929.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2929.md @@ -13,7 +13,7 @@ You cannot explicitly instantiate an identifier while preventing it from being i The following sample generates C2929: -``` +```cpp // C2929.cpp // compile with: /c template @@ -25,4 +25,4 @@ public: template A::A(); extern template A::A(); // C2929 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md index cfc8bf5621..e538399df0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2930.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2930.md @@ -15,7 +15,7 @@ This error can be caused if braces are improperly matched. The following sample generates C2930: -``` +```cpp // C2930.cpp // compile with: /c template @@ -28,7 +28,7 @@ enum SomeEnum { y }; C2930 can also occur when using generics: -``` +```cpp // C2930c.cpp // compile with: /clr /c generic @@ -37,4 +37,4 @@ enum SomeEnum { GC }; // C2930 ref struct GC2 {}; enum SomeEnum2 { GC2 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md index 86ad14f3df..3edf543b21 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2931.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2931.md @@ -15,7 +15,7 @@ This error can be caused if braces are improperly matched. The following sample generates C2931: -``` +```cpp // C2931.cpp // compile with: /c template @@ -32,7 +32,7 @@ struct MyStruct2 { C2931 can also occur when using generics: -``` +```cpp // C2931b.cpp // compile with: /clr /c generic ref struct GC {}; @@ -40,4 +40,4 @@ struct MyStruct { void GC(); // C2931 void GC2(); // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md index e0957cf6cf..888160dd46 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2932.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2932.md @@ -13,7 +13,7 @@ You cannot use a generic or template class as a data member. The following sample generates C2932: -``` +```cpp // C2932.cpp // compile with: /c template @@ -27,7 +27,7 @@ struct MyStruct { C2932 can also occur when using generics: -``` +```cpp // C2932b.cpp // compile with: /clr /c generic @@ -37,4 +37,4 @@ struct MyStruct { int GC; // C2932 int GC; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md index a605bff72b..68e0735667 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2933.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2933.md @@ -13,7 +13,7 @@ You cannot use a generic or template class as a `typedef` member. The following sample generates C2933: -``` +```cpp // C2933.cpp // compile with: /c template struct TC { }; @@ -29,7 +29,7 @@ struct MyStruct2 { C2933 can also occur when using generics: -``` +```cpp // C2933b.cpp // compile with: /clr /c generic ref struct GC { }; @@ -41,4 +41,4 @@ ref struct GC2 { }; struct MyStruct2 { typedef int GC2; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md index 34b7dcd1a0..461dd0ea1b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2935.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2935.md @@ -15,7 +15,7 @@ This error can be caused if braces are improperly matched. The following sample generates C2935: -``` +```cpp // C2935.cpp // compile with: /c template @@ -29,11 +29,11 @@ void TC2() {} C2935 can also occur when using generics: -``` +```cpp // C2935b.cpp // compile with: /clr /c generic ref struct GC { }; void GC() {} // C2935 void GC() {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md index 0d6c451307..a6261239fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2936.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2936.md @@ -15,7 +15,7 @@ This error can be caused if braces are improperly matched. The following sample generates C2936: -``` +```cpp // C2936.cpp // compile with: /c template struct TC { }; @@ -28,7 +28,7 @@ int TC2; C2936 can also occur when using generics: -``` +```cpp // C2936b.cpp // compile with: /clr /c generic @@ -38,4 +38,4 @@ int GC; // C2936 // OK ref struct GC2 {}; int GC2; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md index dfbb80b587..848bb37c8a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2937.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2937.md @@ -13,7 +13,7 @@ You cannot use a generic or template class as a global `typedef`. The following sample generates C2937: -``` +```cpp // C2937.cpp // compile with: /c template @@ -24,11 +24,11 @@ typedef TC c; // OK C2937 can also occur when using generics: -``` +```cpp // C2937b.cpp // compile with: /clr generic ref struct GC { }; typedef int GC; // C2937 typedef GC xx; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md index 144e90c970..ad4bea46b7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2939.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2939.md @@ -15,7 +15,7 @@ This error can be caused if braces are improperly matched. The following sample generates C2939: -``` +```cpp // C2939.cpp template struct TC { }; @@ -27,7 +27,7 @@ int main() { C2939 can also occur when using generics: -``` +```cpp // C2939b.cpp // compile with: /clr generic @@ -37,4 +37,4 @@ int main() { int GC; // C2939 int GC; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md index 0837312b92..5bf7cb8fae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2940.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2940.md @@ -13,7 +13,7 @@ You cannot use a generic or template class as a local `typedef`. The following sample generates C2940: -``` +```cpp // C2940.cpp template struct TC {}; @@ -25,7 +25,7 @@ int main() { C2940 can also occur when using generics: -``` +```cpp // C2940b.cpp // compile with: /clr generic @@ -35,4 +35,4 @@ int main() { typedef int GC; // C2940 typedef int GC; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md index 8f3dc2984d..721f97c346 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2942.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2942.md @@ -28,7 +28,7 @@ void f(TC2 i) {} C2942 can also occur when using generics: -``` +```cpp // C2942b.cpp // compile with: /clr /c generic @@ -36,4 +36,4 @@ ref struct GC {}; void f(int GC) {} // C2942 ref struct GC2 { }; void f(int GC2) {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md index 00fe96d1b5..708bfe586a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2943.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2943.md @@ -13,7 +13,7 @@ You cannot use a generic or template class, instead of a symbol, as a generic or The following sample generates C2943: -``` +```cpp // C2943.cpp // compile with: /c template @@ -21,4 +21,4 @@ class List {}; template > class MyList; // C2943 template class MyList; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md index 19255a3cdd..b8aaed770f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2944.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2944.md @@ -13,7 +13,7 @@ You cannot use a generic or template class, instead of a symbol, as a template v The following sample generates C2944: -``` +```cpp // C2944.cpp // compile with: /c template @@ -26,7 +26,7 @@ template struct X2 {}; C2944 can also occur when using generics: -``` +```cpp // C2944b.cpp // compile with: /clr /c generic @@ -34,4 +34,4 @@ ref class GC {}; template > struct X2 { }; // C2944 template struct X3 {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md index 593b9e60e7..694f5e87a8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2946.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2946.md @@ -15,9 +15,9 @@ You cannot explicitly instantiate a nontemplated class. The following sample generates C2946. -``` +```cpp // C2946.cpp class C {}; template C; // C2946 int main() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md index 64e469c3b7..635eeb4446 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2947.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2947.md @@ -15,11 +15,11 @@ C2947 can also be generated by syntax errors. The following sample generates C2947: -``` +```cpp // C2947.cpp // compile with: /c template = // C2947 // try the following line instead // template struct A {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md index 46ca75d502..153fd28971 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2951.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2951.md @@ -13,7 +13,7 @@ You cannot declare a generic or template class outside global or namespace scope The following sample generates C2951: -``` +```cpp // C2951.cpp template class A {}; @@ -26,7 +26,7 @@ int main() { C2951 can also occur when using generics: -``` +```cpp // C2951b.cpp // compile with: /clr /c @@ -37,4 +37,4 @@ ref class GC { }; int main() { generic ref class GC2 {}; // C2951 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md index b14742460c..351e4e89bc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2952.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2952.md @@ -13,7 +13,7 @@ A template declaration was ill formed. The following sample generates C2952: -``` +```cpp // C2952.cpp // compile with: /c template @@ -34,7 +34,7 @@ void S::S1::f() {} C2952 can also occur when using generics: -``` +```cpp // C2952b.cpp // compile with: /clr /c generic @@ -51,4 +51,4 @@ generic void GC::GC1::f() {} // C2952 generic generic void GC::GC1::f() {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md index 1fb9eedcf2..1bba361890 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2953.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2953.md @@ -13,10 +13,10 @@ Check the source file and include files for other definitions. The following sample generates C2953: -``` +```cpp // C2953.cpp // compile with: /c template class A {}; template class A {}; // C2953 template class B {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md index 38063127d8..cfa64c2d16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2955.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2955.md @@ -15,7 +15,7 @@ For more information, see [Class Templates](../../cpp/class-templates.md). The following sample generates C2955 and shows how to fix it: -``` +```cpp // C2955.cpp // compile with: /c template @@ -27,7 +27,7 @@ X x2; // OK - this is how to fix it. C2955 can also occur when attempting an out-of-line definition for a function declared in a class template: -``` +```cpp // C2955_b.cpp // compile with: /c template @@ -46,7 +46,7 @@ void CT::CTFunc2() {} C2955 can also occur when using generics: -``` +```cpp // C2955_c.cpp // compile with: /clr generic diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md index 43776ebc24..b66da57c43 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2957.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2957.md @@ -13,11 +13,11 @@ A generic class was ill formed. The following sample generates C2957: -``` +```cpp // C2957.cpp // compile with: /clr /LD generic << class T> // C2957 // try the following line instead // generic < class T> gc class C {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md index a9e6383a1b..7d75c54592 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2959.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2959.md @@ -15,10 +15,10 @@ For more information, see [Windows Runtime and Managed Templates](../../extensio The following sample generates C2959. -``` +```cpp // C2959.cpp // compile with: /clr /c template ref struct S { generic ref struct GR1; // C2959 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md index 143bcfd0ef..5274c478a7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2969.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2969.md @@ -13,7 +13,7 @@ A template member function definition has an unmatched closing brace. The following sample generates C2969: -``` +```cpp // C2969.cpp // compile with: /c class A { @@ -30,4 +30,4 @@ class B { // try the following line instead // B() : a(anA) {} }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md index 10f927a75b..3c27959ae0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2970.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2970.md @@ -13,7 +13,7 @@ You cannot use the name or address of a static variable as a template argument. The following sample generates C2970: -``` +```cpp // C2970.cpp // compile with: /c static int si; @@ -31,4 +31,4 @@ X anX; // C2970 cannot use static variable in templates // this would also work const int i = 10; X anX2; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md index e7bd5f99b1..514a4aa6c0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2971.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2971.md @@ -13,7 +13,7 @@ You cannot use the name or address of a local variable as a template argument. The following sample generates C2971: -``` +```cpp // C2971.cpp template class Y {}; @@ -26,4 +26,4 @@ int main() { // try the following line instead // Y<&global_var> aY; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md index e1c751d859..9b51417a79 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2974.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2974.md @@ -13,7 +13,7 @@ The generic or template argument does not match the generic or template declarat The following sample generates C2974: -``` +```cpp // C2974.cpp // C2974 expected template @@ -34,7 +34,7 @@ int main() { C2974 can also occur when using generics: -``` +```cpp // C2974b.cpp // compile with: /clr // C2974 expected @@ -54,4 +54,4 @@ int main() { GCtype^ gc; gf("abc"); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md index 0063666005..62a7382158 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2976.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2976.md @@ -15,7 +15,7 @@ This error can be caused by missing template arguments in C++ Standard Library c The following sample generates C2976: -``` +```cpp // C2976.cpp template struct TC { @@ -29,7 +29,7 @@ int main() { C2976 can also occur when using generics: -``` +```cpp // C2976b.cpp // compile with: /clr generic @@ -41,4 +41,4 @@ int main() { GC<>^ g; // C2976 GC^ g2; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md index edbeea6cdf..91a55cacf1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2977.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2977.md @@ -13,7 +13,7 @@ A generic or template has too many actual arguments. Check the generic or templa The following sample generates C2977: -``` +```cpp // C2977.cpp // compile with: /c template @@ -25,7 +25,7 @@ template MyClass< int , 1 >; // OK C2977 can also occur when using generics: -``` +```cpp // C2977b.cpp // compile with: /clr // C2977 expected @@ -44,4 +44,4 @@ int main() { GC1 ^ pgc1; f(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md index f07f4606dc..a509f1834b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2978.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2978.md @@ -15,7 +15,7 @@ A generic class was declared incorrectly. See [Generics](../../extensions/generi The following sample generates C2978. -``` +```cpp // C2978.cpp // compile with: /clr /c generic // C2978 @@ -31,4 +31,4 @@ generic ref class Utils2 { static void sort(T elems, size_t size); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md index 92add359b9..fe8def072f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2979.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2979.md @@ -15,7 +15,7 @@ A generic class was declared incorrectly. See [Generics](../../extensions/gener The following sample generates C2979. -``` +```cpp // C2979.cpp // compile with: /clr /c generic <> @@ -23,4 +23,4 @@ ref class Utils {}; // C2979 error generic ref class Utils2 {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md index 62c72cc8f2..aca6602ff6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2990.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2990.md @@ -13,7 +13,7 @@ The non generic or template class redefines a generic or template class. Check h The following sample generates C2990: -``` +```cpp // C2990.cpp // compile with: /c template @@ -23,7 +23,7 @@ class C{}; // C2990 C2990 can also occur when using generics: -``` +```cpp // C2990b.cpp // compile with: /clr /c generic @@ -36,7 +36,7 @@ C2990 can also occur due to a breaking change in the Microsoft C++ compiler for The following sample generates C2990: -``` +```cpp // C2990c.cpp // compile with: /c template @@ -53,4 +53,4 @@ struct B { template friend class A; }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md index 2a9008bbdb..917131fc5b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2991.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2991.md @@ -13,7 +13,7 @@ There was a type conflict between two generic or template definitions of `parame The following sample generates C2991: -``` +```cpp // C2991.cpp // compile with: /c template struct TC {}; // C2991 @@ -23,10 +23,10 @@ template struct TC {}; // C2991 C2991 can also occur when using generics: -``` +```cpp // C2991b.cpp // compile with: /clr /c generic ref struct GC {}; // C2991 // try the following line instead // generic ref struct GC {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md index 5397fbb547..c9294c9538 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2992.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2992.md @@ -15,7 +15,7 @@ The class is preceded by a `template` or **generic** keyword with missing or inv The following sample generates C2992: -``` +```cpp // C2992.cpp // compile with: /c template @@ -45,4 +45,4 @@ generic ref struct GC1::GC2 {}; // C2992 generic generic ref struct GC1::GC2 {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md index 196bd07592..2bf154f6d6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2993.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2993.md @@ -13,7 +13,7 @@ You cannot declare a template with a structure or union argument. Use pointers t The following sample generates C2993: -``` +```cpp // C2993.cpp // compile with: /c // C2993 expected @@ -32,11 +32,11 @@ This error will also be generated as a result of compiler conformance work that If it is a function template, use a function argument to pass in the floating point non-type template parameter (this code will be valid in the Visual Studio .NET 2003 and Visual Studio .NET versions of Visual C++). If it is a class template, there is no easy workaround. -``` +```cpp // C2993b.cpp // compile with: /c template void func(T) {} // C2993 // OK template void func2(T, float) {} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md index c12e981b7d..687d2566d7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2995.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2995.md @@ -13,7 +13,7 @@ Make sure that there is only one definition for each member function of a templa The following sample generates C2995: -``` +```cpp // C2995.cpp // compile with: /c template @@ -21,4 +21,4 @@ void Test(T x){} template void Test(T x){} // C2995 template void Test2(T x){} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c2998.md b/docs/error-messages/compiler-errors-2/compiler-error-c2998.md index fe17dc413f..b3404c3074 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c2998.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c2998.md @@ -13,8 +13,8 @@ The compiler could not process the syntax used in the template definition. The following sample generates C2998: -``` +```cpp // C2998.cpp // compile with: /c template int x = 1018; // C2998 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md index 474435c7ad..40098df535 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3001.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3001.md @@ -13,11 +13,11 @@ The `omp` pragma must be followed by a directive. The following sample generates C3001: -``` +```c // C3001.c // compile with: /openmp int main() { #pragma omp // C3001 missing token } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md index 66ade21f2b..cac0ac2150 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3002.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3002.md @@ -13,11 +13,11 @@ Multiple directive names are not allowed. The following sample generates C3002: -``` +```c // C3002.c // compile with: /openmp int main() { #pragma omp parallel single // C3002 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md index c48ad87445..d27dbafa57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3003.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3003.md @@ -13,7 +13,7 @@ An OpenMP directive name cannot follow an OpenMP directive clause. The following sample generates C3003: -``` +```c // C3003.c // compile with: /openmp int main() @@ -21,4 +21,4 @@ int main() int x, y, z; #pragma omp parallel shared(x, y, z) for // C3003 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md index c45676f883..6b2084cb97 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3004.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3004.md @@ -13,7 +13,7 @@ An OpenMP clause was used on a directive for which it is not enabled. The following sample generates C3004: -``` +```c // C3004.c // compile with: /openmp int main() @@ -25,4 +25,4 @@ int main() x = y; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md index ec4b6b9e6d..fc10a24d11 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3005.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3005.md @@ -13,7 +13,7 @@ An OpenMP directive was ill formed. The following sample generates C3005: -``` +```c // C3005.c // compile with: /openmp int main() @@ -24,7 +24,7 @@ int main() C3005 can also occur if you put an open brace on the same line as the pragma. -``` +```c // C3005b.c // compile with: /openmp int main() { @@ -33,4 +33,4 @@ int main() { } goto lbl2; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md index 6393b6219f..c0ebff4ff1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3006.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3006.md @@ -13,7 +13,7 @@ An OpenMP directive did not have an expected argument. The following sample generates C3006: -``` +```c // C3006.c // compile with: /openmp int main() @@ -23,4 +23,4 @@ int main() // #pragma omp parallel shared(x) {} } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md index d637b79010..1eb8a7b7dc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3007.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3007.md @@ -13,11 +13,11 @@ An OpenMP directive had an argument, but the directive does not take an argument The following sample generates C3007: -``` +```c // C3007.c // compile with: /openmp int main() { #pragma omp parallel for ordered(2) // C3007 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md index 79dc84ae6b..347ad7ed94 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3008.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3008.md @@ -13,7 +13,7 @@ An OpenMP directive that takes an argument did not have a closing parenthesis. The following sample generates C3008: -``` +```c // C3008.c // compile with: /openmp int main() @@ -25,4 +25,4 @@ int main() { } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md index daacdc5239..905b5dfc6c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3009.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3009.md @@ -13,7 +13,7 @@ Code cannot jump into or out of an OpenMP block. The following sample generates C3009: -``` +```c // C3009.c // compile with: /openmp int main() { @@ -23,4 +23,4 @@ int main() { } goto lbl2; // C3009 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md index 87be1ba003..a0033668cb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3010.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3010.md @@ -13,7 +13,7 @@ Code cannot jump into or out of an OpenMP block. The following sample generates C3010: -``` +```c // C3010.c // compile with: /openmp int main() { @@ -26,4 +26,4 @@ int main() { } lbl3:; // C3010 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md index 957cd1b6bc..b82b3e3ee8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3011.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3011.md @@ -13,7 +13,7 @@ An `omp` parallel region cannot contain inline assembly instructions. The following sample generates C3011: -``` +```cpp // C3011.cpp // compile with: /openmp // processor: /x86 @@ -25,4 +25,4 @@ int main() { _asm mov eax, n // Delete this line to resolve this error. } // C3011 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md index 5f9b4c7d57..3cf3996aae 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3013.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3013.md @@ -13,7 +13,7 @@ A clause appeared twice on the same directive. Delete one occurrence of the clau The following sample generates C3013: -``` +```cpp // C3013.cpp // compile with: /openmp int main() { @@ -28,4 +28,4 @@ int main() { for (a = 0 ; a < 10 ; ++a) { } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md index cf8eee6266..3e0473ae4d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3014.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3014.md @@ -13,7 +13,7 @@ It is an error for anything other than a `for` loop to immediately follow a `#pr The following sample generates C3014: -``` +```cpp // C3014.cpp // compile with: /openmp int main() @@ -65,4 +65,4 @@ int main() { } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md index d866a87192..c6ee1d3df1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3015.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3015.md @@ -13,7 +13,7 @@ A `for` loop in an OpenMP statement must be fully and explicitly specified. The following sample generates C3015: -``` +```cpp // C3015.cpp // compile with: /openmp int main() @@ -29,4 +29,4 @@ int main() --j; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md index 4dee325083..863befcaf9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3016.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3016.md @@ -13,7 +13,7 @@ The index variable in an OpenMP `for` statement must be a signed integral type. The following sample generates C3016: -``` +```cpp // C3016.cpp // compile with: /openmp int main() @@ -30,4 +30,4 @@ int main() } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md index 93fd3a51ad..16f4671ea1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3017.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3017.md @@ -13,7 +13,7 @@ A `for` loop in an OpenMP statement must be fully and explicitly specified. The following sample generates C3017: -``` +```cpp // C3017.cpp // compile with: /openmp int main() @@ -29,4 +29,4 @@ int main() ; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md index 8a1a4606d9..bccdf0bf83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3018.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3018.md @@ -13,7 +13,7 @@ A `for` loop in an OpenMP statement must use the same variable for its test and The following sample generates C3018: -``` +```cpp // C3018.cpp // compile with: /openmp int main() @@ -35,4 +35,4 @@ int main() j *= 2; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md index db4c1381a3..636440af26 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3019.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3019.md @@ -13,7 +13,7 @@ The increment part of an OpenMP `for` loop must use the index variable both on t The following sample generates C3019: -``` +```cpp // C3019.cpp // compile with: /openmp int main() @@ -29,4 +29,4 @@ int main() j *= 2; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md index 7041703f95..187bf1fbe2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3020.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3020.md @@ -13,7 +13,7 @@ An OpenMP `for` loop may not modify the index (loop counter) in the body of the The following sample generates C3020: -``` +```cpp // C3020.cpp // compile with: /openmp int main() { @@ -34,7 +34,7 @@ A variable declared with [lastprivate](../../parallel/openmp/reference/lastpriva The following sample will give C3020 for the second lastprivate because that lastprivate will trigger a write to idx_a within the outermost for loop. The first lastprivate doesn't give an error because that lastprivate triggers a write to idx_a outside the outermost for loop (technically, at the very end of the last iteration). The following sample generates C3020. -``` +```cpp // C3020b.cpp // compile with: /openmp /c float a[100][100]; @@ -53,7 +53,7 @@ void test(int first, int last) The following sample demonstrates a possible resolution: -``` +```cpp // C3020c.cpp // compile with: /openmp /c float a[100][100]; @@ -68,4 +68,4 @@ void test(int first, int last) } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md index 7032fa443a..19970516e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3021.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3021.md @@ -15,7 +15,7 @@ An argument is required for an OpenMP directive. The following sample generates C3021: -``` +```cpp // C3021.cpp // compile with: /openmp #include @@ -68,4 +68,4 @@ int main() #pragma omp parallel reduction(|| : x, y) ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md index 834a47b783..bda7aa3983 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3022.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3022.md @@ -13,7 +13,7 @@ An unsupported value was passed to a clause. The following sample generates C3022: -``` +```cpp // C3022.cpp // compile with: /openmp /link vcomps.lib #include @@ -33,4 +33,4 @@ int main() { for (i = 0; i < 10; ++i) ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md index cfacad71eb..1e1ce3093e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3023.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3023.md @@ -13,7 +13,7 @@ The values passed to a clause were not valid. The following sample generates C3023: -``` +```cpp // C3023.cpp // compile with: /openmp /link vcomps.lib #include @@ -33,4 +33,4 @@ int main() { for (i = 0; i < 10; ++i) ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md index a5b1efcc6d..883f2982cd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3024.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3024.md @@ -13,7 +13,7 @@ A value cannot be passed to the run-time parameter of the schedule clause. The following sample generates C3024: -``` +```cpp // C3024.cpp // compile with: /openmp /link vcomps.lib #include @@ -28,4 +28,4 @@ int main() { #pragma omp parallel for schedule(runtime) // OK for (i = 0; i < 10; ++i) ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md index 2ac1e0aed6..f594ac8a45 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3025.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3025.md @@ -15,7 +15,7 @@ A clause requires an integer expression but was given a noninteger expression. The following sample generates C3025. -``` +```cpp // C3025.cpp // compile with: /openmp /link vcomps.lib #include @@ -40,4 +40,4 @@ int main() printf_s("Hello World - thread %d - iteration %d\n", omp_get_thread_num(), i); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md index 66c8aa019c..d055a2927a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3026.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3026.md @@ -15,7 +15,7 @@ A clause was passed an integer value, but the value was not a positive number. T The following sample generates C3026: -``` +```cpp // C3026.cpp // compile with: /openmp /link vcomps.lib #include @@ -36,4 +36,4 @@ int main() printf_s("Hello World - thread %d - iteration %d\n", omp_get_thread_num(), i); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md index 508274b5e8..5b56c5e18a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3027.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3027.md @@ -15,7 +15,7 @@ A clause that requires an arithmetic or pointer expression was passed another ki The following sample generates C3027: -``` +```cpp // C3027.cpp // compile with: /openmp /link vcomps.lib #include @@ -42,4 +42,4 @@ int main() printf_s("Hello World - thread %d - iteration %d\n", omp_get_thread_num(), i); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md index d79ec194ab..54815b067b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3028.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3028.md @@ -13,7 +13,7 @@ A symbol other than a variable or static data member was passed to the reduction The following sample generates C3028: -``` +```cpp // C3028.cpp // compile with: /openmp /link vcomps.lib int g_i; @@ -91,4 +91,4 @@ int main() { // C3028, XyzNS is a namespace. ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md index c667382bd1..4fe5c3bcbb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3029.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3029.md @@ -13,7 +13,7 @@ A symbol was used more than once in one or more clauses in a directive. The symb The following sample generates C3029: -``` +```cpp // C3029.cpp // compile with: /openmp /link vcomps.lib #include "omp.h" @@ -35,4 +35,4 @@ int main() { #pragma omp parallel reduction(+ : x) // OK ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md index ae1db4e30a..a511ec2c13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3030.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3030.md @@ -13,7 +13,7 @@ You can only pass value parameters to certain clauses, such as the reduction cla The following sample generates C3030: -``` +```cpp // C3030.cpp // compile with: /openmp /link vcomps.lib #include "omp.h" @@ -38,4 +38,4 @@ int main(int argc, char** argv) { #pragma omp parallel reduction(+ : s) // OK ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md index 86ff0a535d..17158c1f46 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3031.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3031.md @@ -13,7 +13,7 @@ A variable of the wrong type was passed to a reduction clause. The following sample generates C3031: -``` +```cpp // C3031.cpp // compile with: /openmp /link vcomps.lib #include @@ -33,4 +33,4 @@ int main() { #pragma omp parallel reduction(+: i) // OK ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md index 5809438ac5..cbcf6053bd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3032.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3032.md @@ -13,7 +13,7 @@ Types passed to certain clauses must be fully visible to the compiler. The following sample generates C3032: -``` +```cpp // C3032.cpp // compile with: /openmp /link vcomps.lib #include "omp.h" @@ -30,4 +30,4 @@ int main() { ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md index de36f6a129..4dbb480dc5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3033.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3033.md @@ -13,7 +13,7 @@ Values passed to certain clauses cannot be `const` variables. The following sample generates C3033: -``` +```cpp // C3033.cpp // compile with: /openmp /link vcomps.lib int main() { @@ -26,4 +26,4 @@ int main() { #pragma omp parallel reduction(+ : val2) // OK ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md index 747752adba..1930a2c82c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3034.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3034.md @@ -13,7 +13,7 @@ Some directives cannot be nested. To fix this error, you can merge the statement The following sample generates C3034: -``` +```cpp // C3034.cpp // compile with: /openmp /link vcomps.lib int main() { @@ -35,4 +35,4 @@ int main() { { } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md index e8e4e875d0..14b39fd109 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3035.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3035.md @@ -13,7 +13,7 @@ An ordered clause was ill formed. The following sample generates C3035: -``` +```cpp // C3035.cpp // compile with: /openmp /link vcomps.lib int main() { @@ -28,4 +28,4 @@ int main() { ; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md index 57aa615177..a4bbd3c636 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3036.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3036.md @@ -13,7 +13,7 @@ A [reduction](../../parallel/openmp/reference/reduction.md) clause was not speci The following sample generates C3036: -``` +```cpp // C3036.cpp // compile with: /openmp static float a[1000], b[1000], c[1000]; @@ -25,4 +25,4 @@ void test1(int first, int last) { for (int i = first ; i <= last ; ++i) dp += a[i] * b[i]; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md index 50b832b312..56020f3b16 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3037.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3037.md @@ -13,7 +13,7 @@ A variable specified in a [reduction](../../parallel/openmp/reference/reduction. The following sample generates C3037: -``` +```cpp // C3037.cpp // compile with: /openmp /c int g_i; @@ -31,4 +31,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md index ddfe3e8c3e..53ee4d06ea 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3038.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3038.md @@ -13,7 +13,7 @@ Variables that appear in the [reduction](../../parallel/openmp/reference/reducti The following sample generates C3038: -``` +```cpp // C3038.cpp // compile with: /openmp /c int g_i, g_i2; @@ -30,4 +30,4 @@ int main() { g_i += i; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md index 0c51e6ea8b..147e7113c9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3039.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3039.md @@ -15,7 +15,7 @@ An index variable is implicitly private, so the variable cannot be used in a [re The following sample generates C3039: -``` +```cpp // C3039.cpp // compile with: /openmp /c int g_i; @@ -30,4 +30,4 @@ int main() { g_i += i; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md index 05459aaffe..851c792132 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3040.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3040.md @@ -13,7 +13,7 @@ A variable in a [reduction](../../parallel/openmp/reference/reduction.md) clause The following sample generates C3040: -``` +```cpp // C3040.cpp // compile with: /openmp /c #include "omp.h" @@ -26,4 +26,4 @@ int main() { #pragma omp parallel reduction(-:d) // OK ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md index 74f3ec9e44..b90321549a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3041.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3041.md @@ -13,7 +13,7 @@ A variable passed to [copyprivate](../../parallel/openmp/reference/copyprivate.m The following sample generates C3041: -``` +```cpp // C3041.cpp // compile with: /openmp /c #include "omp.h" @@ -29,4 +29,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md index e085265125..cc630d56a1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3042.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3042.md @@ -13,7 +13,7 @@ The [copyprivate](../../parallel/openmp/reference/copyprivate.md) and [nowait](. The following sample generates C3042: -``` +```cpp // C3042.cpp // compile with: /openmp /c #include @@ -29,4 +29,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md index eec683d689..adfd4f395f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3043.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3043.md @@ -13,7 +13,7 @@ A [critical](../../parallel/openmp/reference/critical.md) directive cannot be ne The following sample generates C3043: -``` +```cpp // C3043.cpp // compile with: /openmp /c #include "omp.h" @@ -38,4 +38,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md index c9d4a008e5..e5717c58fa 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3044.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3044.md @@ -13,7 +13,7 @@ The compiler found a `section` directive was used incorrectly. For more informat The following sample generates C3044: -``` +```cpp // C3044.cpp // compile with: /openmp /c #include "omp.h" @@ -48,4 +48,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md index 5388af800d..1c4abadfe1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3045.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3045.md @@ -13,7 +13,7 @@ A code block delimited by braces must follow a [sections](../../parallel/openmp/ The following sample generates C3045: -``` +```cpp // C3045.cpp // compile with: /openmp /c #include "omp.h" @@ -34,4 +34,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md index d69e9fcd7d..71af42dae1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3046.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3046.md @@ -13,7 +13,7 @@ A [sections](../../parallel/openmp/reference/sections-openmp.md) directive has a The following sample generates C3046: -``` +```cpp // C3046.cpp // compile with: /openmp /c #include "omp.h" @@ -38,4 +38,4 @@ int main() { } // C3046 uncomment code to resolve this C3046 } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md index ae62464eb5..ba75c2acca 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3047.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3047.md @@ -13,7 +13,7 @@ Any code in a code block introduced by a [sections](../../parallel/openmp/refere The following sample generates C3047: -``` +```cpp // C3047.cpp // compile with: /openmp /c #include "omp.h" @@ -37,4 +37,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md index 49b7017555..3b70f0db08 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3048.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3048.md @@ -13,7 +13,7 @@ An atomic directive was incorrectly specified. The following sample generates C3048: -``` +```cpp // C3048.cpp // compile with: /openmp vcomps.lib #include "omp.h" @@ -30,4 +30,4 @@ int main() { // a[0] += 1; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md index fefa198294..af306eaccd 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3049.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3049.md @@ -13,7 +13,7 @@ An incorrect value was passed to a [default](../../parallel/openmp/reference/def The following sample generates C3049: -``` +```cpp // C3049.cpp // compile with: /openmp /c int main() { @@ -26,4 +26,4 @@ int main() { ++n1; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md index bb96f3c7ac..a9fdcb9a57 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3050.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3050.md @@ -13,9 +13,9 @@ ms.assetid: ee090a0b-29cc-4215-a2f9-d82af79b8e82 The following sample generates C3050: -``` +```cpp // C3050.cpp // compile with: /clr /LD ref struct X : System::ValueType {}; // C3050 ref struct Y {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md index a0a5c68bc3..babc67541c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3052.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3052.md @@ -13,7 +13,7 @@ If [default(none)](../../parallel/openmp/reference/default-openmp.md) is used, a The following sample generates C3052: -``` +```cpp // C3052.cpp // compile with: /openmp /c int main() { @@ -24,4 +24,4 @@ int main() { n1 = 0; // C3052 use either a shared or private clause } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md index 623ee18e1c..9ff5b31b36 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3053.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3053.md @@ -13,7 +13,7 @@ Symbols passed to [threadprivate](../../parallel/openmp/reference/threadprivate. The following sample generates C3053: -``` +```cpp // C3053.cpp // compile with: /openmp void Test() { @@ -28,7 +28,7 @@ void Test() { Possible resolution: -``` +```cpp // C3053b.cpp // compile with: /openmp /LD int x, y; @@ -40,4 +40,4 @@ void Test() { x = y; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3054.md b/docs/error-messages/compiler-errors-2/compiler-error-c3054.md index c0cc533832..5c73593ec3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3054.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3054.md @@ -15,7 +15,7 @@ For more information, see [Generics](../../extensions/generics-cpp-component-ext The following sample generates C3054. -``` +```cpp // C3054.cpp // compile with: /openmp /clr /c #include @@ -38,4 +38,4 @@ ref struct MyBaseClass { } } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md index c5e782a29d..7c4fb1a4bb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3055.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3055.md @@ -13,7 +13,7 @@ A symbol was referenced and then used in a [threadprivate](../../parallel/openmp The following sample generates C3055: -``` +```cpp // C3055.cpp // compile with: /openmp int x, y; @@ -30,7 +30,7 @@ void test() { Possible resolution: -``` +```cpp // C3055b.cpp // compile with: /openmp /LD int x, y, z; @@ -42,4 +42,4 @@ void test() { x = y; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md index 56abaf7014..39d1c66b5c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3056.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3056.md @@ -13,7 +13,7 @@ A symbol used in a [threadprivate](../../parallel/openmp/reference/threadprivate The following sample generates C3056: -``` +```cpp // C3056.cpp // compile with: /openmp int x, y; @@ -28,7 +28,7 @@ void test() { Possible resolution: -``` +```cpp // C3056b.cpp // compile with: /openmp /LD int x, y; @@ -39,4 +39,4 @@ void test() { x = y; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md index 6dc265c4b9..d286d377f8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3057.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3057.md @@ -13,7 +13,7 @@ The initialized value of a symbol used in a [threadprivate](../../parallel/openm The following sample generates C3057: -``` +```cpp // C3057.cpp // compile with: /openmp /c extern int f(); @@ -39,7 +39,7 @@ int main() { The following sample generates C3057: -``` +```cpp // C3057b.cpp // compile with: /openmp /c extern int Initialize(); @@ -62,4 +62,4 @@ int main() { } } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md index d5c8083f2c..2eb2e970b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3058.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3058.md @@ -13,7 +13,7 @@ A symbol must first be declared [threadprivate](../../parallel/openmp/reference/ The following sample generates C3058: -``` +```cpp // C3058.cpp // compile with: /openmp int x, y, z; @@ -28,7 +28,7 @@ void test() { Possible resolution: -``` +```cpp // C3058b.cpp // compile with: /openmp /LD int x, y, z; @@ -39,4 +39,4 @@ void test() { { } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md index 919135b34b..b2aaaaeb5f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3059.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3059.md @@ -13,7 +13,7 @@ A [threadprivate](../../parallel/openmp/reference/threadprivate.md) symbol was u The following sample generates C3059: -``` +```cpp // C3059.cpp // compile with: /openmp #include "omp.h" @@ -30,7 +30,7 @@ int main() { Possible resolution: -``` +```cpp // C3059b.cpp // compile with: /openmp #include "omp.h" @@ -42,4 +42,4 @@ int main() { x = y; } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md index b12380a0e0..b3985f6f3c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3060.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3060.md @@ -13,7 +13,7 @@ A friend function was defined using a qualified name, which is not allowed. The following sample generates C3060: -``` +```cpp // C3060.cpp class A { public: @@ -28,4 +28,4 @@ public: }; // void A::func(){} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md index 0469b18854..6bff042104 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3062.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3062.md @@ -15,10 +15,10 @@ For more information on enums, see [enum class](../../extensions/enum-class-cpp- The following sample generates C3062: -``` +```cpp // C3062.cpp // compile with: /clr enum class MyEnum : bool { a }; // C3062 enum class MyEnum2 : bool { a = true}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md index 020a5b614a..958df51329 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3063.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3063.md @@ -15,7 +15,7 @@ When using operators on enumerators, both operands must be of the enumeration ty The following sample generates C3063 and shows how to fix it: -``` +```cpp // C3063.cpp // compile with: /clr enum class E { a, b } e, mask; @@ -25,4 +25,4 @@ int main() { if ( ( e & mask ) != E() ) // OK ; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md index bc3791579d..b21359d5f0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3065.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3065.md @@ -13,7 +13,7 @@ The [property](../../cpp/property-cpp.md) __declspec modifier was used outside a The following sample generates C3065: -``` +```cpp // C3065.cpp // compile with: /c __declspec(property(get=get_i)) int i; // C3065 @@ -22,4 +22,4 @@ class x { public: __declspec(property(get=get_i)) int i; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md index 41bcba4fca..5c5c77ecc1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3066.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3066.md @@ -13,7 +13,7 @@ The compiler detected an ambiguous function call involving surrogates. The following sample generates C3066: -``` +```cpp // C3066.cpp template void func(T*, U*){} @@ -68,4 +68,4 @@ void f() { Printer p; p({ 23 }); // C3066: there are multiple ways that an object of this type can be called with these arguments } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md index f211ff4ced..12823b235e 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3068.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3068.md @@ -27,7 +27,7 @@ When an exception is thrown, compiler generated code, called the prolog and epil The following sample generates C3068: -``` +```cpp // C3068.cpp // compile with: /EHsc // processor: x86 @@ -42,4 +42,4 @@ void b(A){} __declspec(naked) void c() { b(A()); // C3068 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md index e2cb2fac54..756a4c40f7 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3069.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3069.md @@ -15,7 +15,7 @@ An operator is not supported for CLR enumerations. For more information, see [H The following sample generates C3069: -``` +```cpp // C3069.cpp // compile with: /clr enum struct E { e1 }; @@ -30,4 +30,4 @@ int main() { F f = f1; tf = !f; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md index 33f6c01482..268b99dd13 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3070.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3070.md @@ -13,7 +13,7 @@ A property's set accessor method was not defined. For more information, see [pro The following sample generates C3070: -``` +```cpp // C3070.cpp // compile with: /clr ref class R { @@ -54,4 +54,4 @@ int main() { r->MyProp2[4] = value; // OK r->MyProp3[4] = 4; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md index 1e5b21be75..f7e4e418b1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3071.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3071.md @@ -17,7 +17,7 @@ For more information, see [Tracking Reference Operator](../../extensions/trackin The following sample generates C3071. -``` +```cpp // C3071.cpp // compile with: /clr class N {}; @@ -30,4 +30,4 @@ int main() { R r; R ^ r2 = %r; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md index 65e8cb796e..a1913eedb1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3072.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3072.md @@ -17,7 +17,7 @@ A CLR type requires CLR operators, not native (or standard) operators. For more The following sample generates C3072. -``` +```cpp // C3072.cpp // compile with: /clr ref class R {}; @@ -27,4 +27,4 @@ int main() { R^ r2 = &r1; // C3072 R^ r3 = %r1; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md index 5d5755d638..3d77ead5f1 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3073.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3073.md @@ -17,7 +17,7 @@ For more information, see [C++ Stack Semantics for Reference Types](../../dotnet The following sample generates C3073. -``` +```cpp // C3073.cpp // compile with: /clr ref class R { @@ -43,4 +43,4 @@ int main() { S s(1); f2(s); // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md index 1684c8e32c..fbe85e3349 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3075.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3075.md @@ -17,7 +17,7 @@ For more information, see [C++ Stack Semantics for Reference Types](../../dotnet The following sample generates C3075. -``` +```cpp // C3075.cpp // compile with: /clr /c ref struct U {}; @@ -28,4 +28,4 @@ value struct X { ref struct Y { U y; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md index d8ceaa5ccd..5d85a00adb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3076.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3076.md @@ -17,7 +17,7 @@ For more information, see [C++ Stack Semantics for Reference Types](../../dotnet The following sample generates C3076. -``` +```cpp // C3076.cpp // compile with: /clr /c ref struct U {}; @@ -29,4 +29,4 @@ struct V { ref struct W { U y; // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md index 1af2bbd25b..99d6cc97f5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3077.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3077.md @@ -17,7 +17,7 @@ For more information, see [Destructors and finalizers in How to: Define and cons The following sample generates C3077. -``` +```cpp // C3077.cpp // compile with: /clr /c value struct vs { @@ -28,4 +28,4 @@ ref struct rs { protected: !rs(){} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md index 2c9440f85e..78cfb12771 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3080.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3080.md @@ -15,7 +15,7 @@ For more information, see [Destructors and finalizers in How to: Define and cons The following sample generates C3080. -``` +```cpp // C3080.cpp // compile with: /clr /c ref struct rs { @@ -23,4 +23,4 @@ protected: static !rs(){} // C3080 !rs(){} // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md index f13b863258..9401363f28 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3083.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3083.md @@ -15,7 +15,7 @@ A function was called incorrectly. The following sample generates C3083. -``` +```cpp // C3083.cpp // compile with: /c struct N { @@ -28,4 +28,4 @@ struct N1 { N::N::~N() {} // C3083 N1::~N1() {} // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md index 2099fdc027..1c0fcd4972 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3084.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3084.md @@ -17,7 +17,7 @@ For example, a destructor should not be marked as sealed. The destructor will b The following sample generates C3084. -``` +```cpp // C3084.cpp // compile with: /clr /c ref struct R { @@ -26,4 +26,4 @@ protected: !R() abstract; // C3084 !R(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md index f226a3e6b6..9fc93ad7a0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3085.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3085.md @@ -15,7 +15,7 @@ A constructor was declared incorrectly. See [Override Specifiers](../../extensio The following sample generates C3085. -``` +```cpp // C3085.cpp // compile with: /c /clr ref struct S { @@ -27,4 +27,4 @@ ref struct T { T() sealed {} // C3085 T(T%) sealed {} // C3085 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md index 380f6c129a..6d6962ab33 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3087.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3087.md @@ -15,10 +15,10 @@ A named argument was specified in the same attribute block as an unnamed argumen The following sample generates C3087. -``` +```cpp // C3087.cpp // compile with: /c [idl_quote("quote1", text="quote2")]; // C3087 [idl_quote(text="quote3")]; // OK [idl_quote("quote4")]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md index 8817d5d44e..ed03f6324f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3094.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3094.md @@ -15,7 +15,7 @@ An attribute was not scoped correctly. For more information, see [User-Defined The following sample generates C3094. -``` +```cpp // C3094.cpp // compile with: /clr /c using namespace System; @@ -27,4 +27,4 @@ public ref class AAttribute : Attribute {}; // OK [A] ref class x{}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md index 34bb38fec1..ef600e523f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3095.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3095.md @@ -17,7 +17,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define The following sample generates C3095. -``` +```cpp // C3095.cpp // compile with: /clr /c using namespace System; @@ -43,4 +43,4 @@ ref class A {}; [Attr2(10)] // OK [Attr2(11)] ref class B {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md index 07b70150c0..f2a1799011 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3097.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3097.md @@ -17,7 +17,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define The following sample generates C3097. -``` +```cpp // C3097.cpp // compile with: /clr /c using namespace System; @@ -34,4 +34,4 @@ public: [Attr(10)] // OK public ref class MyClass {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md index fc8f740306..55303da8be 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3099.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3099.md @@ -17,7 +17,7 @@ For more information about /CLR attributes, see [User-Defined Attributes](../../ The following sample generates C3099 and shows how to fix it. -``` +```cpp // C3099.cpp // compile with: /clr /c using namespace System; @@ -25,4 +25,4 @@ using namespace System; // try the following line instead // [AttributeUsageAttribute(AttributeTargets::All)] ref class A : Attribute {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md index 3761da73ec..486156d6fb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3100.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3100.md @@ -17,7 +17,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define The following sample generates C3100. -``` +```cpp // C3100.cpp // compile with: /clr /c using namespace System; @@ -30,4 +30,4 @@ public: [invalid_target:Attr(10)]; // C3100 [assembly:Attr(10)]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md index 8236258b13..efb5563a73 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3101.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3101.md @@ -17,7 +17,7 @@ For more information on attributes, see [User-Defined Attributes](../../extensio The following sample generates C3101. -``` +```cpp // C3101.cpp // compile with: /clr /c ref class AAttribute : System::Attribute { @@ -29,4 +29,4 @@ extern int i; [assembly:A(Field = i)]; // C3101 [assembly:A(Field = 0)]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md index 4c53285726..e1fcd9de99 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3103.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3103.md @@ -17,7 +17,7 @@ For more information, see [User-Defined Attributes](../../extensions/user-define The following sample generates C3103. -``` +```cpp // C3103.cpp // compile with: /clr /c using namespace System; @@ -32,4 +32,4 @@ public: // try the following line instead // [Attr(m_t = 10)] ref class A {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md index f5ed879743..f52684bf33 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3104.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3104.md @@ -19,7 +19,7 @@ This error can be generated as a result of compiler conformance work that was do The following sample generates C3104. -``` +```cpp // C3104a.cpp // compile with: /clr /c using namespace System; @@ -40,7 +40,7 @@ ref struct AStruct{}; The following sample generates C3104. -``` +```cpp // C3104b.cpp // compile with: /clr /c // C3104 expected diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md index 618a58764a..43ac2369ac 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3106.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3106.md @@ -17,9 +17,9 @@ For more information, see [User-Defined Attributes](../../extensions/user-define The following sample generates C3106. -``` +```cpp // C3106.cpp // compile with: /c [module(name="MyLib", dll)]; // C3106 [module(dll, name="MyLib")]; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md index 24b1731918..069cd5d23a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3110.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3110.md @@ -21,7 +21,7 @@ An interface that is prefaced by an interface attribute, such as: cannot be overloaded. For example: -``` +```cpp // C3110.cpp #include [ object, uuid= "4F98A180-EF37-11D1-978D-0000F805D73B" ] @@ -34,4 +34,4 @@ __interface ITestInterface int main() { } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md index cd8412dd5d..655aa98023 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3113.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3113.md @@ -13,11 +13,11 @@ You attempted to make a class template or class generic out of an interface or a The following sample generates C3113: -``` +```cpp // C3113.cpp // compile with: /c template enum E {}; // C3113 // try the following line instead // class MyClass{}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md index 3c24094fff..dca8436342 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3114.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3114.md @@ -17,7 +17,7 @@ For more information, see [property](../../extensions/property-cpp-component-ext The following sample generates C3114. -``` +```cpp // C3114.cpp // compile with: /clr /c public ref class A : System::Attribute { @@ -37,4 +37,4 @@ public ref class R {}; [A(Prop2=123)] // OK public ref class S {}; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md index 1122086a9d..4a1d546fdc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3115.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3115.md @@ -15,7 +15,7 @@ An attribute was applied to a construct for which it was not intended. See [Att The following sample generates C3115. -``` +```cpp // C3115.cpp // compile with: /c #include @@ -27,4 +27,4 @@ The following sample generates C3115. __interface IMyI { HRESULT xx(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md index c30242d393..bd14050b64 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3116.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3116.md @@ -13,10 +13,10 @@ You used `typedef`, `register`, or `static` as the storage class for an interfac The following sample generates C3116: -``` +```cpp // C3116.cpp __interface ImyInterface { static void myFunc(); // C3116 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md index 438228ddfa..8ca5cd4d82 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3117.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3117.md @@ -13,7 +13,7 @@ You declared an interface that inherits from multiple base classes. The following sample generates C3117: -``` +```cpp // C3117.cpp #include @@ -31,4 +31,4 @@ __interface I2 __interface I3 : I1, I2 { // C3117 }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md index 480e8b55bf..84f442b0a9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3118.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3118.md @@ -11,7 +11,7 @@ ms.assetid: 40fbe681-8868-4cb2-a2b2-4db4449319a7 You tried to virtually inherit from an interface. For example, -``` +```cpp // C3118.cpp __interface I1 { }; @@ -20,4 +20,4 @@ __interface I2 : virtual I1 { // C3118 }; ``` -generates this error. \ No newline at end of file +generates this error. diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md index de47e376a0..d954158dc4 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3120.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3120.md @@ -11,11 +11,11 @@ ms.assetid: 9b6b210f-9948-4517-a4cc-b4aaadebde68 An interface method cannot take a variable argument list. For example, the following interface definition generates C3120: -``` +```cpp // C3120.cpp __interface A { int X(int i, ...); // C3120 }; int main(void) { return(0); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md index 960ebe5161..7320b79fc9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3121.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3121.md @@ -13,7 +13,7 @@ You attempted to change the class ID with [__declspec(uuid)](../../cpp/uuid-cpp. For example, the following code generates C3121: -``` +```cpp // C3121.cpp [emitidl]; [module(name="MyLibrary")]; @@ -25,4 +25,4 @@ class __declspec(uuid("00000000-0000-0000-0000-111111111112")) A // C3121 int main() { } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md index 9fdd66b610..f656b78ddc 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3126.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3126.md @@ -13,7 +13,7 @@ A union cannot be defined inside a managed type. The following sample generates C3126: -``` +```cpp // C3126_2.cpp // compile with: /clr /c ref class Test diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md index c982c4dfbc..12be59f4e3 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3131.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3131.md @@ -13,7 +13,7 @@ The [module](../../windows/module-cpp.md) attribute must have a name parameter. The following sample generates C3131: -``` +```cpp // C3131.cpp [emitidl]; [module]; // C3131 @@ -22,4 +22,4 @@ The following sample generates C3131: [public] typedef long int LongInt; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md index de22aa6671..7567cf7440 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3132.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3132.md @@ -13,7 +13,7 @@ The attribute was applied to a parameter that The following sample generates C3132: -``` +```cpp // C3132.cpp // compile with: /clr /c using namespace System; @@ -21,4 +21,4 @@ void f( [ParamArray] Int32[,] ); // C3132 void g( [ParamArray] Int32[] ); // C3132 void h( [ParamArray] array ^ MyArray ); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md index 4f62868d2d..eca8352fbf 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3133.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3133.md @@ -17,10 +17,10 @@ For more information, see [User-Defined Attributes](../../extensions/user-define The following sample generates C3133. -``` +```cpp // C3133.cpp // compile with: /clr /c ref struct MyAttr: System::Attribute {}; void Func([MyAttr]...); // C3133 void Func2([MyAttr] int i); // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md index e2a2f1b1d9..4d6b2b8be6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3136.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3136.md @@ -13,7 +13,7 @@ An interface to which you applied an [interface attribute](../../windows/attribu The following example generates C3136: -``` +```cpp // C3136.cpp #include "unknwn.h" @@ -29,4 +29,4 @@ __interface B : A { int aa(); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md index 3bbe6a1c2f..e222f19b1a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3137.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3137.md @@ -13,7 +13,7 @@ A property cannot be initialized, for example, in a constructor's initialization The following example generates C3137: -``` +```cpp // C3137.cpp // compile with: /clr /c ref class CMyClass { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md index 38232029d0..f7cdd0bed0 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3138.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3138.md @@ -13,7 +13,7 @@ An interface with the [dual](../../windows/dual.md) or [dispinterface](../../win The following example generates C3138: -``` +```cpp // C3138.cpp #include @@ -34,4 +34,4 @@ __interface IMyDualInterface : IMyCustomInterface // C3138 expected { HRESULT mf3(void); }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md index 1bb3250d15..48e2413f4b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3139.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3139.md @@ -11,7 +11,7 @@ ms.assetid: 95c92263-10ac-4ff3-b385-6312dd92adbc You attempted to apply the [export](../../windows/export.md) attribute to an empty UDT (user-defined type). For example: -``` +```cpp // C3139.cpp #include "unknwn.h" [emitidl]; @@ -20,4 +20,4 @@ You attempted to apply the [export](../../windows/export.md) attribute to an emp [export] struct MyStruct { // C3139 empty type }; int main(){} -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md index 7ed251ea0f..267c091a19 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3140.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3140.md @@ -13,10 +13,10 @@ The [module](../../windows/module-cpp.md) attribute can only be defined once per The following sample generates C3140: -``` +```cpp // C3140.cpp // compile with: /c [emitidl]; [module(name = "MyLibrary")]; [module(name = "MyLibrary2")]; // C3140 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md index d5992593f8..2e9bbaa7d2 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3141.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3141.md @@ -13,9 +13,9 @@ Interfaces defined with the [interface (or __interface)](../../cpp/interface.md) The following sample generates C3141: -``` +```cpp // C3141.cpp __interface IBase {}; __interface IDerived1 : protected IBase {}; // C3141 __interface IDerived2 : private IBase {}; // C3141 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md index d8af297a6d..18c9e79f00 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3142.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3142.md @@ -13,7 +13,7 @@ The address of a property is not available to the developer. The following sample generates C3142: -``` +```cpp // C3142_2.cpp // compile with: /clr using namespace System; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md index f0dd4f6f7e..3e02026081 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3145.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3145.md @@ -13,7 +13,7 @@ You can only define CLR or WinRT objects within function scope. The following sample generates C3145 and shows how to fix it: -``` +```cpp // C3145.cpp // compile with: /clr using namespace System; @@ -36,7 +36,7 @@ int main() { The following sample generates C3145: -``` +```cpp // C3145b.cpp // compile with: /clr ref class MyClass { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md index f01b1e7654..c19242929c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3149.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3149.md @@ -17,7 +17,7 @@ To resolve this error, declare variables of CLR types inside a function or type The following sample generates C3149: -``` +```cpp // C3149.cpp // compile with: /clr using namespace System; @@ -30,7 +30,7 @@ int main() { The following sample generates C3149: -``` +```cpp // C3149b.cpp // compile with: /clr /c delegate int MyDelegate(const int, int); diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md index 17ab2929c7..3aa963470c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3152.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3152.md @@ -13,7 +13,7 @@ Certain keywords can only be applied to a C++ class. The following sample generates C3152 and shows how to fix it: -``` +```cpp // C3152.cpp // compile with: /clr /c ref class C { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md index 21a5406774..907ec02726 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3153.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3153.md @@ -13,7 +13,7 @@ An interface cannot be instantiated. To use the members of an interface, derive The following sample generates C3153: -``` +```cpp // C3153.cpp // compile with: /clr interface class A { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md index 6104eddc27..b012b6026b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3154.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3154.md @@ -17,7 +17,7 @@ For more information, see [Variable Argument Lists (...) (C++/CLI)](../../extens The following sample generates C3154. -``` +```cpp // C3154.cpp // compile with: /clr ref struct R { @@ -31,4 +31,4 @@ int main() { R ^ r = gcnew R; r->Func4(1,2,3); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md index 02054e71b2..12ab4e8632 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3155.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3155.md @@ -15,7 +15,7 @@ An indexed property was declared incorrectly. For more information, see [How to: The following sample generates C3155. -``` +```cpp // C3155.cpp // compile with: /clr /c using namespace System; @@ -28,4 +28,4 @@ ref struct R { } } }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md index a527e5a93a..87a28247d9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3156.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3156.md @@ -15,7 +15,7 @@ A function cannot contain the definition, or declaration, of a managed or WinRT The following sample generates C3156. -``` +```cpp // C3156.cpp // compile with: /clr /c void f() { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md index 6bc16d2b81..fe9862c5e8 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3160.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3160.md @@ -13,7 +13,7 @@ Interior garbage collection pointers may point to the interior of a managed or W The following sample generates C3160: -``` +```cpp // C3160.cpp // compile with: /clr ref struct A { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md index 93457f5437..4efa790f9f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3161.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3161.md @@ -15,10 +15,10 @@ An [__interface](../../cpp/interface.md) can only appear at global scope or with The following sample generates C3161. -``` +```cpp // C3161.cpp // compile with: /c __interface X { __interface Y {}; // C3161 A nested interface }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md index db1e9e01b2..deeb2e8e7b 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3162.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3162.md @@ -23,7 +23,7 @@ For more information, see, The following sample generates C3162. -``` +```cpp // C3162.cpp // compile with: /clr /c ref struct A { @@ -36,4 +36,4 @@ int main() { A ^ a = gcnew A; delete a; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md index 83ea9ce9e2..f819fdb211 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3163.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3163.md @@ -19,7 +19,7 @@ A possible cause of the C3163 error involves the Microsoft source code annotatio The following sample generates C3163. -``` +```cpp // C3163.cpp // compile with: /clr /c using namespace System; @@ -32,4 +32,4 @@ using namespace System; ## See also -[SAL Annotations](../../c-runtime-library/sal-annotations.md) \ No newline at end of file +[SAL Annotations](../../c-runtime-library/sal-annotations.md) diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md index d7d032e1c9..29732e3907 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3168.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3168.md @@ -13,7 +13,7 @@ The underlying type you specified for the `enum` type was not valid. The underly The following sample generates C3168: -``` +```cpp // C3168.cpp // compile with: /clr /c ref class G{}; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md index 3f7b4406a5..e2ff2c9a81 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3170.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3170.md @@ -15,7 +15,7 @@ Identical `module` attributes can be specified in more than one source code file For example, if the following module attributes were found: -``` +```cpp // C3170.cpp [ module(name="MyModule", uuid="373a1a4e-469b-11d3-a6b0-00c04f79ae8f") ]; int main() {} @@ -23,11 +23,11 @@ int main() {} And then, -``` +```cpp // C3170b.cpp // compile with: C3170.cpp // C3170 expected [ module(name="MyModule1", uuid="373a1a4e-469b-11d3-a6b0-00c04f79ae8f") ]; ``` -the compiler would generate C3170 (note the different names). \ No newline at end of file +the compiler would generate C3170 (note the different names). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md index b6a56a1ef0..b893b0106d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3171.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3171.md @@ -15,7 +15,7 @@ Identical `module` attributes can be specified in more than one source code file For example, if the following `module` attributes were found: -``` +```cpp // C3171.cpp [ module(name="MyModule", uuid="373a1a4e-469b-11d3-a6b0-00c04f79ae8f", version="1.0") ]; int main() {} @@ -23,11 +23,11 @@ int main() {} And then, -``` +```cpp // C3171b.cpp // compile with: C3171.cpp // C3171 expected [ module(name="MyModule", uuid="373a1a4e-469b-11d3-a6b0-00c04f79ae8f", version="1.1") ]; ``` -the compiler would generate C3171 (note the different version values). \ No newline at end of file +the compiler would generate C3171 (note the different version values). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md index 64eb1966d3..b61713cd03 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3172.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3172.md @@ -15,7 +15,7 @@ Identical `idl_module` attributes can be specified in more than one source code For example, if the following `idl_module` attributes were found: -``` +```cpp // C3172.cpp [module(name="MyMod")]; [ idl_module(name="x", dllname="file.dll", version="1.1") ]; @@ -24,11 +24,11 @@ int main() {} And then, -``` +```cpp // C3172b.cpp // compile with: C3172.cpp // C3172 expected [ idl_module(name="x", dllname="file.dll", version="1.0") ]; ``` -the compiler would generate C3172 (note the different version values). \ No newline at end of file +the compiler would generate C3172 (note the different version values). diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md index 4a7396cb4c..fa9f1751b9 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3174.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3174.md @@ -13,7 +13,7 @@ A program that uses Visual C++ attributes did not also use the [module](../../wi The following sample generates C3174: -``` +```cpp // C3174.cpp // C3174 expected // uncomment the following line to resolve this C3174 @@ -27,4 +27,4 @@ struct S int main() { } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md index 9ae962d9f8..2b4858400d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3175.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3175.md @@ -13,7 +13,7 @@ Unmanaged functions cannot call member functions of managed classes. The following sample generates C3175: -``` +```cpp // C3175_2.cpp // compile with: /clr diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md index 680fdd058b..379834545c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3176.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3176.md @@ -15,10 +15,10 @@ A class can only be declared as a value type at global scope. The following sample generates C3176. -``` +```cpp // C3176.cpp // compile with: /clr int main () { enum class C {}; // C3176 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md index abe7d4ea79..a73f755452 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3179.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3179.md @@ -13,7 +13,7 @@ All CLR and WinRT classes and structs must have names. The following sample generates C3179 and shows how to fix it: -``` +```cpp // C3179a.cpp // compile with: /clr /c typedef value struct { // C3179 diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md index 375662bb61..cb046f7a20 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3181.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3181.md @@ -15,7 +15,7 @@ Note that the compiler uses aliases for native types that map to types in the co The following sample generates C3181: -``` +```cpp // C3181a.cpp // compile with: /clr using namespace System; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md index aac6ec7074..8c46df862c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3182.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3182.md @@ -13,7 +13,7 @@ A [using](../../cpp/using-declaration.md) declaration is invalid within all form The following sample generates C3182 and shows how to fix it. -``` +```cpp // C3182a.cpp // compile with: /clr /c ref struct B { diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md index 5d1e9021b7..0cc5cdbc83 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3183.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3183.md @@ -13,7 +13,7 @@ A type that is embedded in a managed or WinRT type must be named. The following sample generates C3183: -``` +```cpp // C3183a.cpp // compile with: /clr /c ref class Test diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md index 961d5f335c..2c7e87e879 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3185.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3185.md @@ -13,7 +13,7 @@ You cannot apply the [typeid](../../cpp/typeid-operator.md) operator to a manage The following sample generates C3185 and shows how to fix it: -``` +```cpp // C3185a.cpp // compile with: /clr ref class Base {}; diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md index 55ec994364..e92806c1ec 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3189.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3189.md @@ -13,11 +13,11 @@ An obsolete form of [typeid](../../extensions/typeid-cpp-component-extensions.md The following sample generates C3189: -``` +```cpp // C3189.cpp // compile with: /clr int main() { System::Type^ t = typeid; // C3189 System::Type^ t2 = System::Object::typeid; // OK } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md index 500842814d..26a13fe7e6 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3190.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3190.md @@ -13,7 +13,7 @@ The compiler detected an attempt to make an explicit function instantiation; how The following sample generates C3190: -``` +```cpp // C3190.cpp // compile with: /LD template @@ -47,4 +47,4 @@ template void X::f2(int,char); // C3190 // template void X::f2(int, char); // template void X::f2(int,char); // template void X::f2<>(int,char); -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md index 9579a5f3dc..a25709fc8a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3192.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3192.md @@ -13,7 +13,7 @@ A handle cannot be used as a dereference operator. The following sample generates C3192: -``` +```cpp // C3192.cpp // compile with: /clr using namespace System; @@ -31,4 +31,4 @@ int main() { // OK MyClass b2 = *s; } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md index 193faa4a93..57cd524015 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3194.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3194.md @@ -15,7 +15,7 @@ Special member functions that require automatic invocation by the compiler, such The following sample generates C3194. -``` +```cpp // C3194.cpp // compile with: /clr /c value struct MyStruct { @@ -25,4 +25,4 @@ value struct MyStruct { ref struct MyStruct2 { MyStruct2% operator= (const MyStruct2% i) { return *this; } // OK }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md index b98625a5bd..6c7a85f35a 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3195.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3195.md @@ -13,7 +13,7 @@ The compiler detected an operator definition using the Managed Extensions for C+ The following sample generates C3195 and shows how to fix it: -``` +```cpp // C3195.cpp // compile with: /clr /LD #using @@ -21,4 +21,4 @@ value struct V { static V op_Addition(V v, int i); // C3195 static V operator +(V v, char c); // OK for new C++ syntax }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md index 145ef7e33e..462dff8348 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3196.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3196.md @@ -13,9 +13,9 @@ A keyword was used more than once. The following sample generates C3196: -``` +```cpp // C3196.cpp // compile with: /clr ref struct R abstract abstract {}; // C3196 ref struct S abstract {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md index 92a68a0312..c75f20941f 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3197.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3197.md @@ -13,7 +13,7 @@ A keyword was used in a declaration but is only valid in a definition. The following sample generates C3197: -``` +```cpp // C3197.cpp // compile with: /clr /c ref struct R abstract; // C3197 @@ -22,4 +22,4 @@ ref struct R abstract {}; // OK public ref class MyObject; // C3197 ref class MyObject; // OK public ref class MyObject {}; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md index 6e2ee9fd0f..57fbe63ee5 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3198.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3198.md @@ -13,8 +13,8 @@ invalid use of floating-point pragmas: fenv_access pragma operates only in preci The following sample generates C3198: -``` +```cpp // C3198.cpp // compile with: /fp:fast #pragma fenv_access(on) // C3198 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md index 0ef69bf77f..8db1f4764c 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3199.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3199.md @@ -13,8 +13,8 @@ The [float_control](../../preprocessor/float-control.md) pragma was used to spec The following sample generates C3199: -``` +```cpp // C3199.cpp // compile with: /fp:fast #pragma float_control(except, on) // C3199 -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md index 770b37b6f1..16589b2ddb 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3200.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3200.md @@ -11,7 +11,7 @@ ms.assetid: 44bb5e77-f0ec-421c-a732-b9ee7c0a3529 You passed an invalid argument to a class template. The class template expects template as a parameter. In the following example, calling `Y aY` will generate C3200. The first parameter needs to be a template, such as `Y aY`. -``` +```cpp // C3200.cpp template class X @@ -27,4 +27,4 @@ int main() { Y y; // C3200 } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md index 4482aa8656..b7272d1d35 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3201.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3201.md @@ -11,7 +11,7 @@ the template parameter list for class template 'template' does not match the tem You passed a class template in the argument to a class template that does not take a template parameter, or you passed a mismatched number of template arguments for the default template argument. -``` +```cpp // C3201.cpp template class X1 @@ -27,4 +27,4 @@ template class U = X1> // OK class X3 { }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md index 71c44e3e32..ef13da4021 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3202.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3202.md @@ -13,7 +13,7 @@ You passed an invalid default argument for a template parameter. The following sample generates C3202: -``` +```cpp // C3202.cpp template class X @@ -28,4 +28,4 @@ template class T1 = Z, typename T2> // C3202 class Y { }; -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md index bcec04533c..d2c7b4e699 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3203.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3203.md @@ -13,7 +13,7 @@ You passed an invalid argument to a class template or generic. The class templat This error can be generated as a result of compiler conformance work that was done for Visual Studio 2005: an unspecialized class template can't be used as a template argument in a base class list. To resolve C3203, explicitly add the template type parameter(s) to the template class name when using it as a template parameter in a base class list. -``` +```cpp // C3203.cpp template< typename T > struct X { @@ -34,7 +34,7 @@ int main() { The following sample generates C3203 and shows how to fix it: -``` +```cpp // C3203_b.cpp // compile with: /c template @@ -59,7 +59,7 @@ typedef C3 > MyC12; C3203 can also occur when using generics: -``` +```cpp // C3203_c.cpp // compile with: /clr /c generic @@ -70,4 +70,4 @@ value struct GC1 {}; typedef GC1 MyGC1; // C3203 typedef GC1 > MyGC2; // OK -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md index 7381bff656..9c6afa431d 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3204.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3204.md @@ -15,7 +15,7 @@ This error occurs when you use a call to [_alloca](../../c-runtime-library/refer The following sample generates C3204: -``` +```cpp // C3204.cpp // compile with: /EHsc #include @@ -30,4 +30,4 @@ void ShowError(void) _alloca(1); // C3204 } } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md index c53f4cdd6a..a4778e1b43 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3206.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3206.md @@ -13,7 +13,7 @@ A template function is defined as taking a template type argument. However, a te The following sample generates C3206: -``` +```cpp // C3206.cpp template void f() {} @@ -30,7 +30,7 @@ void f1() { Possible resolution: -``` +```cpp // C3206b.cpp // compile with: /c template @@ -46,7 +46,7 @@ void f1() { C3206 can also occur when using generics: -``` +```cpp // C3206c.cpp // compile with: /clr generic @@ -62,7 +62,7 @@ int main() { Possible resolution: -``` +```cpp // C3206d.cpp // compile with: /clr generic @@ -78,7 +78,7 @@ int main() { A class template is not allowed as a template type argument. The following sample raises C3206: -``` +```cpp // C3206e.cpp template struct S {}; @@ -95,7 +95,7 @@ int main() { Possible resolution: -``` +```cpp // C3206f.cpp template struct S {}; @@ -112,7 +112,7 @@ int main() { If a template template parameter is necessary, then you have to wrap the function in a template class that takes a template template parameter: -``` +```cpp // C3206g.cpp template struct S {}; @@ -128,4 +128,4 @@ struct X { int main() { X::func(); } -``` \ No newline at end of file +``` diff --git a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md index 20fb3e45c8..98019039ad 100644 --- a/docs/error-messages/compiler-errors-2/compiler-error-c3207.md +++ b/docs/error-messages/compiler-errors-2/compiler-error-c3207.md @@ -13,7 +13,7 @@ A template function is defined as taking a template template argument. However, The following sample generates C3207: -``` +```cpp // C3207.cpp template