>>677
void func(void * system_a, void * system_b);
をこう変えるとしよう
void func(void * system_a, void * system_b, void * system_c);
この場合20個全部変えないとダメだけどどうするの?全然楽じゃないよ。どこが楽なの?
あるいは
void func(void * system_a, void * system_c);
に変わったらどうする?
そっくりそのまま違うシステムに変わったてもコンパイラはナニも気にせずコンパイルしてしまうぞ
キャストするプログラマが変更に気が付かずにsystem_bにキャストして使ってしまう可能性は高いだろう

いいかvoid*にしてもシグネチャの変更に対する強さは全くよくならないんだよ
むしろ変更を手動で追いかける必要性が出てくる分悪くなるといっていい
変更をすべて追いかけて変な順番で引数が渡されていないか
実際に利用するコードで正確にキャストできているかなどを
変更するたびにすべて隅から隅までチェックしないといけない
もしチェック漏れがあってもコンパイラは面倒を見てくれない
なにかエラーが起これば引数にvoid*を指定した人間はまず間違いなく解雇だろうな