Intel® C++ Compiler for Windows* - General compatibility with Microsoft* Visual C++*


Specify Degree of Microsoft* Compatibility
In a limited number of cases, the Microsoft* compiler compiles source code without generating an error while the Intel® compiler generates an error for the same source code. If this is undesirable, consider using the /Qms option with the Intel compiler may allow a successful compilation. The default setting for the /Qms option is /Qms1.

  • /Qms0 - Instructs the compiler to disable Microsoft compatibility bugs.
  • /Qms1 - Instructs the compiler to enable most Microsoft compatibility bugs (default).
  • /Qms2 - Instructs the compiler to implement full Microsoft compatibility.

Source and Binary Compatibility
Intel® C++ Compiler for Windows* is source and binary compatible with Visual C++ 6.0*, Visual C++ .NET 2003, Visual C++ 2005*, and Visual C++ 2005* when /Qvc switch is specified.

  • /Qvc6 - source and binary compatible with Visual C++ 6.0 (this option is not supported in 11.0)
  • /Qvc7 - source and binary compatible with Visual C++ .NET 2002 (this option is not supported in 10.0)
  • /Qvc7.1 - source and binary compatible with Visual C++ .NET 2003
  • /Qvc8 - source and binary compatible with Visual C++ 2005
  • /Qvc9 - source and binary compatible with Visual C++ 2008

Forcing Function Inlining Using _inline
The Intel C++ Compiler for Windows cannot be forced to inline functions with _inline. There are certain criteria for inline function expansion that must be satisfied for a routine to be considered for inlining. Once these criteria are met, the Intel® C++ Compiler picks the routines whose inline expansions provide the greatest benefit to program performance. If you need to force inlining, use __force_inline. Please consult the "Criteria for In-Line Function Expansion" section of t he User's Guide.

#pragma[blank] Seems to Have No Effect
The Intel C++ Compiler for Windows does not support the following pragmas:

#pragma component
#pragma function
#pragma include_alias
#pragma inline_depth
#pragma inline_recursion
#pragma intrinsic
#pragma setlocale

Support for #pragma Optimize
#pragma optimize is partially supported. It can only be used to enable or disable all optimizations specified at the command-line. The ability to give a custom list of optimizations to the pragma is not supported.

ASM Labels Are Treated as Case Sensitive
When compiled by the Intel C++ Compiler for Windows, inline assembly target labels of " goto" statements are case sensitive. The Microsoft Visual C++* Compiler treats these labels in a case insensitive manner.

IDE Gives Warning Message When Using -Fe
When using the -Fe compiler option from the Microsoft Visual Studio* 6.0 IDE, the following message is generated: " Format of decimal number 'e' is incorrect. It may only contain characters 0-9. It must be positive, the '+' prefix is optional. The maximum allowed decimal number is 4,294,967,295."

The IDE checks the character that comes after the -F option for validity. Because -Fe is an option unique to the Intel C++ Compiler, the IDE determines that you are trying to specify the -F option that can only be followed by a number 0-9. This warning does not apply to the Intel® C++ Compiler, so it can be safely ignored. If you click " OK", the -Fe option will still be used.

Debugging Streaming SIMD Extensions Code
The Microsoft Visual C++ .NET debugger supports the Intel® Streaming SIMD Extensions. The Microsoft Visual C++ 6.0 debugger also supports the SSE, but only if you have service pack 5 or higher installed. You can also disassemble the Intel Streaming SIMD Extensions assembly using the Intel® Enhanced Debugger, which is available with the Intel C++ Compiler for Windows.