# Microsoft* Compatibility

The Intel® oneAPI DPC++/C++ Compiler is fully source- and binary-compatible (native code only) with Microsoft Visual C++*. You can debug binaries built with the Intel oneAPI DPC++/C++ Compiler from within the Microsoft Visual Studio* environment.

The Intel oneAPI DPC++/C++ Compiler supports security checks with the /GS option. You can control this option in the Microsoft Visual Studio IDE by using C/C++ > Code Generation > Buffer Security Check.

The Intel® C++ Compiler also includes support for safe exception handling features with the /Qsafeseh option for 32-bit binaries. This option is on by default. You can control this option in the Microsoft Visual Studio IDE by using C/C++ > Command Line > Additional options.

### Important

The Intel® C++ Compiler is a hosted compiler, not a standalone compiler. The compiler requires that standard development tools for the host operating system (linker, librarian, and so forth), as well as standard libraries and headers, be installed and available in your Path, Library Path, and Include environment variables. The host compiler provides access to I/O facilities through, for example, `<stdio.h>` and the C runtime library, as well as providing the implementation for the C++ standard template (for example, `<vector>`). When you build your application with the Intel® C++ Compiler, the stdio.h file is found in the host compiler's library. Likewise when you link your application, the link step uses the host OS linker to bind the application, and the host C runtime library provides the implementation for the runtime support routines.

On Windows, the standard compiler is Microsoft Visual C++. On Linux the standard compiler is GCC. The standard compiler must be installed and available in your environment before you run the Intel® C++ Compiler.

## Microsoft Visual Studio Integration

The Intel oneAPI DPC++/C++ Compiler is compatible with Microsoft Visual Studio 2017 and 2019 projects.

The Intel oneAPI DPC++/C++ Compiler only supports native C++ project types provided by Microsoft Visual Studio development environment. The project types with .NET* attributes such as the ones below, cannot be converted to an Intel C++ project:

- Empty Project (.NET)

- Class Library (.NET)

- Console Application (.NET)

- Windows Control Library (.NET)

- Windows Forms Application (.NET)

- Windows Service (.NET)

## Unsupported Major Features

- COM Attributes

- C++ Accelerated Massive Parallelism (C++ AMP)

- Managed extensions for C++ (new pragmas, keywords, and command-line options)

- Event handling (new keywords)

- `__abstract` keyword

- `__box` keyword

- `__delegate` keyword

- `__gc` keyword

- `__identifier` keyword

- `__nogc` keyword

- `__pin` keyword

- `__property` keyword

- `__sealed` keyword

- `__try_cast` keyword

- `__w64` keyword

## Unsupported Preprocessor Features

- `#import` directive changes for attributed code

- `#using` directive

- `managed`, `unmanaged` pragmas

- `_MANAGED` macro

- `runtime_checks` pragma

## Mixing Managed and Unmanaged Code

If you use the managed extensions to the C++ language in Microsoft Visual Studio .NET, you can use the Intel oneAPI DPC++/C++ Compiler for your non-managed code for better application performance. Make sure managed keywords do not appear in your non-managed code.

For information on how to mix managed and unmanaged code, refer to the article, "An Overview of Managed/Unmanaged Code Interoperability", on the Microsoft Web site.

Parent topic: Compatibility and Portability

- Precompiled Header Support
- Compilation and Execution Differences
- Declaration in Scope of Function Defined in a Namespace
- Enum Bit-Field Signedness

## See Also

/GS compiler option
/Qsafeseh