ICU 74.1 74.1
Macros
platform.h File Reference

Basic types for the platform. More...

#include "unicode/uconfig.h"
#include "unicode/uvernum.h"

Go to the source code of this file.

Macros

#define U_PF_UNKNOWN   0
 Unknown platform. More...
 
#define U_PF_WINDOWS   1000
 Windows. More...
 
#define U_PF_MINGW   1800
 MinGW. More...
 
#define U_PF_CYGWIN   1900
 Cygwin. More...
 
#define U_PF_HPUX   2100
 HP-UX is based on UNIX System V. More...
 
#define U_PF_SOLARIS   2600
 Solaris is a Unix operating system based on SVR4. More...
 
#define U_PF_BSD   3000
 BSD is a UNIX operating system derivative. More...
 
#define U_PF_AIX   3100
 AIX is based on UNIX System V Releases and 4.3 BSD. More...
 
#define U_PF_IRIX   3200
 IRIX is based on UNIX System V with BSD extensions. More...
 
#define U_PF_DARWIN   3500
 Darwin is a POSIX-compliant operating system, composed of code developed by Apple, as well as code derived from NeXTSTEP, BSD, and other projects, built around the Mach kernel. More...
 
#define U_PF_IPHONE   3550
 iPhone OS (iOS) is a derivative of Mac OS X. More...
 
#define U_PF_QNX   3700
 QNX is a commercial Unix-like real-time operating system related to BSD. More...
 
#define U_PF_LINUX   4000
 Linux is a Unix-like operating system. More...
 
#define U_PF_BROWSER_NATIVE_CLIENT   4020
 Native Client is pretty close to Linux. More...
 
#define U_PF_ANDROID   4050
 Android is based on Linux. More...
 
#define U_PF_FUCHSIA   4100
 Fuchsia is a POSIX-ish platform. More...
 
#define U_PF_EMSCRIPTEN   5010
 Emscripten is a C++ transpiler for the Web that can target asm.js or WebAssembly. More...
 
#define U_PF_OS390   9000
 z/OS is the successor to OS/390 which was the successor to MVS. More...
 
#define U_PF_OS400   9400
 "IBM i" is the current name of what used to be i5/OS and earlier OS/400. More...
 
#define U_PLATFORM   U_PF_UNKNOWN
 Define some things so that they can be documented. More...
 
#define CYGWINMSVC
 Defined if this is Windows with Cygwin, but using MSVC rather than gcc. More...
 
#define U_PLATFORM_USES_ONLY_WIN32_API   1
 Defines whether the platform uses only the Win32 API. More...
 
#define U_PLATFORM_HAS_WIN32_API   0
 Defines whether the Win32 API is available on the platform. More...
 
#define U_PLATFORM_HAS_WINUWP_API   0
 Defines whether target is intended for Universal Windows Platform API Set to 1 for Windows10 Release Solution Configuration. More...
 
#define U_PLATFORM_IMPLEMENTS_POSIX   0
 Defines whether the platform implements (most of) the POSIX API. More...
 
#define U_PLATFORM_IS_LINUX_BASED   0
 Defines whether the platform is Linux or one of its derivatives. More...
 
#define U_PLATFORM_IS_DARWIN_BASED   0
 Defines whether the platform is Darwin or one of its derivatives. More...
 
#define U_HAVE_STDINT_H   0
 Defines whether stdint.h is available. More...
 
#define U_HAVE_INTTYPES_H   U_HAVE_STDINT_H
 Defines whether inttypes.h is available. More...
 
#define U_HAVE_CHAR16_T   0
 Defines whether the char16_t type is available for UTF-16 and u"abc" UTF-16 string literals are supported. More...
 
#define U_GCC_MAJOR_MINOR   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define U_IS_BIG_ENDIAN   0
 Determines the endianness of the platform. More...
 
#define U_HAVE_PLACEMENT_NEW   1
 Determines whether to override placement new and delete for STL. More...
 
#define U_HAVE_DEBUG_LOCATION_NEW   0
 Define this to define the MFC debug version of the operator new. More...
 
