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

Decimal floating types

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 iconNote

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

Also, branching out of a statement expression, statement expressions in constructor initializers, and statement expressions are not allowed. Variable-length arrays are no longer allowed in statement expressions.

Note iconNote

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


Submit feedback on this help topic

Copyright © 1996-2010, Intel Corporation. All rights reserved.