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. C language object files can be linked with either the Intel compiler or the gcc compiler. However, to correctly pass the Intel libraries to the linker, use the Intel compiler. See Linking and Default Libraries for more information.

GNU C includes several, non-standard features not found in ISO standard C. Some of these extensions to the C language are supported in this version of the Intel C++ Compiler. See http://www.gnu.org for more information.

gcc Language Extension Intel
Support
GNU Description and Examples
Statements and Declarations in Expressions Yes http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Statement-Exprs.html#Statement%20Exprs
Locally Declared Labels Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Local-Labels.html#Local%20Labels
Labels as Values Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Labels-as-Values.html#Labels%20as%20Values
Nested Functions No http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Nested-Functions.html#Nested%20Functions
Constructing Function Calls No http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Constructing-Calls.html#Constructing%20Calls
Naming an Expression's Type Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Naming-Types.html#Naming%20Types
Referring to a Type with typeof Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Typeof.html#Typeof
Generalized Lvalues Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Lvalues.html#Lvalues
Conditionals with Omitted Operands Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Conditionals.html#Conditionals
Double-Word Integers Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Long-Long.html#Long%20Long
Complex Numbers Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Complex.html#Complex
Hex Floats Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Hex-Floats.html#Hex%20Floats
Arrays of Length Zero Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Zero-Length.html#Zero%20Length
Arrays of Variable Length Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Variable-Length.html#Variable%20Length
Macros with a Variable Number of Arguments. Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Variadic-Macros.html#Variadic%20Macros
Slightly Looser Rules for Escaped Newlines No http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Escaped-Newlines.html#Escaped%20Newlines
String Literals with Embedded Newlines Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Multi-line-Strings.html#Multi-line%20Strings
Non-Lvalue Arrays May Have Subscripts Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Subscripting.html#Subscripting
Arithmetic on void-Pointers Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Pointer-Arith.html#Pointer%20Arith
Arithmetic on Function-Pointers Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Pointer-Arith.html#Pointer%20Arith
Non-Constant Initializers Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Initializers.html#Initializers
Compound Literals Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Compound-Literals.html#Compound%20Literals
Designated Initializers Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Designated-Inits.html#Designated%20Inits
Cast to a Union Type Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Cast-to-Union.html#Cast%20to%20Union
Case Ranges Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Case-Ranges.html#Case%20Ranges
Mixed Declarations and Code Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Mixed-Declarations.html#Mixed%20Declarations
Declaring Attributes of Functions Most http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Function-Attributes.html#Function%20Attributes
Attribute Syntax Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Attribute-Syntax.html#Attribute%20Syntax
Prototypes and Old-Style Function Definitions No http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Function-Prototypes.html#Function%20Prototypes
C++ Style Comments Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
C---Comments.html#C++%20Comments
Dollar Signs in Identifier Names Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Dollar-Signs.html#Dollar%20Signs
The Character ESC in Constants Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Character-Escapes.html#Character%20Escapes
Specifying Attributes of Variables Most http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Variable-Attributes.html#Variable%20Attributes
Specifying Attributes of Types Most http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Type-Attributes.html#Type%20Attributes
Inquiring on Alignment of Types or Variables Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Alignment.html#Alignment
An Inline Function is As Fast As a Macro Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Inline.html#Inline
Assembler Instructions with C Expression Operands Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Extended-Asm.html#Extended%20Asm
Controlling Names Used in Assembler Code Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Asm-Labels.html#Asm%20Labels
Variables in Specified Registers Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Explicit-Reg-Vars.html#Explicit%20Reg%20Vars
Alternate Keywords Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Alternate-Keywords.html#Alternate%20Keywords
Incomplete enum Types Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Incomplete-Enums.html#Incomplete%20Enums
Function Names as Strings Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Function-Names.html#Function%20Names
Getting the Return or Frame Address of a Function Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Return-Address.html#Return%20Address
Using Vector Instructions Through Built-in Functions Some http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Vector-Extensions.html#Vector%20Extensions
Other built-in functions provided by GCC Most http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Other-Builtins.html#Other%20Builtins
Built-in Functions Specific to Particular Target Machines No http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Target-Builtins.html#Target%20Builtins
Pragmas Accepted by GCC No http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Pragmas.html#Pragmas
Unnamed struct/union fields within structs/unions Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Unnamed-Fields.html#Unnamed%20Fields
Minimum and Maximum operators in C++ Yes http://gcc.gnu.org/onlinedocs/gcc-3.2/gcc/
Min-and-Max.html#Min%20and%20Max
When is a Volatile Object Accessed? No http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/ Volatiles.html#Volatiles
Restricting Pointer Aliasing Yes http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Restricted-Pointers.html#Restricted%20Pointers
Vague Linkage Yes http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Vague-Linkage.html#Vague%20Linkage
Declarations and Definitions in One Header No http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
C---Interface.html#C++%20Interface
Where's the Template? extern template supported http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Template-Instantiation.html#Template%20Instantiation
Extracting the function pointer from a bound pointer to member function No http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Bound-member-functions.html#Bound%20member%20functions
C++-Specific Variable, Function, and Type Attributes Yes http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
C---Attributes.html#C++%20Attributes
Java Exceptions No http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Java-Exceptions.html#Java%20Exceptions
Deprecated Features No http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Deprecated-Features.html#Deprecated%20Features
Backwards Compatibility No http://gcc.gnu.org/onlinedocs/gcc-3.2.1/gcc/
Backwards-Compatibility.html#Backwards%20Compatibility

Note

The Intel C++ Compiler supports gcc*-style inline ASM if the assembler code uses AT&T* System V/386 syntax, as defined in the gcc documentation at: http://www.gnu.org/manual/gas/html_chapter/as_16.html