#define UPRV_HAS_ATTRIBUTE(x)   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define UPRV_HAS_CPP_ATTRIBUTE(x)   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define UPRV_HAS_DECLSPEC_ATTRIBUTE(x)   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define UPRV_HAS_BUILTIN(x)   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define UPRV_HAS_FEATURE(x)   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define UPRV_HAS_EXTENSION(x)   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define UPRV_HAS_WARNING(x)   0
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define UPRV_NO_SANITIZE_UNDEFINED
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define U_MALLOC_ATTR
 Attribute to mark functions as malloc-like. More...
 
#define U_ALLOC_SIZE_ATTR(X)
 Attribute to specify the size of the allocated buffer for malloc-like functions. More...
 
#define U_ALLOC_SIZE_ATTR2(X, Y)
 Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers. More...
 
#define U_CPLUSPLUS_VERSION   0
 0 if no C++; 1, 11, 14, ... if C++. More...
 
#define U_FALLTHROUGH
 Annotate intentional fall-through between switch labels. More...
 
#define U_ASCII_FAMILY   0
 U_CHARSET_FAMILY is equal to this value when the platform is an ASCII based platform. More...
 
#define U_EBCDIC_FAMILY   1
 U_CHARSET_FAMILY is equal to this value when the platform is an EBCDIC based platform. More...
 
#define U_CHARSET_FAMILY   U_ASCII_FAMILY
 
#define U_CHARSET_IS_UTF8   0
 Hardcode the default charset to UTF-8. More...
 
#define U_HAVE_WCHAR_H   1
 Indicates whether <wchar.h> is available (1) or not (0). More...
 
#define U_SIZEOF_WCHAR_T   4
 U_SIZEOF_WCHAR_T==sizeof(wchar_t) More...
 
#define U_HAVE_WCSCPY   U_HAVE_WCHAR_H
 Indicates whether <wchar.h> is available (1) or not (0). More...
 
#define U_DECLARE_UTF16(string)   u ## string
 Do not use this macro because it is not defined on all platforms. More...
 
#define U_EXPORT
 
#define U_IMPORT
 
#define U_HIDDEN
 This is used to mark internal structs declared within external classes, to prevent the internal structs from having the same visibility as the class within which they are declared. More...
 
#define U_CALLCONV   U_EXPORT2
 Similar to U_CDECL_BEGIN/U_CDECL_END, this qualifier is necessary in callback function typedefs to make sure that the calling convention is compatible. More...
 
#define U_CALLCONV_FPTR
 Similar to U_CALLCONV, but only used on function pointers. More...
 

Detailed Description

Basic types for the platform.

This file used to be generated by autoconf/configure. Starting with ICU 49, platform.h is a normal source file, to simplify cross-compiling and working with non-autoconf/make build systems.

When a value in this file does not work on a platform, then please try to derive it from the U_PLATFORM value (for which we might need a new value constant in rare cases) and/or from other macros that are predefined by the compiler or defined in standard (POSIX or platform or compiler) headers.

As a temporary workaround, you can add an explicit #define for some macros before it is first tested, or add an equivalent -D macro definition to the compiler's command line.

Note: Some compilers provide ways to show the predefined macros. For example, with gcc you can compile an empty .c file and have the compiler print the predefined macros with

gcc -E -dM -x c /dev/null | sort

(You can provide an actual empty .c file rather than /dev/null. -x c++ is for C++.)

Definition in file platform.h.

Macro Definition Documentation

◆ CYGWINMSVC

#define CYGWINMSVC

Defined if this is Windows with Cygwin, but using MSVC rather than gcc.

Otherwise undefined.

Internal:
Do not use. This API is for internal use only.

Definition at line 221 of file platform.h.

◆ U_ALLOC_SIZE_ATTR

#define U_ALLOC_SIZE_ATTR (   X)

Attribute to specify the size of the allocated buffer for malloc-like functions.

Internal:
Do not use. This API is for internal use only.

Definition at line 492 of file platform.h.

◆ U_ALLOC_SIZE_ATTR2

#define U_ALLOC_SIZE_ATTR2 (   X,
 
)

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 493 of file platform.h.

◆ U_ASCII_FAMILY

#define U_ASCII_FAMILY   0

U_CHARSET_FAMILY is equal to this value when the platform is an ASCII based platform.

