|
Contents:
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.
|
Comments
neither of /Qms0 /Qms1 /Qms2 helped me with Intel 11 compiler; it didn't like two below (3d party code) and kept saying "error" and do not compile.
But /Qw2157 and /Qw1011 helped.
1.
#define NULL 0
2.
Lock& operator=( const Lock& l )
{
...
// no return statement
}
About #2, it's strange that VC does not give error for copy-contructor but does for functions. It seems a compatibility bug to me. I'll report it.
About #1, I could not get compiler to emit the msg. Please post more code example. Thanks!
About #2, the assignment operator (sorry in previous mistake about copy-contructor), no return statement is dangerous here. wouldn't you want your code to be safer?
Our compiler engineer does not agree to ignore this warning. I do agree.
If you have a testcase about warning 2157, please post here.
Thanks!