• __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 imageCopy 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 imageCopy Code
    // clr_ver.cpp
    // compile with: /clr
    using 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 imageCopy Code
    // cplusplus_cli.cpp
    // compile with: /clr
    #include "stdio.h"
    int main() {
    #ifdef __cplusplus_cli
    printf("%d ", __cplusplus_cli);
    #else
    printf("not defined ");
    #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 imageCopy 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(" %d",my_unique_prefix0);
    my_unique_prefix0++;
    printf_s(" %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 imageCopy Code
    // integral_max_bits.cpp
    #include <stdio.h>
    int main() {
    printf("%d ", _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 imageCopy Code
    // _OPENMP_dir.cpp
    // compile with: /openmp
    #include <stdio.h>
    int main() {
    printf("%d ", _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

     
  • 相关阅读:
    RabbitMQ消息队列 基本订阅/发布Demo(PHP版)
    Docker安装部署RabbitMQ
    CentOS Docker 基本操作
    new worker
    JavaScript避坑
    如何开启MySQL慢查询日志
    kinshard
    Linux shell
    Linux shell
    Linux shell
  • 原文地址:https://www.cnblogs.com/tibetanmastiff/p/4397762.html
Copyright © 2020-2023  润新知