Character data types

Stable:
ICU 2.0

Definition at line 555 of file platform.h.

◆ U_CALLCONV

#define U_CALLCONV   U_EXPORT2

Similar to U_CDECL_BEGIN/U_CDECL_END, this qualifier is necessary in callback function typedefs to make sure that the calling convention is compatible.

This is only used for non-ICU-API functions. When a function is a public ICU API, you must use the U_CAPI and U_EXPORT2 qualifiers.

Please note, you need to use U_CALLCONV after the *.

NO : "static const char U_CALLCONV *func( . . . )" YES: "static const char* U_CALLCONV func( . . . )"

Stable:
ICU 2.0

Definition at line 866 of file platform.h.

◆ U_CALLCONV_FPTR

#define U_CALLCONV_FPTR

Similar to U_CALLCONV, but only used on function pointers.

Internal:
Do not use. This API is for internal use only.

Definition at line 877 of file platform.h.

◆ U_CHARSET_FAMILY

#define U_CHARSET_FAMILY   U_ASCII_FAMILY

These definitions allow to specify the encoding of text in the char data type as defined by the platform and the compiler. It is enough to determine the code point values of "invariant characters", which are the ones shared by all encodings that are in use on a given platform.

Those "invariant characters" should be all the uppercase and lowercase latin letters, the digits, the space, and "basic punctuation". Also, '\n', '\r', '\t' should be available.

The list of "invariant characters" is:

A-Z a-z 0-9 SPACE " % &amp; ' ( ) * + , - . / : ; < = > ? _


(52 letters + 10 numbers + 20 punc/sym/space = 82 total)

This matches the IBM Syntactic Character Set (CS 640).

In other words, all the graphic characters in 7-bit ASCII should be safely accessible except the following:

'\' <backslash>
'[' <left bracket>
']' <right bracket>
'{' <left brace>
'}' <right brace>
'^' <circumflex>
'~' <tilde>
'!' <exclamation mark>
'#' <number sign>
'|' <vertical line>
'$' <dollar sign>
'@' <commercial at>
'`' <grave accent>
Stable:
ICU 2.0

Definition at line 612 of file platform.h.

◆ U_CHARSET_IS_UTF8

#define U_CHARSET_IS_UTF8   0

Hardcode the default charset to UTF-8.

If this is set to 1, then

  • ICU will assume that all non-invariant char*, StringPiece, std::string etc. contain UTF-8 text, regardless of what the system API uses
  • some ICU code will use fast functions like u_strFromUTF8() rather than the more general and more heavy-weight conversion API (ucnv.h)
  • ucnv_getDefaultName() always returns "UTF-8"
  • ucnv_setDefaultName() is disabled and will not change the default charset
  • static builds of ICU are smaller
  • more functionality is available with the UCONFIG_NO_CONVERSION build-time configuration option (see unicode/uconfig.h)
  • the UCONFIG_NO_CONVERSION build option in uconfig.h is more usable

    Stable:
    ICU 4.2
    See also
    UCONFIG_NO_CONVERSION

Definition at line 641 of file platform.h.

◆ U_CPLUSPLUS_VERSION

#define U_CPLUSPLUS_VERSION   0

0 if no C++; 1, 11, 14, ... if C++.

Support for specific features cannot always be determined by the C++ version alone.

Internal:
Do not use. This API is for internal use only.

Definition at line 505 of file platform.h.

◆ U_DECLARE_UTF16

#define U_DECLARE_UTF16 (   string)    u ## string

Do not use this macro because it is not defined on all platforms.

Use the UNICODE_STRING or U_STRING_DECL macros instead.

Internal:
Do not use. This API is for internal use only.

Definition at line 780 of file platform.h.

◆ U_EBCDIC_FAMILY

#define U_EBCDIC_FAMILY   1

U_CHARSET_FAMILY is equal to this value when the platform is an EBCDIC based platform.

Stable:
ICU 2.0

Definition at line 561 of file platform.h.

◆ U_EXPORT

#define U_EXPORT

Symbol import-export control

Definition at line 809 of file platform.h.

◆ U_FALLTHROUGH

#define U_FALLTHROUGH

