#define C_ASSERT(expr) extern char CAssertExtern[(expr)?1:-1]
#define NUM_ARGS__(X, \
N64,N63,N62,N61,N60, \
N59,N58,N57,N56,N55,N54,N53,N52,N51,N50, \
N49,N48,N47,N46,N45,N44,N43,N42,N41,N40, \
N39,N38,N37,N36,N35,N34,N33,N32,N31,N30, \
N29,N28,N27,N26,N25,N24,N23,N22,N21,N20, \
N19,N18,N17,N16,N15,N14,N13,N12,N11,N10, \
N09,N08,N07,N06,N05,N04,N03,N02,N01, N, ...) N
#define NUM_ARGS(...) \
NUM_ARGS__(0, __VA_ARGS__, \
64,63,62,61,60, \
59,58,57,56,55,54,53,52,51,50, \
49,48,47,46,45,44,43,42,41,40, \
39,38,37,36,35,34,33,32,31,30, \
29,28,27,26,25,24,23,22,21,20, \
19,18,17,16,15,14,13,12,11,10, \
9, 8, 7, 6, 5, 4, 3, 2, 1, 0)
#define DECL_INIT_ARRAYN(TYPE, NAME, COUNT, N, ...) \
C_ASSERT(COUNT == N); \
TYPE NAME[COUNT] = { __VA_ARGS__ }
#define DECL_INIT_ARRAY(TYPE, NAME, COUNT, ...) \
DECL_INIT_ARRAYN(TYPE, NAME, COUNT, NUM_ARGS(__VA_ARGS__), __VA_ARGS__)
DECL_INIT_ARRAY( const int , array3_3, 3 , 1 , 2 , 3 ) ;
int main( void )
{
DECL_INIT_ARRAY( const int , array5_4, 5 , 1 , 2 , 3 , 4 ) ;
DECL_INIT_ARRAY( const int , array5_6, 5 , 1 , 2 , 3 , 4 , 5 , 6 ) ;
return 0 ;
}
I2RlZmluZSBDX0FTU0VSVChleHByKSBleHRlcm4gY2hhciBDQXNzZXJ0RXh0ZXJuWyhleHByKT8xOi0xXQoKI2RlZmluZSBOVU1fQVJHU19fKFgsIFwKICAgICAgICAgICAgICAgICAgICAgIE42NCxONjMsTjYyLE42MSxONjAsIFwKICBONTksTjU4LE41NyxONTYsTjU1LE41NCxONTMsTjUyLE41MSxONTAsIFwKICBONDksTjQ4LE40NyxONDYsTjQ1LE40NCxONDMsTjQyLE40MSxONDAsIFwKICBOMzksTjM4LE4zNyxOMzYsTjM1LE4zNCxOMzMsTjMyLE4zMSxOMzAsIFwKICBOMjksTjI4LE4yNyxOMjYsTjI1LE4yNCxOMjMsTjIyLE4yMSxOMjAsIFwKICBOMTksTjE4LE4xNyxOMTYsTjE1LE4xNCxOMTMsTjEyLE4xMSxOMTAsIFwKICBOMDksTjA4LE4wNyxOMDYsTjA1LE4wNCxOMDMsTjAyLE4wMSwgIE4sIC4uLikgTgoKI2RlZmluZSBOVU1fQVJHUyguLi4pIFwKICBOVU1fQVJHU19fKDAsIF9fVkFfQVJHU19fLCBcCiAgICAgICAgICAgICAgICAgNjQsNjMsNjIsNjEsNjAsIFwKICA1OSw1OCw1Nyw1Niw1NSw1NCw1Myw1Miw1MSw1MCwgXAogIDQ5LDQ4LDQ3LDQ2LDQ1LDQ0LDQzLDQyLDQxLDQwLCBcCiAgMzksMzgsMzcsMzYsMzUsMzQsMzMsMzIsMzEsMzAsIFwKICAyOSwyOCwyNywyNiwyNSwyNCwyMywyMiwyMSwyMCwgXAogIDE5LDE4LDE3LDE2LDE1LDE0LDEzLDEyLDExLDEwLCBcCiAgIDksIDgsIDcsIDYsIDUsIDQsIDMsIDIsIDEsIDApCgojZGVmaW5lIERFQ0xfSU5JVF9BUlJBWU4oVFlQRSwgTkFNRSwgQ09VTlQsIE4sIC4uLikgXAogIENfQVNTRVJUKENPVU5UID09IE4pOyBcCiAgVFlQRSBOQU1FW0NPVU5UXSA9IHsgX19WQV9BUkdTX18gfQoKI2RlZmluZSBERUNMX0lOSVRfQVJSQVkoVFlQRSwgTkFNRSwgQ09VTlQsIC4uLikgXAogIERFQ0xfSU5JVF9BUlJBWU4oVFlQRSwgTkFNRSwgQ09VTlQsIE5VTV9BUkdTKF9fVkFfQVJHU19fKSwgX19WQV9BUkdTX18pCgpERUNMX0lOSVRfQVJSQVkoY29uc3QgaW50LCBhcnJheTNfMywgMywgMSwgMiwgMyk7CgppbnQgbWFpbih2b2lkKQp7CiAgREVDTF9JTklUX0FSUkFZKGNvbnN0IGludCwgYXJyYXk1XzQsIDUsIDEsIDIsIDMsIDQpOwogIERFQ0xfSU5JVF9BUlJBWShjb25zdCBpbnQsIGFycmF5NV82LCA1LCAxLCAyLCAzLCA0LCA1LCA2KTsKICByZXR1cm4gMDsKfQo=