Вы можете использовать выделенную typedef или, как сказано в примечании, структуру встраивания:
#include <stdio.h>
typedef char A5[5];
typedef struct S {
char a[5];
} S;
void foo(A5 a) /* of course can be "void foo(char a[])" but less clear */
{
printf("%zu %zu\n", sizeof(A5), sizeof(a));
}
void bar(S s)
{
printf("%zu\n", sizeof(s.a));
}
int main()
{
A5 a;
S s;
foo(a);
bar(s);
}
Конечно, в случае typedef вам нужно использовать typeof на нем, а не на переменной, являющейся char*
Но все это является своего рода хаком, C - это C ...