Annotate intentional fall-through between switch labels.

http://clang.llvm.org/docs/AttributeReference.html#fallthrough-clang-fallthrough

Internal:
Do not use. This API is for internal use only.

Definition at line 542 of file platform.h.

◆ U_GCC_MAJOR_MINOR

#define U_GCC_MAJOR_MINOR   0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 367 of file platform.h.

◆ U_HAVE_CHAR16_T

#define U_HAVE_CHAR16_T   0

Defines whether the char16_t type is available for UTF-16 and u"abc" UTF-16 string literals are supported.

This is a new standard type and standard string literal syntax in C++11 but has been available in some compilers before.

Internal:
Do not use. This API is for internal use only.

Definition at line 762 of file platform.h.

◆ U_HAVE_DEBUG_LOCATION_NEW

#define U_HAVE_DEBUG_LOCATION_NEW   0

Define this to define the MFC debug version of the operator new.

Stable:
ICU 3.4

Definition at line 423 of file platform.h.

◆ U_HAVE_INTTYPES_H

#define U_HAVE_INTTYPES_H   U_HAVE_STDINT_H

Defines whether inttypes.h is available.

It is a C99 standard header. We include inttypes.h where it is available but stdint.h is not.

Internal:
Do not use. This API is for internal use only.

Definition at line 347 of file platform.h.

◆ U_HAVE_PLACEMENT_NEW

#define U_HAVE_PLACEMENT_NEW   1

Determines whether to override placement new and delete for STL.

Stable:
ICU 2.6

Definition at line 409 of file platform.h.

◆ U_HAVE_STDINT_H

#define U_HAVE_STDINT_H   0

Defines whether stdint.h is available.

It is a C99 standard header. We used to include inttypes.h which includes stdint.h but we usually do not need the additional definitions from inttypes.h.

Internal:
Do not use. This API is for internal use only.

Definition at line 319 of file platform.h.

◆ U_HAVE_WCHAR_H

#define U_HAVE_WCHAR_H   1

Indicates whether <wchar.h> is available (1) or not (0).

Information about wchar support
Set to 1 by default.

Stable:
ICU 2.0

Definition at line 666 of file platform.h.

◆ U_HAVE_WCSCPY

#define U_HAVE_WCSCPY   U_HAVE_WCHAR_H

Indicates whether <wchar.h> is available (1) or not (0).

Information about wchar support
Set to 1 by default.

Stable:
ICU 2.0

Definition at line 738 of file platform.h.

◆ U_HIDDEN

#define U_HIDDEN

This is used to mark internal structs declared within external classes, to prevent the internal structs from having the same visibility as the class within which they are declared.

Internal:
Do not use. This API is for internal use only.

Definition at line 843 of file platform.h.

◆ U_IMPORT

#define U_IMPORT

Symbol import-export control

Definition at line 828 of file platform.h.

◆ U_IS_BIG_ENDIAN

#define U_IS_BIG_ENDIAN   0

Determines the endianness of the platform.

Internal:
Do not use. This API is for internal use only.

Definition at line 396 of file platform.h.

◆ U_MALLOC_ATTR

#define U_MALLOC_ATTR

Attribute to mark functions as malloc-like.

Internal:
Do not use. This API is for internal use only.

Definition at line 478 of file platform.h.

◆ U_PF_AIX

#define U_PF_AIX   3100

AIX is based on UNIX System V Releases and 4.3 BSD.

Internal:
Do not use. This API is for internal use only.

Definition at line 108 of file platform.h.

◆ U_PF_ANDROID

#define U_PF_ANDROID   4050

Android is based on Linux.

Internal:
Do not use. This API is for internal use only.

Definition at line 134 of file platform.h.

◆ U_PF_BROWSER_NATIVE_CLIENT

#define U_PF_BROWSER_NATIVE_CLIENT   4020

Native Client is pretty close to Linux.

See https://developer.chrome.com/native-client and http://www.chromium.org/nativeclient

Internal:
Do not use. This API is for internal use only.

Definition at line 132 of file platform.h.

◆ U_PF_BSD

#define U_PF_BSD   3000

BSD is a UNIX operating system derivative.

