RAD Studio
ContentsIndex
PreviousUpNext
Predefined Macros

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

Macro 
Value 
Description 
__BCOPT__  
1  
Defined only in compilers that support optimization, therefore always defined.  
__BCPLUSPLUS__  
  • 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
 
Defined if you've selected C++ compilation; will increase in later releases.  
__BOOL__ 
Indicates that the bool keyword is accepted. 
__BORLANDC__  
  • 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
 
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.  
__CODEGEARC__  
0x0610 for C++Builder 2009  
Version number.  
__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__  
String literal  
Name of the current function being processed. More details.  
__LINE__  
Decimal constant  
Number of the current source file line being processed.  
_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__  
0x0570
0x0610 for C++Builder 2009  
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__  
  • 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
 
Will increase in later releases.  
_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 Windows platform.  

Note: The predefined macros __DATE__
, __FILE__ , __FUNC__, __LINE__, __STDC__, and __TIME__ cannot be redefined or undefined.

Copyright(C) 2009 Embarcadero Technologies, Inc. All Rights Reserved.
What do you think about this topic? Send feedback!