--- title: "C/C++ Properties (Linux C++)" ms.date: "10/14/2020" description: "Describes the Linux compilation options on the Visual Studio C/C++ properties page" ms.assetid: 4bb8894b-c874-4a68-935e-b127d54e484f f1_keywords: [] --- # C/C++ Properties (Linux C++) ::: moniker range="msvc-140" Linux support is available in Visual Studio 2017 and later. ::: moniker-end ::: moniker range=">=msvc-150" ## General | Property | Description | Choices | |--|--|--| | Additional Include Directories | Specifies one or more directories to add to the include path. Use semi-colons to separate multiple directories. (-I\[path]). | | Debug Information Format | Specifies the type of debugging information generated by the compiler. | **None** - Produces no debugging information, so compilation may be faster.
**Minimal Debug Information** - Generate minimal debug information.
**Full Debug Information (DWARF2)** - Generate DWARF2 debug information.
| | Object File Name | Specifies a name to override the default object file name. It can be a file or directory name. (-o [name]). | | Warning Level | Selects how strict you want the compiler to be about code errors. Add other flags directly to **Additional Options**. (/w, /Weverything). | **Turn Off All Warnings** - Disables all compiler warnings.
**EnableAllWarnings** - Enables all warnings, including ones disabled by default.
| | Treat Warnings As Errors | Treats all compiler warnings as errors. For a new project, it may be best to use /Werror in all compilations. Resolve all warnings to ensure the fewest possible hard-to-find code defects. | | C Additional Warnings | Defines a set of additional warning messages. | | C++ Additional Warnings | Defines a set of additional warning messages. | | Enable Verbose mode | When Verbose mode is enabled, prints out more information to diagnose the build. | | C Compiler | Specifies the program to invoke during compilation of C source files, or the path to the C compiler on the remote system. | | C++ Compiler | Specifies the program to invoke during compilation of C++ source files, or the path to the C++ compiler on the remote system. | | Compile Timeout | Remote compilation timeout, in milliseconds. | | Copy Object Files | Specifies whether to copy the compiled object files from the remote system to the local machine. | | Max Parallel Compilation Jobs | The number of processes to create in parallel during compilation. The default is 1. If you're using Windows Subsystem for Linux (WSL) version 1, the limit is 64. | | Validate Architecture | Specify whether to check if the platform the project targets matches the remote system.| | Enable Address Sanitizer | Compile the program with Address Sanitizer, which is a fast memory error detector that can find runtime memory issues such as use-after-free, and perform out of bounds checks.| ## Optimization | Property | Description | Choices | |--|--|--| | Optimization | Specifies the optimization level for the application. | **Custom** - Custom optimization.
**Disabled** - Disable optimization.
**Minimize Size** - Optimize for size.
**Maximize Speed** - Optimize for speed.
**Full Optimization** - Expensive optimizations. | | Strict Aliasing | Assumes the strictest aliasing rules. An object of one type is never assumed to have the same address as an object of a different type. | | Unroll Loops | Unrolls loops to make the application faster by reducing the number of branches executed, at the cost of larger code size. | | Link Time Optimization | Enables inter-procedural optimizations by allowing the optimizer to look across object files in your application. | | Omit Frame Pointer | Suppresses creation of frame pointers on the call stack. | | No Common Blocks | Allocates even uninitialized global variables in the data section of the object file, rather than generate them as common blocks. | ## Preprocessor | Property | Description | |--|--| | Preprocessor Definitions | Defines preprocessing symbols for your source file. (-D) | | Undefine Preprocessor Definitions | Specifies one or more preprocessor undefines. (-U \[macro]) | | Undefine All Preprocessor Definitions | Undefines all previously defined preprocessor values. (-undef) | | Show Includes | Generates a list of include files with compiler output. (-H) | ## Code Generation | Property | Description | Choices | |--|--|--| | Position Independent Code | Generates position-independent code (PIC) for use in a shared library. | | Statics are thread safe | Emits extra code to use routines specified in the C++ ABI for thread-safe initialization of local statics. | **No** - Disable thread-safe statics.
**Yes** - Enable thread-safe statics. | | Floating Point Optimization | Enables floating-point optimizations by relaxing IEEE-754 conformance. | | Inline Methods Hidden | When enabled, out-of-line copies of inline methods are declared `private extern`. | | Symbols Hidden By Default | All symbols are declared `private extern` unless explicitly marked for export by using the `__attribute` macro. | | Enable C++ Exceptions | Specifies the exception-handling model used by the compiler. | **No** - Disable exception handling.
**Yes** - Enable exception handling. | ## Language | Property | Description | Choices | |--|--|--| | Enable Run-Time Type Information | Adds code for checking C++ object types at run time (runtime type information). (frtti, fno-rtti) | | C Language Standard | Determines the C language standard. | **Default**
**C89** - C89 Language Standard.
**C99** - C99 Language Standard.
**C11** - C11 Language Standard.
**C99 (GNU Dialect)** - C99 (GNU Dialect) Language Standard.
**C11 (GNU Dialect)** - C11 (GNU Dialect) Language Standard. | | C++ Language Standard | Determines the C++ language standard. | **Default**
**C++03** - C++03 Language Standard.
**C++11** - C++11 Language Standard.
**C++14** - C++14 Language Standard.
**C++03 (GNU Dialect)** - C++03 (GNU Dialect) Language Standard.
**C++11 (GNU Dialect)** - C++11 (GNU Dialect) Language Standard.
**C++14 (GNU Dialect)** - C++14 (GNU Dialect) Language Standard. | ## Advanced | Property | Description | Choices | |--|--|--| | Compile As | Selects compilation language option for .c and .cpp files. (-x c, -x c++) | **Default** - Detect based on the .c or .cpp extension.
**Compile as C Code** - Compile as C code.
**Compile as C++ Code** - Compile as C++ code. | | Forced Include Files | Specifies one or more forced include files (-include \[name]) | ::: moniker-end