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. Many 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 Extension to C Language Intel
Support
GNU Description and Examples
Statements and Declarations in Expressions Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Statement-Exprs.html#Statement%20Exprs
Locally Declared Labels Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Local-Labels.html#Local%20Labels
Labels as Values Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Labels-as-Values.html#Labels%20as%20Values
Nested Functions No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Nested-Functions.html#Nested%20Functions
Constructing Function Calls No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Constructing-Calls.html#Constructing%20Calls
Naming an Expression's Type Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Naming-Types.html#Naming%20Types
Referring to a Type with typeof Yes

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Typeof.html#Typeof

Generalized Lvalues Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Lvalues.html#Lvalues
Conditionals with Omitted Operands Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Conditionals.html#Conditionals
Double-Word Integers Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Long-Long.html#Long%20Long
Complex Numbers Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Complex.html#Complex
Hex Floats Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Hex-Floats.html#Hex%20Floats
Arrays of Length Zero Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Zero-Length.html#Zero%20Length
Arrays of Variable Length Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Variable-Length.html#Variable%20Length
Macros with a Variable Number of Arguments. Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Variadic-Macros.html#Variadic%20Macros
Slightly Looser Rules for Escaped Newlines No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Escaped-Newlines.html#Escaped%20Newlines
String Literals with Embedded Newlines Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Multi-line-Strings.html#Multi-line%20Strings
Non-Lvalue Arrays May Have Subscripts Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Subscripting.html#Subscripting
Arithmetic on void-Pointers Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Pointer-Arith.html#Pointer%20Arith
Arithmetic on Function-Pointers No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Pointer-Arith.html#Pointer%20Arith
Non-Constant Initializers Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Initializers.html#Initializers
Compound Literals Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Compound-Literals.html#Compound%20Literals
Designated Initializers Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Designated-Inits.html#Designated%20Inits
Cast to a Union Type Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Cast-to-Union.html#Cast%20to%20Union
Case Ranges Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Case-Ranges.html#Case%20Ranges
Mixed Declarations and Code Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Mixed-Declarations.html#Mixed%20Declarations
Declaring Attributes of Functions No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Function-Attributes.html#Function%20Attributes
Attribute Syntax No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Attribute-Syntax.html#Attribute%20Syntax
Prototypes and Old-Style Function Definitions No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Function-Prototypes.html#Function%20Prototypes
C++ Style Comments Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/C---Comments.html#C++%20Comments
Dollar Signs in Identifier Names Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Dollar-Signs.html#Dollar%20Signs
The Character ESC in Constants Yes

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Character-Escapes.html#Character%20Escapes

Specifying Attributes of Variables No

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Variable-Attributes.html#Variable%20Attributes

Specifying Attributes of Types No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Type-Attributes.html#Type%20Attributes
Inquiring on Alignment of Types or Variables Yes

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Alignment.html#Alignment

An Inline Function is As Fast As a Macro Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Inline.html#Inline
Assembler Instructions with C Expression Operands Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Extended-Asm.html#Extended%20Asm
Controlling Names Used in Assembler Code Yes

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Asm-Labels.html#Asm%20Labels

Variables in Specified Registers Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Explicit-Reg-Vars.html#Explicit%20Reg%20Vars
Alternate Keywords No http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Alternate-Keywords.html#Alternate%20Keywords
Incomplete enum Types Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Incomplete-Enums.html#Incomplete%20Enums
Function Names as Strings Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Function-Names.html#Function%20Names
Getting the Return or Frame Address of a Function Yes http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Return-Address.html#Return%20Address

Using Vector Instructions Through Built-in Functions

No

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Vector-Extensions.html#Vector%20Extensions

Other built-in functions provided by GCC

No

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Other-Builtins.html#Other%20Builtins

Built-in Functions Specific to Particular Target Machines

No

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Target-Builtins.html#Target%20Builtins

Pragmas Accepted by GCC

No

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Pragmas.html#Pragmas

Unnamed struct/union fields within structs/unions

No

http://gcc.gnu.org/onlinedocs/gcc-3.1/gcc/Unnamed-Fields.html#Unnamed%20Fields