Internal:
Do not use. This API is for internal use only.

Definition at line 106 of file platform.h.

◆ U_PF_CYGWIN

#define U_PF_CYGWIN   1900

Cygwin.

Windows, calls to cygwin1.dll for Posix functions, using MSVC or GNU gcc and binutils.

Internal:
Do not use. This API is for internal use only.

Definition at line 99 of file platform.h.

◆ U_PF_DARWIN

#define U_PF_DARWIN   3500

Darwin is a POSIX-compliant operating system, composed of code developed by Apple, as well as code derived from NeXTSTEP, BSD, and other projects, built around the Mach kernel.

Darwin forms the core set of components upon which Mac OS X, Apple TV, and iOS are based. (Original description modified from WikiPedia.)

Internal:
Do not use. This API is for internal use only.

Definition at line 119 of file platform.h.

◆ U_PF_EMSCRIPTEN

#define U_PF_EMSCRIPTEN   5010

Emscripten is a C++ transpiler for the Web that can target asm.js or WebAssembly.

It provides some POSIX-compatible wrappers and stubs and some Linux-like functionality, but is not fully compatible with either.

Internal:
Do not use. This API is for internal use only.

Definition at line 145 of file platform.h.

◆ U_PF_FUCHSIA

#define U_PF_FUCHSIA   4100

Fuchsia is a POSIX-ish platform.

Internal:
Do not use. This API is for internal use only.

Definition at line 136 of file platform.h.

◆ U_PF_HPUX

#define U_PF_HPUX   2100

HP-UX is based on UNIX System V.

Internal:
Do not use. This API is for internal use only.

Definition at line 102 of file platform.h.

◆ U_PF_IPHONE

#define U_PF_IPHONE   3550

iPhone OS (iOS) is a derivative of Mac OS X.

Internal:
Do not use. This API is for internal use only.

Definition at line 121 of file platform.h.

◆ U_PF_IRIX

#define U_PF_IRIX   3200

IRIX is based on UNIX System V with BSD extensions.

Internal:
Do not use. This API is for internal use only.

Definition at line 110 of file platform.h.

◆ U_PF_LINUX

#define U_PF_LINUX   4000

Linux is a Unix-like operating system.

Internal:
Do not use. This API is for internal use only.

Definition at line 125 of file platform.h.

◆ U_PF_MINGW

#define U_PF_MINGW   1800

MinGW.

Windows, calls to Win32 API, but using GNU gcc and binutils.

Internal:
Do not use. This API is for internal use only.

Definition at line 93 of file platform.h.

◆ U_PF_OS390

#define U_PF_OS390   9000

z/OS is the successor to OS/390 which was the successor to MVS.

Internal:
Do not use. This API is for internal use only.

Definition at line 147 of file platform.h.

◆ U_PF_OS400

#define U_PF_OS400   9400

"IBM i" is the current name of what used to be i5/OS and earlier OS/400.

Internal:
Do not use. This API is for internal use only.

Definition at line 149 of file platform.h.

◆ U_PF_QNX

#define U_PF_QNX   3700

QNX is a commercial Unix-like real-time operating system related to BSD.

Internal:
Do not use. This API is for internal use only.

Definition at line 123 of file platform.h.

◆ U_PF_SOLARIS

#define U_PF_SOLARIS   2600

Solaris is a Unix operating system based on SVR4.

Internal:
Do not use. This API is for internal use only.

Definition at line 104 of file platform.h.

◆ U_PF_UNKNOWN

#define U_PF_UNKNOWN   0

Unknown platform.

Internal:
Do not use. This API is for internal use only.

Definition at line 89 of file platform.h.

◆ U_PF_WINDOWS

#define U_PF_WINDOWS   1000

Windows.

Internal:
Do not use. This API is for internal use only.

Definition at line 91 of file platform.h.

◆ U_PLATFORM

#define U_PLATFORM   U_PF_UNKNOWN

Define some things so that they can be documented.

Internal:
Do not use. This API is for internal use only.

The U_PLATFORM macro defines the platform we're on.

We used to define one different, value-less macro per platform. That made it hard to know the set of relevant platforms and macros, and hard to deal with variants of platforms.

