aboutsummaryrefslogtreecommitdiff
path: root/include/ansidecl.h
diff options
context:
space:
mode:
authorNick Clifton <nickc@redhat.com>2017-07-31 15:08:32 +0100
committerNick Clifton <nickc@redhat.com>2017-07-31 15:08:32 +0100
commitc48a4d983400ade9cfba0531905245eb454afe08 (patch)
treeb92a785c760f79a74b9d6214df44c901002ce2a9 /include/ansidecl.h
parent7e5ed83b229681f57d807f79fbea3703c8121afa (diff)
downloadbinutils-c48a4d983400ade9cfba0531905245eb454afe08.zip
binutils-c48a4d983400ade9cfba0531905245eb454afe08.tar.gz
binutils-c48a4d983400ade9cfba0531905245eb454afe08.tar.bz2
Fix compile time error when using ansidecl.h with an old version of GCC.
PR 21850 * ansidecl.h (OVERRIDE): Protect check of __cplusplus value with #idef __cplusplus.
Diffstat (limited to 'include/ansidecl.h')
-rw-r--r--include/ansidecl.h30
1 files changed, 18 insertions, 12 deletions
diff --git a/include/ansidecl.h b/include/ansidecl.h
index 6c0c837..0a74098 100644
--- a/include/ansidecl.h
+++ b/include/ansidecl.h
@@ -328,22 +328,28 @@ So instead we use the macro below and test it against specific values. */
For gcc, use "-std=c++11" to enable C++11 support; gcc 6 onwards enables
this by default (actually GNU++14). */
-#if __cplusplus >= 201103
-/* C++11 claims to be available: use it. final/override were only
- implemented in 4.7, though. */
-# if GCC_VERSION < 4007
+#if defined __cplusplus
+# if __cplusplus >= 201103
+ /* C++11 claims to be available: use it. Final/override were only
+ implemented in 4.7, though. */
+# if GCC_VERSION < 4007
+# define OVERRIDE
+# define FINAL
+# else
+# define OVERRIDE override
+# define FINAL final
+# endif
+# elif GCC_VERSION >= 4007
+ /* G++ 4.7 supports __final in C++98. */
# define OVERRIDE
-# define FINAL
+# define FINAL __final
# else
-# define OVERRIDE override
-# define FINAL final
+ /* No C++11 support; leave the macros empty. */
+# define OVERRIDE
+# define FINAL
# endif
-#elif GCC_VERSION >= 4007
-/* G++ 4.7 supports __final in C++98. */
-# define OVERRIDE
-# define FINAL __final
#else
-/* No C++11 support; leave the macros empty: */
+ /* No C++11 support; leave the macros empty. */
# define OVERRIDE
# define FINAL
#endif