mirror of
https://sourceware.org/git/glibc.git
synced 2025-11-30 11:41:39 +03:00
stdlib: Do not define once_flag, ONCE_FLAG_INIT for C++
The definition of once_flag conflicts with std::once_flag in
if “using namespace std;” is active.
Updates commit a7ddbf456d
("Add once_flag, ONCE_FLAG_INIT and call_once to stdlib.h for C23").
Suggested-by: Jonathan Wakely <jwakely@redhat.com>
Reviewed-by: Collin Funk <collin.funk1@gmail.com>
This commit is contained in:
@@ -23,8 +23,15 @@ POSIX threads.
|
||||
This section describes the @glibcadj{} ISO C threads implementation.
|
||||
To have a deeper understanding of this API, it is strongly recommended
|
||||
to read ISO/IEC 9899:2011, section 7.26, in which ISO C threads were
|
||||
originally specified. All types and function prototypes are declared
|
||||
in the header file @file{threads.h}.
|
||||
originally specified.
|
||||
|
||||
All types and function prototypes are declared in the header file
|
||||
@file{threads.h}. When compiling for C, some functionality is also
|
||||
available in @file{stdlib.h}.
|
||||
|
||||
It is recommended that GNU systems use the functionality in
|
||||
@file{pthread.h} instead of @file{thread.h}, as they are more portable
|
||||
between C and C++.
|
||||
|
||||
@menu
|
||||
* ISO C Threads Return Values:: Symbolic constants that represent a
|
||||
@@ -203,11 +210,17 @@ called once in the presence of multiple, potentially calling threads.
|
||||
@deftp {Data Type} once_flag
|
||||
@standards{C11, threads.h}
|
||||
A complete object type capable of holding a flag used by @code{call_once}.
|
||||
|
||||
As of C23, @code{once_flag} is also defined in @file{stdlib.h},
|
||||
but only for C, not for C++.
|
||||
@end deftp
|
||||
|
||||
@defvr Macro ONCE_FLAG_INIT
|
||||
@standards{C11, threads.h}
|
||||
This value is used to initialize an object of type @code{once_flag}.
|
||||
|
||||
As of C23, @code{ONCE_FLAG_INIT} is also defined in @file{stdlib.h},
|
||||
but only for C, not for C++.
|
||||
@end defvr
|
||||
|
||||
@deftypefun void call_once (once_flag *@var{flag}, void (*@var{func}) (void))
|
||||
|
||||
@@ -1159,11 +1159,13 @@ extern int ttyslot (void) __THROW;
|
||||
#endif
|
||||
|
||||
#if __GLIBC_USE (ISOC23)
|
||||
# ifndef __cplusplus
|
||||
# include <bits/types/once_flag.h>
|
||||
|
||||
/* Call function __FUNC exactly once, even if invoked from several threads.
|
||||
All calls must be made with the same __FLAGS object. */
|
||||
extern void call_once (once_flag *__flag, void (*__func)(void));
|
||||
# endif /* !__cplusplus */
|
||||
|
||||
/* Return the alignment of P. */
|
||||
extern size_t memalignment (const void *__p);
|
||||
|
||||
Reference in New Issue
Block a user