The Open Group Base Specifications Issue 7
IEEE Std 1003.1-2008, 2016 Edition
Copyright © 2001-2016 The IEEE and The Open Group

#### NAME

> locale.h - category macros

#### SYNOPSIS

> `#include <locale.h>`

#### DESCRIPTION

> [CX] Some of the functionality described on this reference page extends the ISO C standard. Applications shall define the appropriate feature test macro (see XSH The Compilation Environment ) to enable the visibility of these symbols in this header.

> The <locale.h> header shall define the lconv structure, which shall include at least the following members. (See the definitions of LC_MONETARY in LC_MONETARY and LC_NUMERIC.)

>     char    *currency_symbol
>     char    *decimal_point
>     char     frac_digits
>     char    *grouping
>     char    *int_curr_symbol
>     char     int_frac_digits
>     char     int_n_cs_precedes
>     char     int_n_sep_by_space
>     char     int_n_sign_posn
>     char     int_p_cs_precedes
>     char     int_p_sep_by_space
>     char     int_p_sign_posn
>     char    *mon_decimal_point
>     char    *mon_grouping
>     char    *mon_thousands_sep
>     char    *negative_sign
>     char     n_cs_precedes
>     char     n_sep_by_space
>     char     n_sign_posn
>     char    *positive_sign
>     char     p_cs_precedes
>     char     p_sep_by_space
>     char     p_sign_posn
>     char    *thousands_sep

> The <locale.h> header shall define NULL (as described in <stddef.h>) and at least the following as macros:

> LC_ALL
> LC_COLLATE
> LC_CTYPE
> [CX]
> LC_MESSAGES
> LC_MONETARY
> LC_NUMERIC
> LC_TIME

> which shall expand to integer constant expressions with distinct values for use as the first argument to the setlocale() function.

> Additional macro definitions, beginning with the characters LC_ and an uppercase letter, may also be specified by the implementation.

> [CX] The <locale.h> header shall contain at least the following macros representing bitmasks for use with the newlocale() function for each supported locale category: LC_COLLATE_MASK LC_CTYPE_MASK LC_MESSAGES_MASK LC_MONETARY_MASK LC_NUMERIC_MASK LC_TIME_MASK

> In addition, a macro to set the bits for all categories set shall be defined: LC_ALL_MASK

> The <locale.h> header shall define LC_GLOBAL_LOCALE, a special locale object descriptor used by the duplocale() and uselocale() functions.

> The <locale.h> header shall define the locale_t type, representing a locale object.

> The following shall be declared as functions and may also be defined as macros. Function prototypes shall be provided for use with ISO C standard compilers.

>     [CX]
>     locale_t      duplocale(locale_t);
>     void          freelocale(locale_t);

>     struct lconv *localeconv(void);
>     [CX]
>     locale_t      newlocale(int, const char *, locale_t);

>     char         *setlocale(int, const char *);
>     [CX]
>     locale_t      uselocale (locale_t);

The following sections are informative.

#### APPLICATION USAGE

> None.

#### RATIONALE

> It is suggested that each category macro name for use in setlocale() have a corresponding macro name ending in _MASK for use in newlocale().

#### FUTURE DIRECTIONS

> None.

#### SEE ALSO

> Environment Variables, <stddef.h>

> XSH duplocale, freelocale , localeconv, newlocale, setlocale, uselocale

#### CHANGE HISTORY

> First released in Issue 3.

> Included for alignment with the ISO C standard.

#### Issue 6

> The lconv structure is expanded with new members (int_n_cs_precedes, int_n_sep_by_space, int_n_sign_posn, int_p_cs_precedes, int_p_sep_by_space, and int_p_sign_posn) for alignment with the ISO/IEC 9899:1999 standard.

> Extensions beyond the ISO C standard are marked.

#### Issue 7

> The duplocale(), freelocale(), newlocale(), and uselocale() functions are added from The Open Group Technical Standard, 2006, Extended API Set Part 4.

> This reference page is clarified with respect to macros and symbolic constants.

> POSIX.1-2008, Technical Corrigendum 1, XBD/TC1-2008/0060 [301,427] is applied.

> POSIX.1-2008, Technical Corrigendum 2, XBD/TC2-2008/0062 [781] is applied.

End of informative text.

return to top of page

UNIX ® is a registered Trademark of The Open Group.
POSIX ® is a registered Trademark of The IEEE.
Copyright © 2001-2016 The IEEE and The Open Group, All Rights Reserved
[ Main Index | XBD | XSH | XCU | XRAT ]