From mboxrd@z Thu Jan 1 00:00:00 1970 X-Msuck: nntp://news.gmane.org/gmane.linux.lib.musl.general/6704 Path: news.gmane.org!not-for-mail From: =?ISO-8859-1?Q?J=F6rg?= Krause Newsgroups: gmane.linux.lib.musl.general Subject: Re: [PATCH] don't shadow functions with macros in C++ Date: Tue, 09 Dec 2014 23:33:42 +0100 Message-ID: <1418164422.1715.3.camel@posteo.de> References: <20141209000614.GL4574@brightrain.aerifal.cx> <20141209021810.GA13045@duality.lan> Reply-To: musl@lists.openwall.com NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1418164444 12250 80.91.229.3 (9 Dec 2014 22:34:04 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 9 Dec 2014 22:34:04 +0000 (UTC) To: musl@lists.openwall.com Original-X-From: musl-return-6717-gllmg-musl=m.gmane.org@lists.openwall.com Tue Dec 09 23:33:57 2014 Return-path: Envelope-to: gllmg-musl@m.gmane.org Original-Received: from mother.openwall.net ([195.42.179.200]) by plane.gmane.org with smtp (Exim 4.69) (envelope-from ) id 1XyTLx-0008UZ-K8 for gllmg-musl@m.gmane.org; Tue, 09 Dec 2014 23:33:57 +0100 Original-Received: (qmail 22444 invoked by uid 550); 9 Dec 2014 22:33:55 -0000 Mailing-List: contact musl-help@lists.openwall.com; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Original-Received: (qmail 22433 invoked from network); 9 Dec 2014 22:33:54 -0000 In-Reply-To: <20141209021810.GA13045@duality.lan> X-Mailer: Evolution 3.12.8 Xref: news.gmane.org gmane.linux.lib.musl.general:6704 Archived-At: On Mo, 2014-12-08 at 20:18 -0600, Bobby Bingham wrote: > C++ programmers typically expect something like "::function(x,y)" to work > and may be surprised to find that "(::function)(x,y)" is actually required > due to the headers declaring a macro version of some standard functions. > > We already omit function-like macros for C++ in most cases where there is > a real function available. This commit extends this to the remaining > function-like macros which have a real function version. > --- > include/complex.h | 2 ++ > include/pthread.h | 2 ++ > include/threads.h | 2 ++ > 3 files changed, 6 insertions(+) > > diff --git a/include/complex.h b/include/complex.h > index 13a45c5..e1af0d5 100644 > --- a/include/complex.h > +++ b/include/complex.h > @@ -101,6 +101,7 @@ double creal(double complex); > float crealf(float complex); > long double creall(long double complex); > > +#ifndef __cplusplus > #define __CIMAG(x, t) \ > ((union { _Complex t __z; t __xy[2]; }){(_Complex t)(x)}.__xy[1]) > > @@ -111,6 +112,7 @@ long double creall(long double complex); > #define cimag(x) __CIMAG(x, double) > #define cimagf(x) __CIMAG(x, float) > #define cimagl(x) __CIMAG(x, long double) > +#endif > > #define __CMPLX(x, y, t) \ > ((union { _Complex t __z; t __xy[2]; }){.__xy = {(x),(y)}}.__z) > diff --git a/include/pthread.h b/include/pthread.h > index f7c9568..2697e8b 100644 > --- a/include/pthread.h > +++ b/include/pthread.h > @@ -84,7 +84,9 @@ __attribute__((const)) > pthread_t pthread_self(void); > > int pthread_equal(pthread_t, pthread_t); > +#ifndef __cplusplus > #define pthread_equal(x,y) ((x)==(y)) > +#endif > > int pthread_setcancelstate(int, int *); > int pthread_setcanceltype(int, int *); > diff --git a/include/threads.h b/include/threads.h > index 0e5836c..0179482 100644 > --- a/include/threads.h > +++ b/include/threads.h > @@ -51,7 +51,9 @@ void thrd_yield(void); > > thrd_t thrd_current(void); > int thrd_equal(thrd_t, thrd_t); > +#ifndef __cplusplus > #define thrd_equal(A, B) ((A) == (B)) > +#endif > > void call_once(once_flag *, void (*)(void)); > > -- > Bobby Bingham Many thanks for the patch! Reviewed-by: Jörg Krause