aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Weimer <fweimer@redhat.com>2016-10-22 17:33:26 +0200
committerFlorian Weimer <fweimer@redhat.com>2016-10-22 17:33:26 +0200
commite37208ce86916af9510ffb9ce7b3c187986f07de (patch)
tree123e9b737d4d4db7659fd97b42b932c4591a7a61
parent7a8330c01bea0cb98654ca25e3ca5db7d48694b3 (diff)
downloadglibc-e37208ce86916af9510ffb9ce7b3c187986f07de.tar
glibc-e37208ce86916af9510ffb9ce7b3c187986f07de.tar.gz
glibc-e37208ce86916af9510ffb9ce7b3c187986f07de.tar.bz2
glibc-e37208ce86916af9510ffb9ce7b3c187986f07de.zip
math.h: Wrap C++ bits in extern "C++"
It is still common to include system header files in an extern "C" block. This means that exiting <math.h>'s own extern "C" block is not sufficient to get back to C++ mode. Use an extern "C++" wrapper instead.
-rw-r--r--ChangeLog6
-rw-r--r--math/math.h4
2 files changed, 8 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index e41c3e7330..2520c44371 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2016-10-22 Florian Weimer <fweimer@redhat.com>
+
+ * math/math.h [__cplusplus] (iszero): Wrap C++ bits in extern
+ "C++", to override a potential extern "C" directive around the
+ header file inclusion.
+
2016-10-21 Joseph Myers <joseph@codesourcery.com>
* benchtests/Makefile (CFLAGS-bench-sqrt.c): New variable.
diff --git a/math/math.h b/math/math.h
index 0220d08d8a..7c0c709523 100644
--- a/math/math.h
+++ b/math/math.h
@@ -342,7 +342,7 @@ enum
# define iszero(x) (((__typeof (x)) (x)) == 0)
# endif
# else /* __cplusplus */
-__END_DECLS
+extern "C++" {
template <class __T> inline bool
iszero (__T __val)
{
@@ -352,7 +352,7 @@ iszero (__T __val)
return __val == 0;
# endif
}
-__BEGIN_DECLS
+} /* extern C++ */
# endif /* __cplusplus */
#endif /* Use IEC_60559_BFP_EXT. */