Heavy use of macros to do metaprogramming is a strong sign it's time to move to a more powerful language.
Lisp?
Granted, Lisp already has arrays, so not much reason to reinvent the wheel.
(make-array '(2 6) :initial-element 0 :element-type '(unsigned-byte 32))
;; => #2A((0 0 0 0 0 0) (0 0 0 0 0 0))