Uređivanje

C/C++ property pages

The following property pages are found under Project > Properties > Configuration Properties > C/C++:

C/C++ General properties

Additional Include Directories

Specifies one or more directories to add to the include path. Separate directories with semicolons (;) if there's more than one. Sets the /I (Additional include directories) compiler option.

Additional #using Directories

Specifies one or more directories to search to resolve names passed to a #using directive. Separate directories with semicolons (;) if you add more than one. Sets the /AI compiler option.

Additional BMI Directories

Specifies one or more directories to search to resolve names passed to an import directive. Separate directories with semicolons (;) if you add more than one. Sets the /ifcSearchDir[path] compiler option.

Additional Module Dependencies

Specifies one or more modules to use to resolve names passed to an import directive. Separate directories with semicolons (;) if you add more than one. Sets the /reference compiler option.

Additional Header Unit Dependencies

Specifies one or more header units to use to resolve names passed to an import header directive. Separate directories with semicolons (;) if you add more than one. Sets the /headerUnit compiler option.

Scan Sources for Module Dependencies

When this property is set to Yes, the compiler scans all C++ sources, not just module interface and header unit sources, for module and header units dependencies. The build system builds the full dependencies graph, which ensures that all imported modules and header units are built before compiling the files that depend on them. When Scan Sources for Module Dependencies and Translate Includes to Imports are both set to Yes, any header file that's specified in a header-units.json file in the same directory as the header file is compiled into a header unit.

Files that have the extension .ixx, and files that have their File properties > C/C++ > Advanced > Compile As property set to Compile as C++ Header Unit (/exportHeader), are always scanned.

Files that have the extension .ixx, and files that have their File properties > C/C++ > Compile As property set to Compile as C++ Header Unit (/exportHeader), are always scanned.

Translate Includes to Imports

When this property is set to Yes, the compiler treats a #include directive as an import directive if certain conditions are met: The header file is specified in a header-units.json file in the same directory, and a compiled header unit (an .ifc file) is available for the header file. Otherwise, the header file is treated as a normal #include. The header-units.json file is used to build header units for each #include without symbol duplication. When Translate Includes to Imports and Scan Sources for Module Dependencies are both set to Yes, the compiler automatically finds all of the header files that can be compiled into header units. This property sets the /translateInclude compiler option.

Debug Information Format

Specifies the type of debugging information generated by the compiler. This property requires compatible linker settings. Sets /Z7, /Zi, /ZI (Debug information format) compiler options.

Choices

  • None (None) - Produces no debugging information, so compilation might be faster.
  • C7 compatible (OldStyle) - Produces object files that contain full symbolic debugging information. No PDB file is produced.
  • Program Database (ProgramDatabase) - Produces a program database (PDB) that contains type information and symbolic debugging information for use with the debugger. The symbolic debugging information includes the names and types of variables and functions, and line numbers.
  • Program Database for Edit And Continue (EditAndContinue) - Produces a program database, as described previously, in a format that supports the Edit and Continue feature.

Support Just My Code Debugging

Adds supporting code for enabling Just My Code debugging in this compilation unit. Sets /JMC.

Support C++ Dynamic Debugging

(Preview) Sets compiler flag /dynamicdeopt to turn on C++ Dynamic Debugging. Place deoptimized breakpoints and step in anywhere with on-demand function deoptimization. Use this mode for debugging optimized code.

Common Language RunTime Support

Use the .NET runtime service. This switch is incompatible with some other switches. See the documentation on the /clr family of switches for details.

Choices

  • No Common Language RunTime Support - No Common Language Runtime Support.
  • Common Language RunTime Support - Creates metadata for your application that can be consumed by other CLR applications. Also allows your application to consume types and data in the metadata of other CLR components.
  • Pure MSIL Common Language RunTime Support - Produces an MSIL-only output file with no native executable code, although it can contain native types compiled to MSIL.
  • Safe MSIL Common Language RunTime Support - Produces an MSIL-only (no native executable code) and verifiable output file.

Consume Windows Runtime Extension

Consume the Windows Runtime Language Extensions. Sets /ZW.

Suppress Startup Banner

Suppresses the display of the sign-on banner when the compiler starts up and display of informational messages during compiling.

Warning Level

Select how strict you want the compiler to be about code errors. Sets /W0 - /W4.

