array size should depend on the #define