On Wed, 2 May 2007, Andrew Morton wrote: > On Wed, 2 May 2007 17:32:49 +0200 (CEST) > Geert Uytterhoeven <[EMAIL PROTECTED]> 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) [EMAIL PROTECTED] ------- 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 [EMAIL PROTECTED] More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/