gcc* Compatibility

C language object files created with the Intel® C++ Compiler are binary compatible with the GNU gcc* compiler and glibc*, the GNU C language library. You can use the Intel compiler or the gcc compiler to pass object files to the linker. However, to correctly pass the Intel libraries to the linker, use the Intel compiler.

The Intel C++ Compiler supports many of the language extensions provided by the GNU compilers.

gcc Extensions to the C Language

GNU C includes several, non-standard features not found in ISO standard C. This version of the Intel C++ Compiler supports most of these extensions listed in the following table. See http://www.gnu.org for more information.

gcc Language Extension Intel
Support
Statements and Declarations in Expressions Yes
Locally Declared Labels Yes
Labels as Values Yes
Nested Functions No
Constructing Function Calls No
Naming an Expression's Type Yes
Referring to a Type with typeof Yes
Generalized Lvalues Yes
Conditionals with Omitted Operands Yes
Double-Word Integers Yes
Complex Numbers Yes
Hex Floats Yes
Arrays of Length Zero Yes
Arrays of Variable Length Yes
Macros with a Variable Number of Arguments. Yes
Slightly Looser Rules for Escaped Newlines No
String Literals with Embedded Newlines Yes
Non-Lvalue Arrays May Have Subscripts Yes
Arithmetic on void-Pointers Yes
Arithmetic on Function-Pointers Yes
Non-Constant Initializers Yes
Compound Literals Yes
Designated Initializers Yes
Cast to a Union Type Yes
Case Ranges Yes
Mixed Declarations and Code Yes
Declaring Attributes of Functions Yes
Attribute Syntax Yes
Prototypes and Old-Style Function Definitions No
C++ Style Comments Yes
Dollar Signs in Identifier Names Yes
ESC Character in Constants Yes
Specifying Attributes of Variables Yes
Specifying Attributes of Types Yes
Inquiring on Alignment of Types or Variables Yes
Inline Function is As Fast As a Macro Yes
Assembler Instructions with C Expression Operands Yes
Controlling Names Used in Assembler Code Yes
Variables in Specified Registers Yes
Alternate Keywords Yes
Incomplete enum Types Yes
Function Names as Strings Yes
Getting the Return or Frame Address of a Function Yes
Using Vector Instructions Through Built-in Functions No
Other built-in functions provided by GCC Yes
Built-in Functions Specific to Particular Target Machines No
Pragmas Accepted by GCC Yes
Unnamed struct/union fields within structs/unions Yes

g++* Extensions to the C++ Language

GNU C++ includes several, non-standard features not found in ISO standard C++. This version of the Intel C++ Compiler supports many of these extensions listed in the following table.  See http://www.gnu.org for more information.

g++ Language Extension Intel
Support
Minimum and Maximum operators in C++ Yes
When is a Volatile Object Accessed? No
Restricting Pointer Aliasing Yes
Vague Linkage Yes
Declarations and Definitions in One Header No
Where's the Template? extern template supported
Extracting the function pointer from a bound pointer to member function Yes
C++-Specific Variable, Function, and Type Attributes Yes
Java Exceptions No
Deprecated Features No
Backwards Compatibility No

Note

Statement expressions are supported, except the following are prohibited inside them:

Also, branching out of a statement expression is not allowed, and statement expressions may not be used in default argument expressions. Variable-length arrays are no longer allowed in statement expressions.

Note

The Intel C++ Compiler supports gcc-style inline ASM if the assembler code uses AT&T* System V/386 syntax.