Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1766864AbXEBTzW (ORCPT ); Wed, 2 May 2007 15:55:22 -0400 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1766873AbXEBTzW (ORCPT ); Wed, 2 May 2007 15:55:22 -0400 Received: from vervifontaine.sonytel.be ([80.88.33.193]:48142 "EHLO vervifontaine.sonycom.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S1766864AbXEBTzS (ORCPT ); Wed, 2 May 2007 15:55:18 -0400 Date: Wed, 2 May 2007 21:55:16 +0200 (CEST) From: Geert Uytterhoeven To: Andrew Morton cc: Christoph Hellwig , Dave Jones , Randy Dunlap , linux-kernel@vger.kernel.org Subject: Re: checkpatch, a patch checking script. In-Reply-To: <20070502124154.fa55fec9.akpm@linux-foundation.org> Message-ID: References: <20070423141123.GA21174@skybase> <20070423104534.51bac974.akpm@linux-foundation.org> <20070425112133.4ae86399.randy.dunlap@oracle.com> <20070425143011.57247c1d.akpm@linux-foundation.org> <20070425172447.1576c399.akpm@linux-foundation.org> <20070426003911.GA19383@redhat.com> <4630109F.6090002@oracle.com> <20070425200207.77a2721a.akpm@linux-foundation.org> <20070428030805.GA13331@redhat.com> <20070502152906.GA29642@infradead.org> <20070502124154.fa55fec9.akpm@linux-foundation.org> MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 2373 Lines: 68 On Wed, 2 May 2007, Andrew Morton wrote: > On Wed, 2 May 2007 17:32:49 +0200 (CEST) > Geert Uytterhoeven wrote: > > > On Wed, 2 May 2007, Christoph Hellwig wrote: > > > On Wed, May 02, 2007 at 04:28:27PM +0200, Geert Uytterhoeven wrote: > > > > - Check for GNU extension __FUNCTION__ > > > > > > __FUNCTION__ is prefered over __func__ > > > > Is there a reason for that? > > - __FUNCTION__ is a GNU extension > > - __func__ is C99 > > - __func__ is shorter to type ;-) > > > > In that case we should use __func__. > > But we discussed this at some length 3-4 years ago and decided to use > __FUNCTION__. I don't remember why. Perhaps problems with gcc support for > __func__? I tried gcc 2.95/3.2/3.3/3.4/4.0/4.1, they all recognize __func__ and __FUNCTION__, like in e.g. printf("%s", __func__); > (It could have been that compile-time string concatenation was involved: > > > printf("xxx" __FILE__); /* works */ > printf("xxx" __FUNCTION__); /* doesn't */ > > Or not.) Yep, when trying concatenation, I got: - 2.95: works fine - 3.2: syntax error before "__func__" warning: concatenation of string literals with __FUNCTION__ is deprecated - 3.3: error: syntax error before "__func__" warning: concatenation of string literals with __FUNCTION__ is deprecated - 3.4/4.0: error: syntax error before "__func__" error: syntax error before "__FUNCTION__" - 4.1: error: expected ')' before '__func__' error: expected ')' before '__FUNCTION__' Hence gcc 3.2 and up treat __func__ like the a variable, as per C99, while __FUNCTION__ has been moving from a virtual preprocessor definition in 2.95 to a variable, like __func__. So in the end it doesn't matter, as concatenation has been fixed in the Linux source tree anyway. Gr{oetje,eeting}s, Geert -- Geert Uytterhoeven -- Sony Network and Software Technology Center Europe (NSCE) Geert.Uytterhoeven@sonycom.com ------- The Corporate Village, Da Vincilaan 7-D1 Voice +32-2-7008453 Fax +32-2-7008622 ---------------- B-1935 Zaventem, Belgium - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/