>>463
ちなみにそれはちょっと違う。決め打ちにするのであれば、以下の方がいい。

typedef struct {
double x;
double y;
} Vec2;

typedef struct {
double x;
double y;
double z;
} Vec3;

決め打ちのメリットは、
・分かりやすい名前を使える
・型チェックが有効になる
ことだから。
上はそのままだから分かるだろ。下は、例えば内積計算関数が、
3次元*2次元とかの違法の場合に書きようがなく、コンパイル以前にIntellisenseで落とせる事。
elementsが配列になっていると、当然ループになり、3次元*2次元でも書けてしまう。
ただし決め打ちの場合はその後のコンパイラの型チェックで落とされるが。
VecXとして一般化した場合は、この辺が全部通ってしまうわけでね。

ただまあ、C言語は、コンパイラにバグ取りを手伝ってもらう言語ではなく、
そもそもおめーがバグなく書きゃいいだけだろ、というノリなんだが。