__LINE__ __DATE__ __FILE__ __TIME__ 等宏定义解释

Names 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 below are defined with multiple values. See the following tables for more information.


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 functionasctime 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 /FC (Full Path of Source Code File in Diagnostics).

You can create your own wide string version of __FILE__ as follows:

  Copy Code
#include <stdio.h>#define WIDEN2(x) L ## x#define WIDEN(x) WIDEN2(x)#define __WFILE__ WIDEN(__FILE__)wchar_t *pwsz = __WFILE__;

int main() {}


__LINE__


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


__STDC__


Indicates full conformance with the ANSI C standard. Defined as the integer constant 1 only if the /Za 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.


Macro


Description


_ATL_VER


Defines the ATL version.


_CHAR_UNSIGNED


Default char type is unsigned. Defined when /J 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.

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


__cplusplus_cli


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

  Copy Code
// 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}


__COUNTER__


Expands to an integer starting with 0 and incrementing by 1 every time it is used in a compiland. __COUNTER__ remembers its state when using precompiled headers. If the last __COUNTER__ value was 4 after building a precompiled header (PCH), it will start with 5 on each PCH use.

__COUNTER__ lets you generate unique variable names. You can use token pasting with a prefix to make a unique name. For example:

  Copy Code
// pre_mac_counter.cpp#include <stdio.h>#define FUNC2(x,y) x##y#define FUNC1(x,y) FUNC2(x,y)#define FUNC(x) FUNC1(x,__COUNTER__)

int FUNC(my_unique_prefix);int FUNC(my_unique_prefix);

int main() {   my_unique_prefix0 = 0;   printf_s("\n%d",my_unique_prefix0);   my_unique_prefix0++;   printf_s("\n%d",my_unique_prefix0);}


__cplusplus


Defined for C++ programs only.


_CPPLIB_VER


Defined if you include any of the C++ Standard Library headers; reports which version of the Dinkumware header files are present.


_CPPRTTI


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


_CPPUNWIND


Defined for code compiled with /GX (Enable Exception Handling).


_DEBUG


Defined when compiling with /LDd, /MDd, and /MTd.


_DLL


Defined when /MD or /MDd (Multithread DLL) is specified.


__FUNCDNAME__


Valid only within a function and returns the decorated name of the enclosing function (as a string). __FUNCDNAME__ is not expanded if you use the /EPor /P compiler option.


__FUNCSIG__


Valid only within a function and returns the signature of the enclosing function (as a string). __FUNCSIG__ is not expanded if you use the /EP or /P compiler option.

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


__FUNCTION__


Valid only within a function and returns the undecorated name of the enclosing function (as a string). __FUNCTION__ is not expanded if you use the /EP or /P compiler option.


_INTEGRAL_MAX_BITS


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

  Copy Code
// integral_max_bits.cpp#include <stdio.h>int main() {   printf("%d\n", _INTEGRAL_MAX_BITS);}


_M_ALPHA


Defined for DEC ALPHA platforms (no longer supported).


_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 Values for _M_IX86 for more details.


_M_IA64


Defined for Itanium Processor Family 64-bit processors.


_M_IX86_FP


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

  • 0 if /arch was not used.
  • 1 if /arch:SSE was used.
  • 2 if /arch:SSE2 was used.
  • See /arch (Minimum CPU Architecture) 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 /clr is specified.


_MFC_VER


Defines the MFC version. For example, 0x0700 represents MFC version 7.


_MSC_EXTENSIONS


This macro is defined when compiling with the /Ze compiler option (the default). Its value, when defined, is 1.


_MSC_VER


Reports the major and minor versions of the compiler. For example, 1310 for Microsoft Visual C++ .NET 2003. 1310 represents version 13 and a 1.0 point release. The Visual C++ 2005 compiler version is 1400.

Type cl /? at the command line to see the major and minor versions of your compiler along with the build number.


__MSVC_RUNTIME_CHECKS


Defined when one of the /RTC compiler options is specified.


_MT


Defined when /MD or /MDd (Multithreaded DLL) or /MT or /MTd(Multithreaded) is specified.


_NATIVE_WCHAR_T_DEFINED


Defined when /Zc:wchar_t is used.


_OPENMP


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

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


_VC_NODEFAULTLIB


