summaryrefslogtreecommitdiff
path: root/string
diff options
context:
space:
mode:
Diffstat (limited to 'string')
-rw-r--r--string/string.h8
-rw-r--r--string/strings.h8
2 files changed, 12 insertions, 4 deletions
diff --git a/string/string.h b/string/string.h
index ecc3fef1bd..33d01ad71c 100644
--- a/string/string.h
+++ b/string/string.h
@@ -31,8 +31,12 @@ __BEGIN_DECLS
#define __need_NULL
#include <stddef.h>
-/* Tell the caller that we provide correct C++ prototypes. */
-#if defined __cplusplus && __GNUC_PREREQ (4, 4)
+/* Provide correct C++ prototypes, and indicate this to the caller. This
+ requires a compatible C++ standard library. As a heuristic, we provide
+ these when the compiler indicates full conformance with C++98 or later,
+ and for older GCC versions that are known to provide a compatible
+ libstdc++. */
+#if defined __cplusplus && (__cplusplus >= 199711L || __GNUC_PREREQ (4, 4))
# define __CORRECT_ISO_CPP_STRING_H_PROTO
#endif
diff --git a/string/strings.h b/string/strings.h
index dad0a04467..0d2b5bf2a7 100644
--- a/string/strings.h
+++ b/string/strings.h
@@ -27,8 +27,12 @@
# define __need_size_t
# include <stddef.h>
-/* Tell the caller that we provide correct C++ prototypes. */
-# if defined __cplusplus && __GNUC_PREREQ (4, 4)
+/* Provide correct C++ prototypes, and indicate this to the caller. This
+ requires a compatible C++ standard library. As a heuristic, we provide
+ these when the compiler indicates full conformance with C++98 or later,
+ and for older GCC versions that are known to provide a compatible
+ libstdc++. */
+# if defined __cplusplus && (__cplusplus >= 199711L || __GNUC_PREREQ (4, 4))
# define __CORRECT_ISO_CPP_STRINGS_H_PROTO
# endif