lkml.org 
[lkml]   [2015]   [Dec]   [3]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
SubjectRe: [PATCH v3 04/14] lib/vsprintf.c: expand field_width to 24 bits
From
Date
On Thu, 2015-12-03 at 15:34 -0800, Andrew Morton wrote:
> I've been fiddling with a BUILD_BUG_ON which works outside functions
> using gcc's __COUNTER__ - something like
>
> #define BBO(expr) typedef char __bbo##__COUNTER__[1-2*(!!expr)]

nit:  you need another parenthesis around expr

> BBO(1 == 1);
> BBO(2 == 2);
>
> but that comes out as
>
> typedef char __bbo__COUNTER__[1-2*(!!1 == 1)];
> typedef char __bbo__COUNTER__[1-2*(!!2 == 2)];
>
> instead of
>
> typedef char __bbo0[1-2*(!!1 == 1)];
> typedef char __bbo1[1-2*(!!2 == 2)];
>
> There's some trick here but I've forgotten what it is.

I believe it's something like:

#define __stringify_2(a, b) a##b
#define __stringify2(a, b) __stringify_2(a, b)

#define BBO(expr) typedef char __stringify2(bbo, __COUNTER__)[1 - 2*(!!(expr))]


\
 
 \ /
  Last update: 2015-12-04 01:21    [W:0.066 / U:0.464 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site