C++编译器的预定义宏(Windows版、Linux版)

Intel C++编译器的预定义宏(Windows版、Linux版)

网上有很多介绍VC与GCC预定义宏的帖子,例如《CC++宏大全》。

而对于Intel C++编译器的预定义宏,似乎没人介绍。
我Google了很久,发现Intel官网上有,但是很奇怪,很多链接都失效了,报告404错误。反复调整搜索关键字,一个一个的尝试链接,最后终于找到了有效的页面了。为了怕以后链接失效,赶紧记录下载。

该手册的名字是《Intel® C++ Compiler XE 12.1 User and Reference Guides》,分别有Windows版和Linux版——
Windows:http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/cpp/win/index.htm
Linux:http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/cpp/lin/index.htm


一、Windows版

1.1 ANSI Standard Predefined Macros(ANSI标准预定义宏)

http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/cpp/win/bldaps_cls/common/bldaps_ansi_macros.htm

The ANSI/ISO standard for the C language requires that certain predefined macros be supplied with conforming compilers. The following table lists the macros that the Intel® C++ Compiler supplies in accordance with this standard:

The compiler includes predefined macros in addition to those required by the standard. The default predefined macros differ among Windows*, Linux*, and Mac OS* X operating systems due to the default /Za compiler option on Windows. Differences also exist on Linux OS and Mac OS X as a result of the -std compiler option.

Macro Value
__DATE__ The date of compilation as a string literal in the formMmm dd yyyy.
__FILE__ A string literal representing the name of the file being compiled.
__LINE__ The current line number as a decimal constant.
__STDC__ The name __STDC__ is defined when compiling a C translation unit.
__STDC_HOSTED__ 1
__TIME__ The time of compilation as a string literal in the formhh:mm:ss.


1.2 Additional Predefined Macros(额外的预定义宏)

http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/cpp/win/bldaps_cls/cppug_ccw/bldaps_macros_win.htm

The Intel® C++ Compiler supports the predefined macros listed in the table below. The compiler also includes predefined macros specified by the ISO/ANSI standard.

The following table lists the predefined macros on systems based on either the IA-32 or Intel® 64 architecture.

These labels apply:

  • i32 means that the macro is included on systems based on IA-32 architecture.
  • i64em means that the macro is included on systems based on Intel® 64 architecture.

 

Macro Name Value i32 i64em
__cilk 200; however, if /Qcilk-serialize or /Qintel-extensions- is specified, the value is undefined X X
__COUNTER__ 0 X X
__ECL Intel compiler version    
__EDG__ 1 X X
__EDG_VERSION__ EDG version X X
_export no value X X
__ICL Intel compiler version X X
_INC_STDIO no value X X
_INTEGRAL_MAX_BITS 64 X X
__INTEL_COMPILER Intel compiler version X X
__INTEL_COMPILER_BUILD_DATE YYYYMMDD X X
__INTEL_MS_COMPAT_LEVEL 1 X X
__LONG_DOUBLE_SIZE__ 64 X X
_M_AMD64 1   X
_M_IX86 700 X X
_M_IA64 64200   X
_M_X64 1   X
_MSC_EXTENSIONS 1 X X
_MSC_FULL_VER IA-32 architecture only:
13102292
X X
_MSC_VER 1400, 1500, or 1600, depending on the Microsoft Visual Studio* environment (Visual Studio 2005, 2008, or 2010, respectively). X X
_MT 1 X X
_OPENMP 200805 X X
_PGO_INSTRUMENT 1 X X
__QMSPP_ 1 X  
__SIGNED_CHARS__ 1 X X
_SIZE_T_DEFINED no value X X
__STDC_VERSION__ 199409L X X
__w64 no value X X
_WCHAR_T_DEFINED no value X X
_WCTYPE_T_DEFINED no value X X
_WIN32 1 X X
_WIN64 1   X
_VA_LIST_DEFINED no value X X

 


二、Linux版

2.1 ANSI Standard Predefined Macros(ANSI标准预定义宏)

http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/cpp/lin/bldaps_cls/common/bldaps_ansi_macros.htm

The ANSI/ISO standard for the C language requires that certain predefined macros be supplied with conforming compilers. The following table lists the macros that the Intel® C++ Compiler supplies in accordance with this standard:

The compiler includes predefined macros in addition to those required by the standard. The default predefined macros differ among Windows*, Linux*, and Mac OS* X operating systems due to the default /Za compiler option on Windows. Differences also exist on Linux OS and Mac OS X as a result of the -std compiler option.

