I used n1570 for C11: http://www.iso-9899.info/n1570.html and n3242 for C++11: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3242.pdf
C11: stdalign.h: 7.15.1: The header <stdalign.h> defines four macros. 7.15.2: The macro alignas expands to _Alignas; the macro alignof expands to _Alignof. 7.15.3: The remaining macros are suitable for use in #if preprocessing directives. They are __alignas_is_defined and __alignof_is_defined which both expand to the integer constant 1. stdnoreturn.h: 7.23.1: The header <stdnoreturn.h> defines the macro noreturn which expands to _Noreturn. C++11: stdalign.h: 18.10.2: The contents of these headers are the same as the Standard C library headers (...) <stdalign.h> (...) respectively, with the following changes: 18.10.6: The header <cstdalign> and the header <stdalign.h> shall not define a macro named alignas. No mention of stdnoreturn.h. Note that C++11 does not mention "alignof", even though it mentions "alignas". Both are defined as keywords (Table 4 - Keywords). A commit in Clang has this to say: libstdc++'s <cstdalign> #includes <stdalign.h> and expects it to guard against being included in C++. Don't define alignof or alignas in this case. Note that the C++11 standard is broken in various ways here (it refers to the contents of <stdalign.h> in C99, where that header did not exist, and doesn't mention the alignas macro at all), but we do our best to do what it intended. So I went ahead and followed Clang, not C++11. Clang's stdnoreturn.h differs from the standard as well, as it defines "__noreturn_is_defined". I couldn't find a reason, so I didn't. stdnoreturn.h isn't mentioned in C++11, so skip the #ifndef __cplusplus. The commit message in FreeBSD that contains these files notes: "Even though these header files make little sense to me, they are part of the standard.". I believe these headers are defined to preserve backwards compatibility. There might exist code where the keywords "alignas", "alignof", and "noreturn" are already defined. The standard therefore picked keywords from the reserved namespace, i.e. ones starting with an underscore and an upper case letter and provided the headers for convenience. And also make whitespace in stdbool.h consistent with other files. Index: include/Makefile =================================================================== RCS file: /cvs/src/include/Makefile,v retrieving revision 1.208 diff -u -p -r1.208 Makefile --- include/Makefile 18 Nov 2015 16:48:34 -0000 1.208 +++ include/Makefile 30 Dec 2015 16:43:53 -0000 @@ -17,8 +17,8 @@ FILES= a.out.h ar.h asr.h assert.h bitst md5.h memory.h ndbm.h netdb.h netgroup.h nlist.h nl_types.h \ paths.h poll.h pwd.h ranlib.h readpassphrase.h regex.h \ resolv.h rmd160.h search.h setjmp.h sha1.h sha2.h signal.h siphash.h \ - sndio.h \ - spawn.h stdbool.h stddef.h stdio.h stdlib.h string.h strings.h struct.h \ + sndio.h spawn.h stdalign.h stdbool.h stddef.h stdio.h stdlib.h \ + stdnoreturn.h string.h strings.h struct.h \ sysexits.h tar.h tgmath.h time.h ttyent.h unistd.h utime.h \ utmp.h uuid.h vis.h wchar.h wctype.h Index: include/stdalign.h =================================================================== RCS file: include/stdalign.h diff -N include/stdalign.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ include/stdalign.h 30 Dec 2015 16:43:53 -0000 @@ -0,0 +1,18 @@ +/* $OpenBSD$ */ + +/* + * Public domain. + */ + +#ifndef _STDALIGN_H_ +#define _STDALIGN_H_ + +#ifndef __cplusplus +#define alignas _Alignas +#define alignof _Alignof +#endif + +#define __alignas_is_defined 1 +#define __alignof_is_defined 1 + +#endif /* _STDALIGN_H_ */ Index: include/stdbool.h =================================================================== RCS file: /cvs/src/include/stdbool.h,v retrieving revision 1.7 diff -u -p -r1.7 stdbool.h --- include/stdbool.h 4 Sep 2015 23:47:09 -0000 1.7 +++ include/stdbool.h 30 Dec 2015 16:43:53 -0000 @@ -1,4 +1,4 @@ -/* $OpenBSD: stdbool.h,v 1.7 2015/09/04 23:47:09 daniel Exp $ */ +/* $OpenBSD: stdbool.h,v 1.7 2015/09/04 23:47:09 daniel Exp $ */ /* * Written by Marc Espie, September 25, 1999 Index: include/stdnoreturn.h =================================================================== RCS file: include/stdnoreturn.h diff -N include/stdnoreturn.h --- /dev/null 1 Jan 1970 00:00:00 -0000 +++ include/stdnoreturn.h 30 Dec 2015 16:43:53 -0000 @@ -0,0 +1,12 @@ +/* $OpenBSD$ */ + +/* + * Public domain. + */ + +#ifndef _STDNORETURN_H_ +#define _STDNORETURN_H_ + +#define noreturn _Noreturn + +#endif /* _STDNORETURN_H_ */ -- Michal Mazurek