博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VS预定义宏
阅读量:6993 次
发布时间:2019-06-27

本文共 9540 字,大约阅读时间需要 31 分钟。

Predefined Macros

Visual Studio 2013
 
Other Versions
 
0 out of 1 rated this helpful 
 

Lists the predefined ANSI C and Microsoft C++ implementation macros.

The compiler recognizes predefined ANSI C macros, and the Microsoft C++ implementation provides several more. These macros take no arguments and cannot be redefined. Some of the predefined macros listed in this article are defined with multiple values.

ANSI-Compliant Predefined Macros

Macro

Description

__DATE__

The compilation date of the current source file. The date is a string literal of the form Mmm dd yyyy. The month name Mmm is the same as for dates generated by the library function asctime declared in TIME.H.

__FILE__

The name of the current source file. __FILE__ expands to a string surrounded by double quotation marks. To ensure that the full path to the file is displayed, use .

__LINE__

The line number in the current source file. The line number is a decimal integer constant. It can be changed with a #line directive.

__STDC__

Indicates full conformance with the ANSI C standard. Defined as the integer constant 1 only if the  compiler option is given and you are not compiling C++ code; otherwise is undefined.

__TIME__

The most recent compilation time of the current source file. The time is a string literal of the form hh:mm:ss.

__TIMESTAMP__

The date and time of the last modification of the current source file, expressed as a string literal in the form Ddd Mmm Date hh:mm:ss yyyy, where Ddd is the abbreviated day of the week and Date is an integer from 1 to 31.

Microsoft-Specific Predefined Macros

Macro

Description

_ATL_VER

Defines the ATL version.

 

__AVX__

Defined when /arch:AVX is specified.

_CHAR_UNSIGNED

Default char type is unsigned. Defined when  is specified.

__CLR_VER

Defines the version of the common language runtime used when the application was compiled. The value returned will be in the following format:

Mmmbbbbb

where,

  • M is the major version of the runtime

  • mm is the minor version of the runtime

  • bbbbb is the build number.

 
 
// clr_ver.cpp// compile with: /clrusing namespace System;int main() {   Console::WriteLine(__CLR_VER);}

__cplusplus_cli

Defined when you compile with /clr/clr:pure, or /clr:safe. Value of __cplusplus_cli is 200406. __cplusplus_cli is in effect throughout the translation unit.

 
 
// cplusplus_cli.cpp// compile with: /clr#include "stdio.h"int main() {   #ifdef __cplusplus_cli      printf("%d\n", __cplusplus_cli);   #else      printf("not defined\n");   #endif}

__cplusplus_winrt

Defined when you use the /ZW option to compile. The value of __cplusplus_winrt is 201009.

__COUNTER__

Expands to an integer starting with 0 and incrementing by 1 every time it is used in a source file or included headers of the source file. __COUNTER__remembers its state when you use precompiled headers.

The following example uses __COUNTER__ to assign unique identifiers to three different objects of the same type.

First, assume the following class definition. The constructor takes an integer as a parameter.

C++
 
// initialize object with a read-only unique IDexampleClass::exampleClass(int nID){	m_nID = nID;}int exampleClass::GetID(){	return m_nID;}

In main, the application declares three objects of type exampleClass, using __COUNTER__ as the unique identifier parameter.

C++
 
// Demonstration of __COUNTER__, assigns unique identifiers to //  different objects of the same type int main(int argc, char** argv){	// __COUNTER__ is initially defined as 0	exampleClass e1(__COUNTER__);	// having been referenced, __COUNTER__ is now defined as 1	exampleClass e2(__COUNTER__);	// __COUNTER__ is now defined as 2	exampleClass e3(__COUNTER__);	printf("e1 ID: %i\n", e1.GetID());	printf("e2 ID: %i\n", e2.GetID());	printf("e3 ID: %i\n", e3.GetID());	// Output 	// ------------------------------ 	// e1 ID: 0 	// e2 ID: 1 	// e3 ID: 2 	return 0;}

__cplusplus

Defined for C++ programs only.

_CPPRTTI

Defined for code compiled with  (Enable Run-Time Type Information).

_CPPUNWIND

Defined for code compiled by using one of the  flags.

_DEBUG

Defined when you compile with , , and .

_DLL

Defined when  (Multithreaded DLL) is specified.

__FUNCDNAME__

Valid only in a function. Defines the  of the enclosing function as a string.

__FUNCDNAME__ is not expanded if you use the  or  compiler option.

The following example uses the __FUNCDNAME____FUNCSIG__, and __FUNCTION__ macros to display function information.

C++
 
// Demonstrates functionality of __FUNCTION__, __FUNCDNAME__, and __FUNCSIG__ macros void exampleFunction(){	printf("Function name: %s\n", __FUNCTION__);	printf("Decorated function name: %s\n", __FUNCDNAME__);	printf("Function signature: %s\n", __FUNCSIG__);		// Sample Output 	// ------------------------------------------------- 	// Function name: exampleFunction 	// Decorated function name: ?exampleFunction@@YAXXZ 	// Function signature: void __cdecl exampleFunction(void)}

__FUNCSIG__

Valid only in a function. Defines the signature of the enclosing function as a string.

__FUNCSIG__ is not expanded if you use the  or  compiler option.

On a 64-bit operating system, the calling convention is __cdecl by default.

See __FUNCDNAME__ for an example.

__FUNCTION__

Valid only in a function. Defines the undecorated name of the enclosing function as a string.

__FUNCTION__ is not expanded if you use the  or  compiler option.

