23.03.2015, 21:34
Code:
#define _SIZEOF_REP:%0(%1[%2]%3$%4) _SIZEOF_REP:%0(%1%3$%4[]) #define _SIZEOF_END$ #define SIZEOF(%0) (_:_SIZEOF_REP:sizeof _SIZEOF_END$(%0 _SIZEOF_END$))
Code:
new a[10][5]; new i = sizeof (a[]);
Code:
new a[10][5]; new i = sizeof (a[2]);
Code:
new a[10][5]; new i = SIZEOF (a[]);
Code:
new a[10][5]; new i = SIZEOF (a[2]);
Code:
#define sizeof(%0) SIZEOF(%0)
Also, because this is a macro that generates a keyword, it is no less efficient than using a constant.