Choices

  • Turn Off All Warnings - Level 0 disables all warnings.
  • Level1 - Level 1 displays severe warnings. Level 1 is the default warning level at the command line.
  • Level2 - Level 2 displays all level 1 warnings and warnings less severe than level 1.
  • Level3 - Level 3 displays all level 2 warnings and all other warnings recommended for production purposes.
  • Level4 - Level 4 displays all level 3 warnings and informational warnings, which in most cases can be safely ignored.
  • EnableAllWarnings - Enables all warnings, including the ones disabled by default.

Treat Warnings As Errors

Treats compiler warnings as errors. For a new project, it might be best to use /WX in every compilation. Resolve all warnings to minimize hard-to-find code defects.

Warning Version

Hide warnings introduced after a specific version of the compiler. Sets /Wv:xx[.yy[.zzzzz]].

Diagnostics Format

Enables rich diagnostics, with column information and source context in diagnostic messages.

Choices

  • Caret - Provides column information in the diagnostic message. Also outputs the relevant line of source code with a caret that indicates the offending column.
  • Column Info - Additionally provides the column number within the line where the diagnostic is issued, where applicable.
  • Classic - Outputs only the prior, concise diagnostic messages with the line number.

SDL checks

Additional Security Development Lifecycle (SDL)-recommended checks. Includes enabling additional secure code generation features and enables extra security-relevant warnings as errors. Sets /sdl, /sdl-.

Multi-processor Compilation

Enable multi-processor compilation. Sets the /MP compiler option.

Enable Address Sanitizer

Compiles and links the program with AddressSanitizer instrumentation. This property currently supports x86 and x64 target builds. Sets the /fsanitize compiler option.

Enable Fuzzer Support (Experimental)

Compiles programs with the Fuzzer. Enable AddressSanitizer for best results. Currently available for x86 and x64 builds. Sets /fsanitize=fuzzer.

C/C++ Optimization properties

Optimization

Select an option for code optimization. Select Custom to use specific optimization options. Sets /Od, /O1, /O2.

Choices

  • Custom - Custom optimization.
  • Disabled - Disable optimization.
  • Maximum Optimization (Favor Size) - Equivalent to /Os /Oy /Ob2 /Gs /GF /Gy.
  • Maximum Optimization (Favor Speed) - Equivalent to /Oi /Ot /Oy /Ob2 /Gs /GF /Gy.
  • Optimizations (Favor Speed) - Equivalent to /Oi /Ot /Oy /Ob2.

Inline Function Expansion

Select the level of inline function expansion for the build. Sets /Ob.