See __FUNCDNAME__ for an example.

_INTEGRAL_MAX_BITS

Reports the maximum size (in bits) for an integral type.

 
 
// integral_max_bits.cpp#include 
int main() { printf("%d\n", _INTEGRAL_MAX_BITS);}

_M_ALPHA

Defined for DEC ALPHA platforms (no longer supported).

_M_AMD64

Defined for x64 processors.

_M_CEE

Defined for a compilation that uses any form of /clr (/clr:oldSyntax/clr:safe, for example).

_M_CEE_PURE

Defined for a compilation that uses /clr:pure.

_M_CEE_SAFE

Defined for a compilation that uses /clr:safe.

_M_IX86

Defined for x86 processors. See the Values for _M_IX86 table below for more information. This is not defined for x64 processors.

_M_IA64

Defined for Itanium Processor Family 64-bit processors.

_M_ARM_FP

Expands to a value indicating which /arch compiler option was used:

  • In the range 30-39 if no /arch ARM option was specified, indicating the default architecture for ARM was used (VFPv3).

  • In the range 40-49 if /arch:VFPv4 was used.

  • See  for more information.

_M_IX86_FP

Expands to a value indicating which /arch compiler option was used:

  • 0 if /arch:IA32 was used.

  • 1 if /arch:SSE was used.

  • 2 if /arch:SSE2 or /arch:AVX was used. This value is the default if /arch was not specified. When /arch:AVX is specified, the macro __AVX__ is also defined.

  • See  for more information.

_M_MPPC

Defined for Power Macintosh platforms (no longer supported).

_M_MRX000

Defined for MIPS platforms (no longer supported).

_M_PPC

Defined for PowerPC platforms (no longer supported).

_M_X64

Defined for x64 processors.

_MANAGED

Defined to be 1 when  is specified.

_MFC_VER

Defines the MFC version.

_MSC_BUILD

Evaluates to the revision number component of the compiler's version number. The revision number is the fourth component of the period-delimited version number. For example, if the version number of the Visual C++ compiler is 15.00.20706.01, the _MSC_BUILD macro evaluates to 1.

_MSC_EXTENSIONS

This macro is defined when you compile with the  compiler option (the default). Its value, when defined, is 1.

_MSC_FULL_VER

Evaluates to the major, minor, and build number components of the compiler's version number. The major number is the first component of the period-delimited version number, the minor number is the second component, and the build number is the third component. For example, if the version number of the Visual C++ compiler is 15.00.20706.01, the _MSC_FULL_VER macro evaluates to 150020706. Type cl /? at the command line to view the compiler's version number.

_MSC_VER

Evaluates to the major and minor number components of the compiler's version number. The major number is the first component of the period-delimited version number and the minor number is the second component.

For example, if the version number of the Visual C++ compiler is 17.00.51106.1, the _MSC_VER macro evaluates to 1700.

 

__MSVC_RUNTIME_CHECKS

Defined when one of the  compiler options is specified.

_MT

Defined when  (Multithreaded DLL) or  (Multithreaded) is specified.

_NATIVE_WCHAR_T_DEFINED

Defined when  is used.

_OPENMP

Defined when compiling with /openmp, returns an integer representing the date of the OpenMP specification implemented by Visual C++.

 
 
// _OPENMP_dir.cpp// compile with: /openmp #include 
int main() { printf("%d\n", _OPENMP);}

_VC_NODEFAULTLIB

Defined when /Zl is used; see  for more information.

_WCHAR_T_DEFINED

Defined when  is used or if wchar_t is defined in a system header file included in your project.

_WIN32

Defined for applications for Win32 and Win64. Always defined.

_WIN64

Defined for applications for Win64.

_Wp64

Defined when specifying .

As shown in following table, the compiler generates a value for the preprocessor identifiers that reflect the processor option specified.

Values for _M_IX86

Option in Development Environment

Command-Line Option

Resulting Value

Blend

/GB

_M_IX86 = 600 (Default. Future compilers will emit a different value to reflect the dominant processor.)

Pentium

/G5

_M_IX86 = 500

Pentium Pro, Pentium II, and Pentium III

/G6

_M_IX86 = 600

80386

/G3

_M_IX86 = 300

80486

/G4

_M_IX86 = 400

转载于:https://www.cnblogs.com/Dennis-mi/articles/3539445.html

你可能感兴趣的文章
XSS注入方式和逃避XSS过滤的常用方法(整理)
查看>>
5. 最长回文子串
查看>>
[coursera] 面试前准备
查看>>
静态页跨页面传值
查看>>
.net core iis配置
查看>>
C#根据屏幕分辨率改变图片尺寸
查看>>
【POJ 3585】Accumulation Degree
查看>>
Solr配置,schema.xml的配置,以及中文分词
查看>>
数字型谜题或算法小节
查看>>
drupal7权限控制之-如何访问未发表的node
查看>>
.NET:权限管理
查看>>
hadoop多文件输出
查看>>
【生成树,堆】【CF1095F】 Make It Connected
查看>>
一文详解Spring Cloud Feign重试机制
查看>>
linux下的apue.3e安装[Unix环境高级编程]
查看>>
How do I do a bulk insert in MySQL using Node.js
查看>>
Linux系统下实现SVN + Apache + SSL服务器框架的架设
查看>>
Oracle 11g数据库详细安装步骤图解
查看>>
机器学习之特征选择---特征选择算法
查看>>
嵌入式开发之hisilicon---hi3536 处理器简介
查看>>