Starting with ICU 49, we define platforms as numeric macros, with ranges of values for related platforms and their variants. The U_PLATFORM macro is set to one of these values.

Historical note from the Solaris Wikipedia article: AT&T and Sun collaborated on a project to merge the most popular Unix variants on the market at that time: BSD, System V, and Xenix. This became Unix System V Release 4 (SVR4).

Internal:
Do not use. This API is for internal use only.

Definition at line 206 of file platform.h.

◆ U_PLATFORM_HAS_WIN32_API

#define U_PLATFORM_HAS_WIN32_API   0

Defines whether the Win32 API is available on the platform.

Set to 1 for Windows/MSVC, MinGW and Cygwin.

Internal:
Do not use. This API is for internal use only.

Definition at line 250 of file platform.h.

◆ U_PLATFORM_HAS_WINUWP_API

#define U_PLATFORM_HAS_WINUWP_API   0

Defines whether target is intended for Universal Windows Platform API Set to 1 for Windows10 Release Solution Configuration.

Internal:
Do not use. This API is for internal use only.

Definition at line 262 of file platform.h.

◆ U_PLATFORM_IMPLEMENTS_POSIX

#define U_PLATFORM_IMPLEMENTS_POSIX   0

Defines whether the platform implements (most of) the POSIX API.

Set to 1 for Cygwin and most other platforms.

Internal:
Do not use. This API is for internal use only.

Definition at line 274 of file platform.h.

◆ U_PLATFORM_IS_DARWIN_BASED

#define U_PLATFORM_IS_DARWIN_BASED   0

Defines whether the platform is Darwin or one of its derivatives.

Internal:
Do not use. This API is for internal use only.

Definition at line 302 of file platform.h.

◆ U_PLATFORM_IS_LINUX_BASED

#define U_PLATFORM_IS_LINUX_BASED   0

Defines whether the platform is Linux or one of its derivatives.

Internal:
Do not use. This API is for internal use only.

Definition at line 289 of file platform.h.

◆ U_PLATFORM_USES_ONLY_WIN32_API

#define U_PLATFORM_USES_ONLY_WIN32_API   1

Defines whether the platform uses only the Win32 API.

Set to 1 for Windows/MSVC and MinGW but not Cygwin.

Internal:
Do not use. This API is for internal use only.

Definition at line 233 of file platform.h.

◆ U_SIZEOF_WCHAR_T

#define U_SIZEOF_WCHAR_T   4

U_SIZEOF_WCHAR_T==sizeof(wchar_t)

Stable:
ICU 2.0

Definition at line 734 of file platform.h.

◆ UPRV_HAS_ATTRIBUTE

#define UPRV_HAS_ATTRIBUTE (   x)    0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 430 of file platform.h.

◆ UPRV_HAS_BUILTIN

#define UPRV_HAS_BUILTIN (   x)    0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 445 of file platform.h.

◆ UPRV_HAS_CPP_ATTRIBUTE

#define UPRV_HAS_CPP_ATTRIBUTE (   x)    0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 435 of file platform.h.

◆ UPRV_HAS_DECLSPEC_ATTRIBUTE

#define UPRV_HAS_DECLSPEC_ATTRIBUTE (   x)    0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 440 of file platform.h.

◆ UPRV_HAS_EXTENSION

#define UPRV_HAS_EXTENSION (   x)    0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 455 of file platform.h.

◆ UPRV_HAS_FEATURE

#define UPRV_HAS_FEATURE (   x)    0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 450 of file platform.h.

◆ UPRV_HAS_WARNING

#define UPRV_HAS_WARNING (   x)    0

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 460 of file platform.h.

◆ UPRV_NO_SANITIZE_UNDEFINED

#define UPRV_NO_SANITIZE_UNDEFINED

Indicates whether the compiler is gcc (test for != 0), and if so, contains its major (times 100) and minor version numbers.

Compiler and environment features
If the compiler is not gcc, then U_GCC_MAJOR_MINOR == 0.

For example, for testing for whether we have gcc, and whether it's 4.6 or higher, use "#if U_GCC_MAJOR_MINOR >= 406".

Internal:
Do not use. This API is for internal use only.

Definition at line 467 of file platform.h.