about summary refs log tree commit diff
path: root/socket/sys
diff options
context:
space:
mode:
Diffstat (limited to 'socket/sys')
-rw-r--r--socket/sys/socket.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/socket/sys/socket.h b/socket/sys/socket.h
index 3124de0e34..f445b4c77b 100644
--- a/socket/sys/socket.h
+++ b/socket/sys/socket.h
@@ -45,9 +45,11 @@ struct osockaddr
 
 /* This is the type we use for generic socket address arguments.
 
-   With GCC 2.7 and later, the funky union causes redeclarations or uses with
-   any of the listed types to be allowed without complaint.  */
-#if	(!defined (__GNUC__) || __GNUC__ < 2 || \
+   With GCC 2.7 and later, the funky union causes redeclarations or
+   uses with any of the listed types to be allowed without complaint.
+   G++ 2.7 does not support transparent unions so there we want the
+   old-style declaration, too.  */
+#if	(!defined (__GNUC__) || __GNUC__ < 2 || defined(__cplusplus) || \
 	 (__GNUC__ == 2 && __GNUC_MINOR__ < 7))
 #define	__SOCKADDR_ARG		struct sockaddr *
 #define	__CONST_SOCKADDR_ARG	__const struct sockaddr *