Choices

  • Default
  • Disabled - Disables inline expansion, which is on by default.
  • Only __inline - Expands only functions marked as inline, __forceinline, or __inline. Or, in a C++ member function, defined within a class declaration.
  • Any Suitable - Expands functions marked as inline or __inline and any other function that the compiler chooses. (Expansion occurs at the compiler's discretion. This compiler-selected expansion is often referred to as autoinlining.)

Enable Intrinsic Functions

Enables intrinsic functions. Using intrinsic functions generates faster but possibly larger code. Sets /Oi.

Favor Size Or Speed

Whether to favor code size or code speed. Global Optimization must be turned on. Sets /Ot, /Os.

Choices

  • Favor small code - Minimizes the size of EXEs and DLLs by instructing the compiler to favor size over speed.
  • Favor fast code - Maximizes the speed of EXEs and DLLs by instructing the compiler to favor speed over size. (This value is the default when optimizations are enabled.)
  • Neither - No size and speed optimization.

Omit Frame Pointers

Suppresses creation of frame pointers on the call stack.

Enable Fiber-Safe Optimizations

Enables fiber-safe optimizations for applications that use fibers to access thread-local storage. Sets /GT.

Whole Program Optimization

Enables cross-module optimizations by delaying code generation to link time. Requires the linker option Link Time Code Generation. Sets /GL.

C/C++ Preprocessor properties

Preprocessor Definitions

Defines preprocessing symbols for your source file.

Undefine Preprocessor Definitions

Specifies one or more preprocessor undefines. Sets /U.

Undefine All Preprocessor Definitions

Undefines all previously defined preprocessor values. Sets /u.

Ignore Standard Include Paths

Prevents the compiler from searching for include files in directories specified in the INCLUDE environment variables.

Preprocess to a File

Preprocesses C and C++ source files, and writes the preprocessed output to a file. This option suppresses compilation, and it doesn't produce an .obj file.

Preprocess Suppress Line Numbers

Preprocess without #line directives.

Keep Comments

Enable this option to preserve C and C++ source comments (// and /* ... */) in .i files and other preprocessor output. The preprocessor removes comments by default.

Requires setting at least one of the Preprocessing options. Sets /C.

Use Standard Conforming Preprocessor

Use a standard conforming preprocessor (/Zc:preprocessor). Currently implied by /std:c11 and later versions. To use the legacy preprocessor, set this property to No.

C/C++ Code Generation properties

Enable String Pooling

Enable this property to enable string pooling, which combines identical strings into one read-only copy in the compiled program. This can result in smaller programs. /O1, /O2, and /ZI automatically set the /GF option.

Enable Minimal Rebuild

Enables minimal rebuild, which determines whether to recompile C++ source files that include header (.h) files containing changed C++ class definitions.

Enable C++ Exceptions

Specifies the model of exception handling to be used by the compiler.

Choices

  • Yes with SEH Exceptions - The exception-handling model that catches asynchronous (structured) and synchronous (C++) exceptions. Sets /EHa.
  • Yes - The exception-handling model that catches C++ exceptions only and configures the compiler to assume that extern "C" functions never throw a C++ exception. Sets /EHsc.
  • Yes with Extern C functions - The exception-handling model that catches C++ exceptions only and configures the compiler to assume that extern "C" functions do throw an exception. Sets /EHs.
  • No - No exception handling.

Smaller Type Check

Enables checking for conversion to smaller types. Incompatible with any optimization type other than debug. Sets /RTCc.

Basic Runtime Checks

Enables basic runtime error checks. Incompatible with any optimization type other than debug. Sets /RTCs, /RTCu, /RTC1.

Choices

  • Stack Frames - Enables stack frame runtime error checking.
  • Uninitialized variables - Reports when a variable is used without having been initialized.
  • Both (/RTC1, equiv. to /RTCsu) - Equivalent of /RTCsu.
  • Default - Default runtime checks.

Runtime Library

Specifies a runtime library for linking. Sets /MT, /MTd, /MD, /MDd.

Choices

  • Multi-threaded - Causes your application to use the multithreaded, static version of the runtime library.
  • Multi-threaded Debug - Defines _DEBUG and _MT. This option also causes the compiler to place the library name LIBCMTD.lib into the .obj file so that the linker uses LIBCMTD.lib to resolve external symbols.
  • Multi-threaded DLL - Causes your application to use the DLL-specific, multithreaded version of the runtime library. Defines _MT and _DLL and causes the compiler to place the library name MSVCRT.lib into the .obj file.
  • Multi-threaded Debug DLL - Defines _DEBUG, _MT, and _DLL and causes your application to use the debug, DLL-specific, multithreaded version of the runtime library. It also causes the compiler to place the library name MSVCRTD.lib into the .obj file.

Struct Member Alignment

Specifies 1, 2, 4, 8, or 16-byte boundaries for struct member alignment. Sets /Zp.

Choices

  • 1 Byte - Packs structures on one-byte boundaries. Same as /Zp.
  • 2 Bytes - Packs structures on two-byte boundaries.
  • 4 Bytes - Packs structures on four-byte boundaries.
  • 8 Bytes - Packs structures on eight-byte boundaries (default).
  • 16 Bytes - Packs structures on sixteen-byte boundaries.
  • Default - Default alignment settings.

Specifies 1, 2, 4, or 8-byte boundaries for struct member alignment. Sets /Zp.

Choices

  • 1 Byte - Packs structures on one-byte boundaries. Same as /Zp.
  • 2 Bytes - Packs structures on two-byte boundaries.
  • 4 Bytes - Packs structures on four-byte boundaries.
  • 8 Bytes - Packs structures on eight-byte boundaries (default).
  • Default - Default alignment settings.

Security Check

Helps detect stack-buffer overruns, which attackers can exploit to compromise your application.

Choices

  • Disable Security Check - Sets /GS-.
  • Enable Security Check - Sets /GS.

Control Flow Guard

Helps detect attempts to dispatch to illegal blocks of code.

Choices

  • Yes - Enable Control Flow Guard. Sets /guard:cf.
  • No

Enable Function-Level Linking

Allows the compiler to package individual functions in the form of packaged functions (COMDATs). Required for edit and continue to work. Sets /Gy.

Enable Parallel Code Generation

Allows the compiler to generate parallel code for loops identified using #pragma loop(hint_parallel[(n)]) when optimization is enabled.

Enable Enhanced Instruction Set

Enable use of instructions found on processors that support enhanced instruction sets. For example, the SSE, SSE2, AVX, and AVX2 enhancements to IA-32, and the AVX and AVX2 enhancements to x64. /arch:SSE is available only for x86 builds. /arch:SSE2 is available for x86 and x64 builds and is the default for both architectures. Use of enhanced instructions can be disabled with /arch:IA32. For more information, see /arch (x86), /arch (x64), /arch (ARM64), and /arch (ARM).

Choices

  • Streaming SIMD Extensions (X86) - Enables Streaming SIMD Extensions. Sets /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Enables Streaming SIMD Extensions 2. Sets /arch:SSE2.
  • Advanced Vector Extensions (X86/X64) - Enables Advanced Vector Extensions. Sets /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) - Enables Advanced Vector Extensions 2. Sets /arch:AVX2.
  • Advanced Vector Extensions 512 (X86/X64) - Enables Advanced Vector Extensions 512. Sets /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Enables Advanced Vector Extensions 10 version 1. Sets /arch:AVX10.1.
  • Advanced Vector Extensions AVX10.2 (X86/X64) - Enables Advanced Vector Extensions 10 version 2. Sets /arch:AVX10.2.
  • Virtualization Extensions (ARM). Enables ARM virtualization extensions. Sets /arch:ARMv7VE.
  • ARM VFPv4 instructions (ARM). Enables ARM VFPv4 instructions. Sets /arch:VFPv4.
  • CPU extension requirements ARMv8.0-A (ARM64). Enables ARMv8.0-A requirements. Sets /arch:arm8.0.
  • CPU extension requirements ARMv8.1-A (ARM64). Enables ARMv8.1-A requirements. Sets /arch:arm8.1.
  • CPU extension requirements ARMv8.2-A (ARM64). Enables ARMv8.2-A requirements. Sets /arch:arm8.2.
  • CPU extension requirements ARMv8.3-A (ARM64). Enables ARMv8.3-A requirements. Sets /arch:arm8.3.
  • CPU extension requirements ARMv8.4-A (ARM64). Enables ARMv8.4-A requirements. Sets /arch:arm8.4.
  • CPU extension requirements ARMv8.5-A (ARM64). Enables ARMv8.5-A requirements. Sets /arch:arm8.5.
  • CPU extension requirements ARMv8.6-A (ARM64). Enables ARMv8.6-A requirements. Sets /arch:arm8.6.
  • CPU extension requirements ARMv8.7-A (ARM64). Enables ARMv8.7-A requirements. Sets /arch:arm8.7.
  • CPU extension requirements ARMv8.8-A (ARM64). Enables ARMv8.8-A requirements. Sets /arch:arm8.8.
  • No Enhanced Instructions - Disables enhanced instructions for x86 builds. Sets /arch:IA32.
  • Not Set - Doesn't explicitly set an /arch option.

Enable use of instructions found on processors that support enhanced instruction sets. For example, the SSE, SSE2, AVX, and AVX2 enhancements to IA-32, and the AVX and AVX2 enhancements to x64. Currently /arch:SSE and /arch:SSE2 are only available when building for the x86 architecture. If no option is specified, the compiler uses instructions found on processors that support SSE2. Use of enhanced instructions can be disabled with /arch:IA32. For more information, see /arch (x86), /arch (x64), /arch (ARM64), and /arch (ARM).

Choices

  • Streaming SIMD Extensions (X86) - Enables Streaming SIMD Extensions. Sets /arch:SSE.
  • Streaming SIMD Extensions 2 (X86) - Enables Streaming SIMD Extensions 2. Sets /arch:SSE2.
  • Advanced Vector Extensions (X86/X64) - Enables Advanced Vector Extensions. Sets /arch:AVX.
  • Advanced Vector Extensions 2 (X86/X64) - Enables Advanced Vector Extensions 2. Sets /arch:AVX2.
  • Advanced Vector Extensions 512 (X86/X64) - Enables Advanced Vector Extensions 512. Sets /arch:AVX512.
  • Advanced Vector Extensions AVX10.1 (X86/X64) - Enables Advanced Vector Extensions 10 version 1. Sets /arch:AVX10.1.
  • Virtualization Extensions (ARM). Enables ARM virtualization extensions. Sets /arch:ARMv7VE.
  • ARM VFPv4 instructions (ARM). Enables ARM VFPv4 instructions. Sets /arch:VFPv4.
  • CPU extension requirements ARMv8.0-A (ARM64). Enables ARMv8.0-A requirements. Sets /arch:arm8.0.
  • CPU extension requirements ARMv8.1-A (ARM64). Enables ARMv8.1-A requirements. Sets /arch:arm8.1.
  • CPU extension requirements ARMv8.2-A (ARM64). Enables ARMv8.2-A requirements. Sets /arch:arm8.2.
  • CPU extension requirements ARMv8.3-A (ARM64). Enables ARMv8.3-A requirements. Sets /arch:arm8.3.
  • CPU extension requirements ARMv8.4-A (ARM64). Enables ARMv8.4-A requirements. Sets /arch:arm8.4.
  • CPU extension requirements ARMv8.5-A (ARM64). Enables ARMv8.5-A requirements. Sets /arch:arm8.5.
  • CPU extension requirements ARMv8.6-A (ARM64). Enables ARMv8.6-A requirements. Sets /arch:arm8.6.
  • CPU extension requirements ARMv8.7-A (ARM64). Enables ARMv8.7-A requirements. Sets /arch:arm8.7.
  • CPU extension requirements ARMv8.8-A (ARM64). Enables ARMv8.8-A requirements. Sets /arch:arm8.8.
  • No Enhanced Instructions - Disables enhanced instructions for x86 builds. Sets /arch:IA32.
  • Not Set - Doesn't explicitly set an /arch option.

Choices

  • Streaming SIMD Extensions - Streaming SIMD Extensions. Sets /arch:SSE
  • Streaming SIMD Extensions 2 - Streaming SIMD Extensions 2. Sets /arch:SSE2
  • Advanced Vector Extensions - Advanced Vector Extensions. Sets /arch:AVX
  • Advanced Vector Extensions 2 - Advanced Vector Extensions 2. Sets /arch:AVX2
  • No Enhanced Instructions - No Enhanced Instructions. Sets /arch:IA32
  • Not Set - Not Set.

Enable Vector Length

Enable choosing vector length for /arch:AVX512 and /arch:AVX10.x flags. Allowed values are 256 and 512 bits (X86/X64).

Floating Point Model

Sets the floating point model. Sets /fp:precise, /fp:strict, /fp:fast.

Choices

  • Precise - Default. Improves the consistency of floating-point tests for equality and inequality.
  • Strict - The strictest floating-point model. /fp:strict causes fp_contract to be off and fenv_access to be on. /fp:except is implied and can be disabled by explicitly specifying /fp:except-. When used with /fp:except-, /fp:strict enforces strict floating-point semantics but without respect for exceptional events.
  • Fast - Creates the fastest code in most cases.

Enable Floating Point Exceptions

Reliable floating-point exception model. Exceptions will be raised immediately after they're triggered. Sets /fp:except.

Create Hotpatchable Image

When hotpatching is on, the compiler ensures that first instruction of each function is two bytes, as required for hot patching. Sets /hotpatch.

Spectre Mitigation

Spectre mitigations for CVE 2017-5753. Sets /Qspectre.

Choices

  • Enabled - Enable Spectre mitigation for CVE 2017-5753.
  • All Loads - Enable Spectre mitigation on all loads.
  • All Control Flow Loads - Enable Spectre mitigation on control flow loads.
  • Disabled - Not set.

Spectre Mitigation

Spectre mitigations for CVE 2017-5753. Sets /Qspectre.

Choices

  • Enabled - Enable Spectre mitigation for CVE 2017-5753.
  • Disabled - Not set.

Enable Intel JCC Erratum Mitigation

Software mitigation for the performance impact caused by the Intel JCC erratum microcode update. Sets /QIntel-jcc-erratum.

Enable EH Continuation Metadata

Generates a sorted list of all the valid exception handling continuation targets for a binary, used during runtime for RIP validation. Currently available for x64 builds. Sets /guard:ehcont.

Enable Signed Returns

Enables signed returns, which help detect and prevent attempts to dispatch to illegal blocks from function returns. Currently available for ARM64 builds. Sets /guard:signret.

C/C++ Language properties

Disable Language Extensions

Suppresses or enables language extensions. Sets /Za.

Treat WChar_t As Built in Type

When you enable this property, the type wchar_t becomes a native type that maps to __wchar_t in the same way that short maps to __int16. /Zc:wchar_t is on by default.

Force Conformance in For Loop Scope

Implements standard C++ behavior for the for statement loops with Microsoft extensions. Sets /Za, /Ze (Disable language extensions. /Zc:forScope is on by default.

Remove unreferenced code and data

When you enable this property, the compiler no longer generates symbol information for unreferenced code and data.

Enforce type conversion rules

Used to identify an rvalue reference type as the result of a cast operation in accordance with the C++11 standard.

Enable Run-Time Type Information

Adds code for checking C++ object types at runtime (runtime type information, or RTTI). Sets /GR, /GR-.

Open MP Support

Enables OpenMP 2.0 language extensions. Sets /openmp.

C++ Language Standard

Determines the C++ language standard that the compiler enforces. The default value doesn't set a standard option, so the compiler uses its default C++14 setting. If you select a specific value, the corresponding /std compiler option is set.

Choices

  • Default (ISO C++14 Standard)
  • ISO C++14 Standard (/std:c++14)
  • ISO C++17 Standard (/std:c++17)
  • ISO C++20 Standard (/std:c++20)
  • Preview - ISO C++23 Standard (/std:c++23preview)
  • Preview - Features from the Latest C++ Working Draft (/std:c++latest)

C Language Standard

Determines the C language standard that the compiler enforces. The default value doesn't set a standard option, so the compiler uses its default legacy MSVC setting. If you select a specific value, the corresponding /std compiler option is set.

Choices

  • Default (Legacy MSVC)
  • ISO C11 Standard (/std:c11)
  • ISO C17 (2018) Standard (/std:c17)
  • Preview - Features from the Latest C Working Draft (/std:clatest)

Conformance mode

Enables or suppresses conformance mode. Sets /permissive-.

Enable Experimental C++ Standard Library Modules

Experimental support for the C++ Modules TS and Standard Library modules.

Build ISO C++23 Standard Library Modules

Starting in Visual Studio 17.6, when this property is enabled and C++ Language Standard is set to /std:c++latest, Microsoft C++ projects automatically find and build ISO C++23 Standard Library modules. This enables you to import std or import std.compat in your C++ code.

C/C++ Precompiled Headers properties

Precompiled Header

Create/Use Precompiled Header

Enables creation or use of a precompiled header during the build. Sets /Yc, /Yu.

Choices

  • Create - Instructs the compiler to create a precompiled header (.pch) file that represents the state of compilation at a certain point.
  • Use - Instructs the compiler to use an existing precompiled header (.pch) file in the current compilation.
  • Not Using Precompiled Headers - Not using precompiled headers.

Precompiled Header File

Specifies the name of the header file that the compiler uses to create or access a precompiled header. Sets /Yc, /Yu.

Precompiled Header Output File

Specifies the path or name of the generated precompiled header file. Sets /Fp.

C/C++ Output Files properties

Expand Attributed Source

Creates a listing file with expanded attributes injected into the source file. Sets /Fx.

Assembler Output

Specifies the contents of the assembly language output file. Sets /FA, /FAc, /FAs, /FAcs.

Choices

  • No Listing - No listing.
  • Assembly-Only Listing - Assembly code: .asm.
  • Assembly With Machine Code - Machine and assembly code: .cod.
  • Assembly With Source Code - Source and assembly code: .asm.
  • Assembly, Machine Code and Source - Assembly, machine code, and source code: .cod.

Use Unicode For Assembler Listing

Causes the output file to be created in UTF-8 format.

ASM List Location

Specifies the relative path or name for the ASM listing file. Can be a file or directory name. Sets /Fa.

Module Output File Name

Module or header unit output (BMI) file location. Can be a file or directory name. Sets /ifcOutput[name].

Module Dependencies File Name

Specifies the path and/or name of the generated module dependencies file. Sets /scanDependencies[path].

Object File Name

Specifies a name to override the default object file name. Can be a file or directory name. Sets /Fo.

Program Database File Name

Specifies a name for a compiler-generated PDB file. Also specifies base name for the required compiler-generated IDB file. Can be a file or directory name. Sets /Fd.

Generate XML Documentation Files

Specifies that the compiler should generate XML documentation comment files (.XDC). Sets /doc.

XML Documentation File Name

Specifies the name of the generated XML documentation files. Can be a file or directory name. Sets /doc:<name>.

Generate Source Dependencies File

Generates a JSON file with the list of all files the compiler used for the compilation of the source. Sets /sourceDependencies.

Source Dependencies File Name

Specifies the path and/or name of the generated source dependencies file. Sets /sourceDependencies[path].

C/C++ Browse Information properties

Enable Browse Information

Specifies whether the compiler should generate a .bsc file. Sets /FR.

Browse Information File

Specifies an optional name for the browser information file. Sets /FR<name>.

C/C++ External Includes properties

Treat Files Included with Angle Brackets as External

Specifies whether to treat files included with angle brackets as external. Set this property to Yes to set the /external:anglebrackets compiler option.

External Header Warning Level

Select how strict you want the compiler to be about code errors in external headers. This property sets the /external:Wn compiler option. If this value is set to Inherit Project Warning Level or the default, other /external options are ignored.

Template Diagnostics in External Headers

Specifies whether to evaluate the warning level across a template instantiation chain. Set this property to Yes to set the /external:templates- compiler option.

Disable Code Analysis for External Headers

Disables code analysis for external headers. Sets the /analyze:external- compiler option.

Analysis Ruleset for External Headers

Specifies a code analysis ruleset override for external headers. If this property isn't specified, the Code Analysis setting is used. Sets the /analyze:external:ruleset path compiler option.

C/C++ Advanced properties

Calling Convention

Select the default calling convention for your application (can be overridden by function). Sets /Gd, /Gr, /Gz, /Gv.

Choices

  • __cdecl - Specifies the __cdecl calling convention for all functions, except C++ member functions and functions marked __stdcall or __fastcall.
  • __fastcall - Specifies the __fastcall calling convention for all functions, except C++ member functions and functions marked __cdecl or __stdcall. All __fastcall functions must have prototypes.
  • __stdcall - Specifies the __stdcall calling convention for all functions, except C++ member functions and functions marked __cdecl or __fastcall. All __stdcall functions must have prototypes.
  • __vectorcall - Specifies the __vectorcall calling convention for all functions, except C++ member functions and functions marked __cdecl, __fastcall, or __stdcall. All __vectorcall functions must have prototypes.

Compile As

Select a compile language option for source files. Sets /TC, /TP, /interface, /internalPartition, or /exportHeader options.

Choices

  • Default - Default.
  • Compile as C Code (/TC) - Compile specified source files as C code. By default, files with a .c extension are compiled as C.
  • Compile as C++ Code (/TP) - Compile specified source files as C++ code. By default, all source files that don't have a .c, .ixx, .cppm, or .h extension, or that don't have an extension, are compiled as C++.
  • Compile as C++ Module Code (/interface) - Compile specified source files as C++ module code. By default, files with an .ixx or .cppm extension are compiled as C++ module code.
  • Compile as C++ Module Internal Partition (/internalPartition) - Compile specified source files as C++ module internal partition.
  • Compile as C++ Header Unit (/exportHeader) - Compile specified source files as C++ header unit. By default, files with an .h extension or no extension are compiled as header units.

Disable Specific Warnings

Disable the specified warning numbers. Put the warning numbers in a semicolon-delimited list. Sets /wd<number>.

Forced Include File

Specifies one or more forced include files. Sets /FI<name>.

Forced #using File

Specifies one or more forced #using files. Sets /FU<name>.

Show Includes

Generates a list of include files with compiler output. Sets /showIncludes.

Use Full Paths

Use full paths in diagnostic messages. Sets /FC.

Omit Default Library Name

Specifies to omit default library names in .obj files. Sets /Zl.

Internal Compiler Error Reporting

Note

This option is deprecated. Starting in Windows Vista, error reporting is controlled by Windows Error Reporting (WER) settings.

Treat Specific Warnings As Errors

Treats the specific compiler warning as an error, where n is a compiler warning.

Additional Options

Additional Options.