(http://docwiki.embarcadero.com/RADStudio/XE3/en/Predefined_Macros)
The C++ compiler predefines certain global identifiers, known as manifest constants. Most global identifiers begin and end with two underscores (__).
Note: For readability, underscores are often separated by a single blank space. In your source code, you should never insert whitespace between underscores.
For macros whose value takes the form of 0x0nnn, the version number (nnn) is determined by the version number of the associated C++ compiler executable. Beginning with the XE release, you can verify the version number using the --version option to BCC32.EXE.
Macro | Value | Description |
---|---|---|
__APPLE__ | Defined only in compilers that support cross compiling with a target of MAC OSX. See BCCOSX.EXE, the C++ Cross Compiler for OS X. | |
__BCOPT__ | 1 | Defined only in compilers that support optimization, therefore always defined. |
__BCPLUSPLUS__ | Values are listed in C++ Compiler Versions in this topic. | Defined if you've selected C++ compilation; will increase in later releases. |
__BOOL__ | 1 | Indicates that the bool keyword is accepted. |
__BORLANDC__ | Values are listed in C++ Compiler Versions in this topic. | Version number. |
__CDECL__ | 1 | Defined if Calling Convention is set to cdecl; otherwise undefined. |
_CHAR_UNSIGNED | 1 | Undefined by default. Using the -K switch to make the default character unsigned causes this macro to be defined. Ultimately, the -K option controls how a char is extended when converted to an int. By default, the compiler sign-extends, but if you enable _CHAR_UNSIGNED_, then the compiler zero-extends characters when converting to int. |
_clang_ | 1 | Defined if BCC64 is in use. See Clang Builtin Macros. |
__CODEGEARC__ | Values are listed in C++ Compiler Versions and in this topic. | Version number. |
__CODEGEARC_VERSION__ |
| This internal macro expands to an integer that encodes the compiler's major version, minor version, and an internal number. See Example of __CODEGEARC_VERSION__ Macro. |
__CODEGUARD__ | Defined whenever one of the CodeGuard compiler options is used; otherwise it is undefined. | |
__CONSOLE__ | 1 | When defined, the macro indicates that the program is a console application. |
_CPPUNWIND | 1 | Enable stack unwinding. This is true by default; use -xd-!ALink(OSCGExceptions1) to disable. |
__cplusplus | 1 | Defined if in C++ mode; otherwise, undefined. |
__DATE__ | String literal | Date when processing began on the current file. |
__DLL__ | 1 | Defined whenever the -WD compiler option is used; otherwise it is undefined. |
__FILE__ | String literal | Name of the current file being processed. |
__FLAT__ | 1 | Defined when compiling in 32-bit flat memory model. |
__FUNC__ or__FUNCTION__ | String literal | Name of the current function being processed. More details. |
__LINE__ | Decimal constant | Number of the current source file line being processed. |
__MACH__ | Defined only in compilers that support cross compiling with a target of MAC OSX. | |
_M_IX86 | 0x12c | Always defined. The default value is 300. You can change the value to 400 or 500 by using the /4 or /5 compiler options. |
__MT__ | 1 | Defined only if the -tWM option is used. It specifies that the multithread library is to be linked. |
__PASCAL__ | 1 | Defined if Calling Convention is set to Pascal; otherwise undefined. |
_PUSHPOP_SUPPORTED | 1 | Always defined; allows Microsoft standard headers to use push and pop to verify whether a feature is supported. |
_STDCALL_SUPPORTED | 1 | Always defined; defines the Microsoft stdcall calling convention. |
__STDC__ | 1 | Defined if you compile with the -A compiler option; otherwise, it is undefined. |
__TCPLUSPLUS__ | Values are listed in C++ Compiler Versions in this topic. | Version number. |
__TEMPLATES__ | 1 | Defined as 1 for C++ files (meaning that templates are supported); otherwise, it is undefined. |
__TIME__ | String literal | Time when processing began on the current file. |
__TLS__ | 1 | Thread Local Storage. Always true. |
__TURBOC__ | Values are listed in C++ Compiler Versions and in this topic. | Will increase in later releases. |
_UNICODE and UNICODE | Defined for C++ programs that use the VCL. | |
_WCHAR_T | Defined only for C++ programs to indicate that wchar_t is an intrinsically defined data type. | |
_WCHAR_T_DEFINED | Defined only for C++ programs to indicate that wchar_t is an intrinsically defined data type. | |
_Windows | 1 | Defined when compiling on the Windows platform. |
__WIN32__ | 1 | Defined for console and GUI applications on the 32-bit Windows platform. |
_WIN64 | 1 | Defined for console and GUI applications on the 64-bit Windows platform. |
Note: The predefined macros __DATE__, __FILE__ , __FUNC__, __LINE__, __STDC__, and __TIME__ cannot be redefined or undefined.
C++ Compiler Versions in Predefined Macros
The macros defined for the C++ compiler (such as __CODEGEARC__) have the following version numbers:
- 0x0570 for BDS 2006
- 0x0590 for C++Builder 2007
- 0x0591 for update 1 to C++Builder 2007
- 0x0592 for RAD Studio 2007
- 0x0593 for the December update to RAD Studio 2007
- 0x0610 for C++Builder 2009 and for C++Builder 2009 Update 1
- 0x0620 for C++Builder 2010 and for C++Builder 2010 Update 1
- 0x0621 for C++Builder 2010 Update 2
- 0x0630 for C++Builder XE
- 0x0631 for C++Builder XE Update 1
- 0x0640 for C++Builder XE2
- 0x0650 for C++Builder XE3
See also Compiler Versions.
Macros Defined Elsewhere
The following macros are defined for backwards-compatibility when you
#include System.hpp
:Macro | Value | Description |
---|---|---|
ANSISTRING_AS_TEMPLATE | AnsiString type is defined as a template class, AnsiString<T>. | |
_STRINGCHECKS_OFF (no longer supported) | In past releases, C++ programs expected the Delphi compiler to not set the STRINGCHECKS directive. The Delphi compiler no longer supports the STRINGCHECKS directive, so the related _STRINGCHECKS_OFF C++ macro is unnecessary and is no longer set. Therefore if you are migrating pre-2009 code to the current version, you need to update the event-handler signature (because a pre-2009 event handler expects AnsiString, while the run time now sends UnicodeString). See Unicode in RAD Studio. |
What is extra, the on line casino makes use of the newest SSL-encryption that ensures safety and confidentiality for his or her prospects. 1xBet on line casino was founded in 2007 and in 카지노 사이트 the final couple of years managed to achieve the higher hand of the native market. The deal will see Ocado and Lotte develop a network of robotic warehouses, or Customer Fulfilment Centres as Ocado calls them, across the South Korean market to expand the retailer’s on-line shopping enterprise.
ReplyDelete