ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Visual C++ 2010 미리정의 된 메크로들; _WIN32; _WIN64; _M_AMD64
    Search: 카테고리 없음 카테고리 없음 2016. 2. 16. 09:46


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

    __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 /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, expresabbreviated day of the week and Date is an integer from 1 to 31.


    Macro

    Description

    _ATL_VER

    Defines the ATL version.

    In Visual Studio 2010, _ATL_VER is defined as 0x0A00.

    _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.

    // clr_ver.cpp
    // compile with: /clr
    using 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
    }
    

    __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.

    // initialize object with a read-only unique ID
    exampleClass::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.

    // 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 /GR (Enable Run-Time Type Information).

    _CPPUNWIND

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

    _DEBUG

    Defined when you compile with /LDd/MDd, and /MTd.

    _DLL

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

    __FUNCDNAME__

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

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

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

    // 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 /EP or /P 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 /EP or /P 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 <stdio.h>
    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_IX86_FP

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

    _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, in Visual Studio 2010, _MFC_VER is defined as 0x0A00.

    _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 /Ze 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 15.00.20706.01, the _MSC_VER macro evaluates to 1500.

    In Visual Studio 2010, _MSC_VER is defined as 1600.

    __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++.

    // _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.



    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











    댓글