Al Viro wrote: > __func__ is C99, but it's not what __FUNCTION__ used to be - it's not a > string literal. 6.4.2.2(1): > > The identifier __func__ shall be implicitly declared by the translator > as if, immediately following the opening brace of each function definition, > the declaration > static const char __func__[] = "function-name"; > appeared, where function-name is the name of the lexically-enclosing function. > > IOW, it's a phase 7 (parsing and translation of translation units) and not > phase 4 (preprocessor). Practical implications are: > * _way_ fewer kludges > * it happens after phase 6 (string literal concatenation) > So __FUNCION__ " is called" within body of foo() would result in > "foo is called" while __func__ "is called" is a syntax error. > > These days old gcc __FUNCTION__ is gone; it's a macro expanding to __func__, > so behaviour does *not* match the original (see above). so if I understand correctly, this requires a fix: -- __FUNCTION__ is a macro expanding to __func__ and translated as if previously in that function was declared: static const char __func__[] = "function-name"; As is DEBUG() - when active - will produce a syntax error. Signed-off-by: Roel Kluin <12o3l@xxxxxxxxxx> --- diff --git a/drivers/pcmcia/au1000_xxs1500.c b/drivers/pcmcia/au1000_xxs1500.c index ce9d5c4..855e1d6 100644 --- a/drivers/pcmcia/au1000_xxs1500.c +++ b/drivers/pcmcia/au1000_xxs1500.c @@ -56,7 +56,7 @@ #define PCMCIA_IRQ AU1000_GPIO_4 #if 0 -#define DEBUG(x,args...) printk(__FUNCTION__ ": " x,##args) +#define DEBUG(x, args...) printk("%s: ", __func__, x, ##args) #else #define DEBUG(x,args...) #endif - To unsubscribe from this list: send the line "unsubscribe linux-ext4" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html