# Microsoft* Compatibility

This content is specific to C++; it does not apply to DPC++.

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.

## 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
- Enum Bit-Field Signedness

## See Also

/GS compiler option