diff options
author | Rich Felker <dalias@aerifal.cx> | 2019-03-12 15:24:00 -0400 |
---|---|---|
committer | Rich Felker <dalias@aerifal.cx> | 2019-03-12 15:24:00 -0400 |
commit | f368d9fd26ae002fe2fce20add4cb2b806f48972 (patch) | |
tree | fc3f6dff04f55277566a5a69c1f2acfb587855b3 /include/wchar.h | |
parent | 50cd02386b152bb39a1a9d1edba3fdcda7771a4c (diff) | |
download | musl-f368d9fd26ae002fe2fce20add4cb2b806f48972.tar.gz musl-f368d9fd26ae002fe2fce20add4cb2b806f48972.tar.bz2 musl-f368d9fd26ae002fe2fce20add4cb2b806f48972.tar.xz musl-f368d9fd26ae002fe2fce20add4cb2b806f48972.zip |
make FILE a complete type for pre-C11 standard profiles
C11 removed the requirement that FILE be a complete type, which was
deemed erroneous, as part of the changes introduced by N1439 regarding
completeness of types (see footnote 6 for specific mention of FILE).
however the current version of POSIX is still based on C99 and
incorporates the old requirement that FILE be a complete type.
expose an arbitrary, useless complete type definition because the
actual object used to represent FILE streams cannot be public/ABI.
thanks to commit 13d1afa46f8098df290008c681816c9eb89ffbdb, we now have
a framework for suppressing the public complete-type definition of FILE
when stdio.h is included internally, so that a different internal
definition can be provided. this is perfectly well-defined, since the
same struct tag can refer to different types in different translation
units. it would be a problem if the implementation were accessing the
application's FILE objects or vice versa, but either would be
undefined behavior.
Diffstat (limited to 'include/wchar.h')
-rw-r--r-- | include/wchar.h | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/include/wchar.h b/include/wchar.h index 369b1e9f..88eb55b1 100644 --- a/include/wchar.h +++ b/include/wchar.h @@ -14,6 +14,10 @@ extern "C" { #define __NEED_wint_t #define __NEED_mbstate_t +#if __STDC_VERSION__ < 201112L +#define __NEED_struct__IO_FILE +#endif + #if defined(_POSIX_SOURCE) || defined(_POSIX_C_SOURCE) \ || defined(_XOPEN_SOURCE) || defined(_GNU_SOURCE) || defined(_BSD_SOURCE) #define __NEED_locale_t |