C 重力模拟器,碰撞检测,矢量

C 重力模拟器,碰撞检测,矢量,c,vector,collision-detection,C,Vector,Collision Detection,我正在用矢量操纵和引力常数创建一个重力模拟器。 我为实体定义了两个结构 typedef struct { double vector[3]; } Vector; typedef struct { Vector colour; double mass; double radius; Vector position; Vector velocity; Vector accel; } Object; 我有很多向量算术函数,包括: Vector

我正在用矢量操纵和引力常数创建一个重力模拟器。 我为实体定义了两个结构

typedef struct {
    double vector[3];
} Vector;

typedef struct {
    Vector colour;
    double mass;
    double radius;
    Vector position;
    Vector velocity;
    Vector accel;
} Object;
我有很多向量算术函数,包括:

Vector VectorUnit(Vector a) {

Vector b;
int i;

for (i = 0; i < VECTOR_DIM; i++)
    b.vector[i] = (a.vector[i]) / (VectorMag(a));

return (b);
}
它与诸如VectorUnitBodys[j]之类的函数调用有什么问题;
如前所述,使用my function的内部代码可以完美地编译。

您在调用函数时没有先声明它们。这是非法的,因为C99。在C89中,它意味着隐式地将函数声明为返回int

在调用函数之前,您需要为其提供原型,例如,具有具有以下内容的头文件:

Vector VectorUnit(Vector a);
或者,如果该函数仅出现在一个.c文件中,请在文件顶部附近声明:

static Vector VectorUnit(Vector a);
或者以不同的顺序放置函数,使VectorUnit的主体位于调用它的任何函数之前

static Vector VectorUnit(Vector a);