関数の仮引数の宣言における配列の添え字の型の宣言だけではなくて、
変数としての配列の宣言においても、配列のサイズを与えるためだけ
ではなくて添字式の型を宣言できるように拡張するとよいだろうね。
現在のC言語では添字式は整数値であると決められている為に、なにかと
不便だ。

たとえば現在なら
static a[];
と書くところを

static int a[(long)]; とかくことで配列aの添字式はlong として
計算されてポインタ値aに加算されるとしたらよい。

static int b[(unsigned long)];は添字式が値が符号なしロングとして
static int c[(signed short)];は添え字式が値が符号付のSHORTとして、
static int d[(unsigned char)];は添え字式の値が符号なしCHARとして、
static int e[(long long)];は添え字式の値がlong longとして計算される。
という意味にすればよい。
配列のサイズも含めて宣言する場合でも同様に、
static int g[(long long)1234567890123];
などと書けるようにするとよい。