Macro Value
__DATE__ The date of compilation as a string literal in the formMmm dd yyyy.
__FILE__ A string literal representing the name of the file being compiled.
__LINE__ The current line number as a decimal constant.
__STDC__ The name __STDC__ is defined when compiling a C translation unit.
__STDC_HOSTED__ 1
__TIME__ The time of compilation as a string literal in the formhh:mm:ss.


2.2 Additional Predefined Macros(额外的预定义宏)

http://software.intel.com/sites/products/documentation/hpc/composerxe/en-us/2011Update/cpp/lin/bldaps_cls/cppug_ccl/bldaps_macros_lin.htm

The Intel® C++ Compiler includes a number of predefined macros. The compiler also includes predefined macros specified by the ISO/ANSI standard.

Predefined Macros on Systems based on IA-32 or Intel® 64 Architectures

The following table lists the predefined macros on systems based on either the IA-32 or Intel® 64 architecture.

Unless otherwise stated, the macros are supported on systems based on IA-32 architecture and also on systems based on Intel® 64 architecture.

Macro (IA-32 and Intel® 64 architecture) Value
__ARRAY_OPERATORS 1
__BASE_FILE__ Name of source file
_BOOL 1
__cilk 200; however, if -cilk-serialize or -no-intel-extensions is specified, the value is undefined.
__cplusplus 1 (with C++ compiler)
__DEPRECATED 1
__EDG__ 1
__EDG_VERSION__ EDG version
__ELF__ 1
__extension__  
__EXCEPTIONS Defined as 1 when -fno-exceptions is not used.
__GNUC__ The major version number of gcc installed on the system.
__GNUG__ The major version number of g++ installed on the system.
__gnu_linux__ 1
__GNUC_MINOR__ The minor version number of gcc or g++ installed on the system.
__GNUC_PATCHLEVEL__ The patch level version number of gcc or g++ installed on the system.
__GXX_ABI_VERSION 102
__HONOR_STD 1
__i386

Available only on systems based on IA-32 architecture.

1
__i386__

Available only on systems based on IA-32 architecture.

1
i386

Available only on systems based on IA-32 architecture.

1
__ICC Intel compiler version
__INTEL_COMPILER Intel compiler version
__INTEL_COMPILER_BUILD_DATE YYYYMMDD
__INTEL_RTTI__ Defined as 1 when -fno-rtti is not specified.
__INTEL_STRICT_ANSI__ Defined as 1 when -strict-ansi is specified.
__linux 1
__linux__ 1
linux 1
__LONG_DOUBLE_SIZE__ 80
__LONG_MAX__

Available only on systems based on Intel® 64 architecture.

9223372036854775807L
__LP64__

Available only on systems based on Intel® 64 architecture.

1
_LP64

Available only on systems based on Intel® 64 architecture.

1
_MT

Available only on systems based on Intel® 64 architecture.

1
__MMX__

Available only on systems based on Intel® 64 architecture.

1
__NO_INLINE__ 1
__NO_MATH_INLINES 1
__NO_STRING_INLINES 1
_OPENMP Defined as 200805 when -openmp is specified.
__OPTIMIZE__ 1
__pentium4 1
__pentium4__ 1
__PIC__ Defined as 1 when -fPIC is specified.
__pic__ Defined as 1 when -fPIC is specified.
_PGO_INSTRUMENT Defined as 1 when -prof-gen[x] is specified.
_PLACEMENT_DELETE 1
__PTRDIFF_TYPE__ int on IA-32 architecture;
long on Intel® 64 architecture
__REGISTER_PREFIX__  
__SIGNED_CHARS__ 1
__SIZE_TYPE__ unsigned on IA-32 architecture
; unsigned long on Intel® 64 architecture
__SSE__ Defined as 1 for processors that support SSE instructions.
__SSE2__ Defined as 1 for processors that support SSE2 instructions.
__SSE3__ Defined as 1 for processors that support SSE3 instructions.
__SSSE3__ Defined as 1 for processors that support SSSE3 instructions.
__unix 1
__unix__ 1
unix 1
__USER_LABEL_PREFIX__  
__VERSION__ Intel version string
__WCHAR_T 1
__WCHAR_TYPE__ long int on IA-32 architecture
; int on Intel® 64 architecture
__WINT_TYPE__ unsigned int
__x86_64

Available only on systems based on Intel® 64 architecture.

1
__x86_64__

Available only on systems based on Intel® 64 architecture.

1

发表评论