CVSROOT:        /cvs
Module name:    src
Changes by:     schwa...@cvs.openbsd.org        2023/09/05 17:16:01

Modified files:
        include        : uchar.h 

Log message:
According to the C11 standard, char32_t and char16_t are not part
of the C language but are part of the C library and have to be
declared in <uchar.h> - see paragraph 7.28.2.

In stark contrast, according to the C++11 standard, char32_t and char16_t
are part of the C++ language, namely, keywords - see paragraph 2.12.1.
Consequently, they must not be declared in a header file.

To resolve this vile contradiction, use the predefined macro __cplusplus
to find out which language is in use for the current compilation unit -
see C11 paragraph 6.10.8.3 and C++11 paragraph 16.8.1.

Reminded of the problem by naddy@.
OK naddy@ who tested in make build / make release.
Looks reasonable to millert@.

Reply via email to