Defined when /Zl is used; see /Zl (Omit Default Library Name) for more information.


_WCHAR_T_DEFINED


Defined when /Zc:wchar_t 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 /Wp64.

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


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

时间: 2024-10-07 05:32:41

__LINE__ __DATE__ __FILE__ __TIME__ 等宏定义解释的相关文章

__FILE__,__LINE__,__DATE__,__TIME__ c++常用的预定义名字

C++有四个常用的预定义名字,分别为:__FILE__,__LINE__,__DATE__,__TIME__ __FILE__:记录文件的路径加名称 __LINE__:记录文件已经被编译的行数 __DATE__:记录文件的编译日期 __TIME__:记录文件的编译时间 可以当作变量直接使用,一般用作程序调试 例子: #include <iostream> using namespace std; int main(){     cout << "File = "

__FUNCTION__, __LINE__ 有助于debug的宏定义

__FUNCTION__, __LINE__ 今天无意之间看到一段代码,里面有这样一个片段: if (!interface) { err ("%s - error, can't find device for minor %d", __FUNCTION__, subminor); retval = -ENODEV; goto exit; } 这个__FUNCTION__干嘛的?少见(本人水平不够~),有意思~ 后面找了一下,这个是和编译器GCC相关连的宏定义,而这些宏定义的时候有助于快

宏定义的用法以及再次解释const和volatile

__I. __O .__IO是什么意思?这是ST库里面的宏定义,定义如下:#define     __I       volatile const        /*!< defines 'read only' permissions      */#define     __O     volatile                  /*!< defines 'write only' permissions     */#define     __IO    volatile      

linux C宏定义 转

写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */ typed

C语言宏定义使用技巧

写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性 等等.下面列举一些成熟软件中常用得宏定义...... 1,防止一个头文件被重复包含 #ifndef COMDEF_H #define COMDEF_H //头文件内容 #endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方便移植. typedef  unsigned char      boolean;     /* Boolean value type. */ type

VC中预处理指令与宏定义详解

刚接触到MFC编程的人往往会被MFC 向导生成的各种宏定义和预处理指令所吓倒,但是预处理和宏定义又是C语言的一个强大工具.使用它们可以进行简单的源代码控制,版本控制,预警或者完成一些特殊的功能. 一个经典的例子 使用预处理与宏定义最经典的例子莫过于加在一个头文件中以避免头文件被两次编译.试想这种的情况,有一个文件headerfile.h 它被包含在headerfile1.h中,同时在headerfile2.h 中也被包含了,现在有一个CPP文件,implement.cpp 包含了headerfi

C语言中宏定义使用方法详解

C语言中的宏替换详解 首先看一个问题: #include <stdio.h> #define    PRINT_CLINE()    printf("%d", ______) int main(void) { PRINT_CLINE(); PRINT_CLINE(); return 0; } 在横线处填上适当的代码,使得上面这段代码的输出为34. 我想一般人看到这个问题的时候头脑里都没有明确的思路来解答这个它.我看到这个问题的时候想出了各种办法来解答它,最终还是没有通过编译

C中的预编译宏定义

文章来自 http://www.uml.org.cn/c++/200902104.asp 在将一个C源程序转换为可执行程序的过程中, 编译预处理是最初的步骤. 这一步骤是由预处理器(preprocessor)来完成的. 在源流程序被编译器处理之前, 预处理器首先对源程序中的"宏(macro)"进行处理. C初学者可能对预处理器没什么概念, 这是情有可原的: 一般的C编译器都将预处理, 汇编, 编译, 连接过程集成到一起了. 编译预处理往往在后台运行. 在有的C编译器中, 这些过程统统由

C++ 内置宏定义 与 预编译指令

内置宏和预编译指令, 在代码调试.单元测试.跨平台代码中经常会用到.这里记录一下. 1. 内置宏 (文件名,当前行号,当前日期,当前时间,当前执行方法名) __FILE____LINE____DATE____TIME__ __FUNCTION__ 2.预编译指令 可以防止头文件被多次引用 可以方便解决代码跨平台编译问题 可以根据自定义变量灵活执行程序 等等,许多好处 效果可以看代码实例: test.h 1 #ifndef __TEST_H 2 #define __TEST_H 3 4 #incl