Intel® C++ Compiler XE 13.1 User and Reference Guides

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

Yes

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

Built-in integer data types, __int128 and __uint128

Yes

Note

Intel® C++ Compiler supports representation of full __int128 [or int128?] literals.

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

Note

The Intel® C++ Compiler is now compatible with gcc v4.5.

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 and statement expressions in constructor initializers are not allowed. 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.


Submit feedback on this help topic