Passing array literal como argumento de macro

Isso está me incomodando há algum tempo, por exemplo, se estou tentando escrever este código:

// find the length of an array
#define ARRAY_LENGTH(arr) (sizeof(arr)/sizeof(int))   
// declare an array together with a variable containing the array's length
#define ARRAY(name, arr) int name[] = arr; size_t name##_length = ARRAY_LENGTH(name);

int main() {
    ARRAY(myarr, {1, 2, 3});
}

O código apresenta este erro:

<stdin>:8:31: error: macro "ARRAY" passed 4 arguments, but takes just 2

Por que vêARRAY(myarr, {1, 2, 3}); como passandoARRAY o argumentomyarr, {1, 2 e3}. Existe alguma maneira de passar umarray literal para macros?

EDIT: Em algumas das macros mais complexas de que eu precisava, talvez também seja necessário passar duas ou mais matrizes para a macro, para que a macro variável não funcion

questionAnswers(1)

yourAnswerToTheQuestion