--- a/regex/regex.h
+++ b/regex/regex.h
@@ -42,16 +42,12 @@
 #ifndef _REGEX_H_
 #define	_REGEX_H_
 
-#ifdef WIN32
 #include <sys/types.h>
 #define __const
 #define __BEGIN_DECLS
 #define __END_DECLS
 #define __P(_X) _X
-#else
-#include <sys/cdefs.h>
 #define __stdcall
-#endif
 
 /* types */
 typedef off_t regoff_t;
@@ -106,12 +102,16 @@ typedef struct {
 #define	REG_LARGE	01000	/* force large representation */
 #define	REG_BACKR	02000	/* force use of backref code */
 
-__BEGIN_DECLS
+#ifdef __cplusplus
+extern "C" {
+#endif
 int	__stdcall regcomp __P((regex_t *, const char *, int));
 size_t	__stdcall regerror __P((int, const regex_t *, char *, size_t));
 int	__stdcall regexec __P((const regex_t *,
 	    const char *, size_t, regmatch_t [], int));
 void	__stdcall regfree __P((regex_t *));
-__END_DECLS
+#ifdef __cplusplus
+}
+#endif
 
 #endif /* !_REGEX_H_ */